Redis:数据类型和常用命令有哪些?
通用命令
查询所有的key:
keys *
查询a开头的,长度为2的key:
keys a?
删除指定的key:
del keyName
判断指定key是否存在:
exists keyName
给指定key设置有效期:
expire keyName seconds
查看key的剩余有效时间:
ttl keyName (-1 为永久有效,-2为已被删除)
String类型
新增、修改指定key的value:
set keyName value
获取指定key的value:
get keyName
批量新增多个键值对:
mset k1 v1 k2 v2 ...
批量获取指定key的value:
mget k1 k2 ...
让一个整型的key的value自增1:
incr keyName
指定自增步长为20:
incrby keyName 20
让一个浮点型的key的value自增0.01:
incrbyfloat keyName 0.01
新增一个键值对,存在则不操作:
setnx keyName value
新增一个键值对,指定有效期为10s:
setex keyName 10 value
Hash类型
key-[field-value]形式存储信息。
新增、修改指定key的指定field的value:
hset keyName fieldName vavlue
获取指定key的指定field的value:
hget keyName fieldName
批量新增多个field:
hmset keyName field1 value1 field2 value2 ...
批量获取指定key的指定filed的value:
hmget keyName field1 field2 ...
获取指定key的所有field和value:
hgetall keyName
获取指定key的所有field:
hkeys keyName
获取指定key的所有value:
hvals keyName
指定key的指定field的值自增20:
hincrby keyName fieldName 20
新增一个field-value,若field存在则不操作:
hsetnx keyName fieldName value
List类型
双向链表形式储存数据。
指定的key头部新增一个元素:
Lpush keyName value
指定的key尾部新增一个元素:
Rpush keyName value
指定的key头部的元素取出:
Lpop keyName
指定的key尾部的元素取出:
RpopkeyName
获取指定key的第1-2个元素:
lrange keyName 0 1
阻塞式地取出指定key头部的元素,若key为空,则等待10s:
bLpop keyName 10
阻塞式地取出指定key尾部的元素,若key为空,则等待10s:
bRpop keyName 10
Set类型
不可重复集合。
指定的key中新增一个元素:
Sadd keyName value
指定的key中移除指定元素:
Srem keyName value
获取key中元素的个数:
Scard keyName
判断指定key中是否存在指定value:
Sismember keyName value
获取key中所有元素:
Smembers keyName
求 set1 和 set 2 的交集:
Sinter set1 set2
求 set1 和 set2 的差集:
Sdiff set1 set2
求 set1 和 set2 的并集:
Sunion set1 set2
SortedSet类型
带分值的set集合。
默认按照得分升序排序,可以在 Z 后面添加 rev ,指定为降序排序。
新增一个元素到指定的key中,并指定其score值为0.1:
Zadd keyName 0.1 value
删除指定的一个元素:
Zrem keyName value
获取指定元素的score:
Zscore keyName value
获取指定元素的排名,0为最小:
Zrank keyName value
获取指定key中的元素个数:
Zcard keyName
统计score在指定范围内的元素个数:
Zcount keyName min max
获取排名在指定范围内的元素,0开始:
Zrange keyName min max
获取score指定范围内的元素:
ZrangeByscore keyName min max
让指定元素的score自增:
Zincrby keyName 步长 value
差集:
Zdiff set1 set2
交集:
Zinter set1 set2
并集:
Zunion set1 set2