1.字符串类型
1)命令
a.赋值与取值:
SETKEY VALUE
GETKEY
b.递增数字:
INCR
c.最佳实践:
Redis对键的命名: 对象类型:对象ID:对象属性 user:1:friends
d.其他命令:
增加指定的整数 INCRBY key increment // increment为每次增加的数量
减少指定的整数 DECRBY key increment // increment为每次减少的数量
增加指定的浮点数 INCRBYFLOAT key increment // increment为每次增加的数量
向尾部追加 APPEND key value // 向键值的末尾追加value,若键不存在,设置键值为value
获取字符串长度 STRLEN key
同时获得/设置多个键值 MGET key [key…] MSET key value [key value …]
位操作
GETBIT key offset
SETBITkey offset value
BITCOUNT key [start] [end]
BITOP operation destkey key [key …]
2.散列类型
1)命令
a.赋值与取值
HSETkey field value
HSETkey field
HMSETkey field value [field value …]
HMGETkey field[field…]
HGETALLkey 获取键中所有字段和字段值却不知道键中有哪些字段
b.判断字段是否存在
HEXISTSkey field
c.当字段不存在时赋值
HSETNXkey field value
d.增加数字
HINCRBYkey field increment
e.删除字段
HDELkey field [field…]
2)其他命令
a.HKEYSkey 只获取字段名
b.HVALSkey 只获取字段值
c.HLENkey 获取字段数量
3.列表类型
1) 介绍
列表内部使用“双向链表”实现,最多可容纳232-1个元素
应用场景:
社交网站的新鲜事
记录日志
2) 命令
a.向列表两端增加元素
LPUSHkey value [value…] 向列表左边增加元素,返回增加后列表长度
RPUSHkey value [value…] 向列表右边增加元素,返回增加后列表长度
b.从列表两端弹出元素
LPOPkey 从列表左边弹出一个元素 返回被移除的元素值
RPOPkey从列表左边弹出一个元素 返回被移除的元素值
c.获取列表中元素的个数
LLENkey
d.获取列表片段
LRANGEkey start stop 返回索引从start到stop之间的所有元素(包括两端的元素) Redis的起始索引为0
LRANGE支持负索引,表示从右边开始计算序数,-1表示最右边第一个元素
注:LRANGE numbers 0 -1 获取列表中所有元素;若start索引位置比stop索引位置靠后,好返回空列表
e.删除列表中指定的键
LREMkey count value // 删除列表中前count个值为value的元素,返回的是删除的个数
当count >0,LREM从列表左边开始删除前count个值为value的元素
当count <0,LREM从列表右边开始删除前count个值为value的元素
当count=0,LREM删除所有值为value的元素
3)其他命令
a.LINDEXkey index // 返回指定索引的元素,从0开始,index<0,,从右边开始计算索引
b.LSETkey index value // 将index元素的赋值为value
c.LTRIMkey start end // 删除指定索引范围之外的所有元素
d.LINSERTkey BEFORE|AFTER pivot value //向列表中插入元素
首先在列表中从左到右查找值为pivot的值,然后根据第二个参数是BEFORE还是AFTER来决定将value插入到该元素的前面还是后面.
e.RPOPPUSHsource destination // 将元素从一个列表转移到另一个列表
应用场景:网站监控系统:使用队列存储网址,监控程序不断地RPOPLPUSH命令循环取出一个网址来测试可用性,系统易扩展
4.集合类型
1) 介绍
无序、唯一,使用值为空的散列表实现的
2) 命令
SADDkey member [member …] //添加元素
SREMkey member [member …] //删除元素
SMEMBERSkey // 获得集合中的所有元素
SISMEMBER// 判断元素是否在集合中
集合间的运算:
SDIFFkey [key …] //对多个集合进行差集操作,支持同时传入多个键
SINTERkey [key …] //对多个集合执行交集,支持传入多个键
SUNIONkey [key …] //对多个集合执行并集,支持传入多个键
3) 其他命令
SCARDkey 获得集合中元素个数
进行集合运算并将结果存储:
SIFFSTOREdestionation key[key …] // 与SDIFF一样,不会直接返回运算结果,将结果存储在destionation中
SINTERSTOREdestionation key [key …] //用于需要进行多步集合运算的场景
SUNIONSTOREdestionation key [key …]
SRANDMEMBERkey [count] 随机获得集合中的元素
Count> 0,随机从集合里获得count个不重复的元素
Count<0,随机从集合里获得|count|个元素,可能相同
5.有序集合类型
1) 介绍
无序、唯一,使用值为空的散列表实现的
2) 与列表类型的区别
a.列表是通过链表实现的,获取两端的数据极快,适合”新鲜事”、”日志”等很少访问中间元素的应用
b.有序集合类型是使用散列表和跳跃表实现的,位于中间的数据访问也很快
c.列表中不能简单地调整某个元素的位置,但是有序集合可以(通过更改这个元素的分数)
d.有序集合比列表类型更耗费内存
3) 命令
a.ZADDkey score member [score member …] //向有序集合中加入一个元素和该元素的分数,如果元素已经存在,则会使用新的分数替换原有的分数
注: 分数可以是整数,也可以是双精度浮点数+inf 正无穷 –inf 负无穷
ZSCOREkey member // 获得元素的分数
b.ZRANGEkey start stop [WITHSCORES] // 按照元素分数从小到大的顺序返回索引从start到stop之间的所有元素(包含两端元素);[WITHSCORES]同时获取到分数
c.ZREVRANGEkey start stop [WITHSCORES]
注:redis按照字典顺序排列这些元素
d.ZRANGEBYSCOREkey min max [WITHSCORES] [LIMIT offset count] // 获得指定分数范围的元素;按照元素分数从小到大的顺序返回分数在min和max之间的元素.如果不希望包含端点值,可以在分数前加上”(”;支持无穷大和无穷小
e.ZINCRBYkey increment member // 增加某个元素的分数
注:如果指定的元素不存在,redis执行命令之前会先建立它并将它的分数赋为0再执行操作
4) 其他命令
a. ZCARD key //获得集合中元素的数量
b. ZCOUNT key min max // 获得指定分数范围内的元素个数
c. ZREM key member [member…] // 删除一个或多个元素
d. ZREMRANGEBYRANK key start stop// 按照排名范围删除元素
e. ZREMRANGEBYSCORE key min max //按照分数范围删除元素
f. ZRANK key member // 获得元素的排名按元素分数从小到大的顺序获得指定元素的排名
ZREVRANK keymember // 反向
g. ZINTERSTORE destination numkeyskey [key …] [WEIGHTS weight [weight]] [AGGREGATE SUM|MIN|MAX]
// 用来计算多个有序集合的交集并将结果存储在destination键中,键中元素的分数由AGGREGATE参数决定;可以通过WEIGHTS参数设置每个集合的权重,每集合在参与计算时元素的分数会被乘上该集合的权重
ZUNIONSTORE计算集合间的并集