Redis是一个用ANSC C语言编写的K-V型数据库
Key的类型是字符串
Value的类型有string, list, set, sortedset(zset)有序集合类型, hash类型, 以及bitmap, geo地理位置类型, 还有Redis5.0新增加的stream类型.
Tips: Redis中命令忽略大小写, 而key不忽略.
String数据类型
String类型能表达三种值类型: 字符串, 整数, 浮点数.
命令名称 | 语法 | 描述 |
---|---|---|
set | set key value | 赋值 |
get | get key | 取值 |
getset | getset key value | 取值并赋值 |
setnx | setnx key value | 不存在则赋值, setnx key value NX PX 300 原子操作, px设置秒数 |
append | append key value | 向尾部追加值 |
strlen | strlen key | 获取字符串长度 |
incr | incr key | 递增数字 |
incrby | incrby key increment | 增加指定的整数 |
decr | decr key | 递减数字 |
decrby | decrby key decrement | 减少指定的整数 |
一般应用于:
- key和命令是字符串
- 普通的赋值
- incr用于乐观锁: 递增数字, 可用于实现乐观锁(事务)
- setnx用于分布式锁: value不存在时赋值, 可用于实现分布式锁
List列表类型
list列表主要可以存储有序, 重复的元素. 在头部or尾部有较高的查询速度. list元素最多为2^32-1个(40亿)
命令名称 | 语法 | 描述 |
---|---|---|
lpush | lpush key v1 v2 v3 .. | 从左侧插入列表 |
lpop | lpop key | 从列表左侧取出 |
rpush | rpush key v1 v2 v3 … | 从右侧插入列表 |
rpop | rpop key | 从列表右侧取出 |
lpushx | lpushx key value | 将值插入列表头部 |
rpushx | rpushx key value | 将值插入列表尾部 |
blpop | blpop key timeout | 从列表左侧取出, 列表为空则阻塞, 可以设置最大阻塞时间, 单位为秒 |
brpop | brpop key timeout | 从列表右侧取出, 列表为空则阻塞, 可以设置最大阻塞时间, 单位为秒 |
llen | llen key | 获取列表中元素个数 |
lindex | lindex key value | 获取列表中下表为key的元素个数 |
lrange | lrange key start end | 返回列表中指定区间元素, 区间通过start和end指定 |
lrem | lrem key count value | 删除列表中与value相等的元素, count>0时, lrem会从列表左边开始删除. count<0时, lrem会从列表尾部开始删除. count=0时, lrem删除所有值为value的元素 |
lset | lset key index value | 将列表index位置的元素设置成value的值 |
ltrim | ltrim key start end | 对列表进行修剪,只保留start到end区间 |
rpoplpush | rpoplpush key1 key2 | 从key1列表右侧弹出并插入到key2列表左侧 |
brpoplpush | brpoplpush key1 key2 | 从key1列表右侧弹出并插入到key2列表左侧, 会阻塞 |
linsert | linsert key BEFORE/AFTER pivot value | 将value插入到列表, 且位于值pivot之前或之后 |
一般应用于
命令名称 | 语法 | 描述 |
---|---|---|
sadd | sadd key mem1 mem2 …. | 为集合添加新成员 |
srem | srem key mem1 mem2 …. | 删除集合中指定成员 |
smembers | smembers key | 获得集合中所有元素 |
spop | spop key | 返回集合中一个随机元素,并将该元素删除 |
srandmember | srandmember key | 返回集合中一个随机元素,不会删除该元素 |
scard | scard key | 获得集合中元素的数量 |
sismember | sismember key member | 判断元素是否在集合内 |
sinter | sinter key1 key2 key3 | 求多集合的交集 |
sdiff | sdiff key1 key2 key3 | 求多集合的差集 |
sunion | sunion key1 key2 key3 | 求多集合的并集 |