1. key操作
keys:支持*,?,[]三种通配符
注:生产禁用,因为一次会遍历整个数据库导致服务器阻塞
scan:取代keys,一次遍历一部分,不会阻塞服务器
scan 0,从0游标开始迭代,返回下一个迭代的其实位置。
exists key:0不存在,1存在
del key1 key2 ...:1存在,0不存在
type key:返回指定key的类型,none不存在,一共五种类型
randomkey:随机返回数据库中一个key,数据库为空返回nil
rename oldkey newkey:newkey存在则被覆盖,1为成功。如果oldkey和newkey相同或者oldkey不存在则返回0失败
renamenx oldkey newkey:区别是,如果newkey存在则返回失败
expire key:设置超时时间,1为成功,0表示已设置过时间或者key不存在
persist key:取消超时时间
expireat key:绝对超时时间
ttl key:返回设置过期时间key的剩余秒数,-1表示未设置过期时间,-2表示无key
pexpire key:毫秒
pttl key:毫秒
注:client主动访问key会先进行超时判断,如果超时直接删除key。
如果client不get key,master会每秒执行10次如下操作:随机选取100条数据校验是否过期,如果超过25个过期的化额外的执行一次这个操作。
最大的字符串为512m,不推荐使用
String--------------------------------------------------------------------------------------
set key value [ex 秒] / [pex 毫秒] nx/xx:如果都填以pex为主,nx为不存在key才创建成功,xx当存在时才操作
setnx key value:key存在返回0,应用场景:可以选举master或者做分布式锁,所有client都执行setnx master myname,抢占成功的不断通过expire master time刷新过期时间,如果master过期了就说明节点倒了,别的继续抢注
mset k1 v1 k2 v2:一次设置多个
msetnx:同上,只要有一个失败都失败
getset key value:设置新值返回旧值,配合setnx可以实现分布式锁
mget k1 k2...:一次获取多个
incr key:为key的值加1,如果key值不为int则报错,如果key不存在则设置key的值为1
decr key:key的值减1
incrby key int:加指定的值
decrby key int:减去指定的值
incrbyfloat key float:针对浮点数
注意:没有decrbyfloat,可以通过incrbyfloat一个负值来达到减法的效果
append key value:追加字符串,返回新的字符串的长度
substr key start end:截取字符串,注意不会修改原key的值,下标从0开始
setrange key offset value:改写字符串,不存在的key当作空的字符串处理,如果偏移量大于字符串的长度 自动补0x00
getrange key start end:返回子字符串
注意:如果redis要显示中文需要在客户端启动的时候加上--raw参数
strlen key:显示键值的长度
List-------------------------------------------------------------------------------------
lpush key string:list的头部添加元素
一般lpush/rpop合在一起使用
lpushx:插入一个或多个,如果key不存在则什么都不做
rpushx:尾部
linsert key before ‘world’ ‘hello’:在world之前添加hello
llen key:查看列表的长度
lindex:返回指定位置的元素
lrange key start end:查看列表元素,lrange key 0 -1返回整个列表
ltrim key start end:截取list,保留指定区间元素
lrem key count value:删除count个和value一样的元素,count为负数则从右往左删除
lpop key
rpop key
lset key index value:设置list中指定下标的元素的值,超过当前list大小报错
blpop k1 k2 ... timeout:阻塞队列,执行一次则返回k1中的从左到右的一个元素,如果k1为空则找k2,timeout为阻塞时间,设置为0则一直等待到别的客户端push进值为止
brpop:反之
如果多个客户端同时阻塞一个list,服务器根据先到现服务原则,选取最早阻塞的哪个客户端进行返回值
rpoplpush srckey destkey:从srckey右边移除一个元素交给destkey的左边,原子操作,可用于队列交换消息
应用场景:rpoplpush task bak:返回的任务进行处理,如果任务挂掉则去bak里再取,如果成功则用lrem删掉任务,实现安全任务队列
还可用于循环链表:rpoplpush list list
brpoplpush:带阻塞功能的上述
Set--------------------------------------------------------------------------------------
sadd key member:添加元素
srem key member:移除元素
spop key:随机删除其中一个元素
srandmember key:随机返回一个元素
smove srckey dstkey member:从srckey中移除member放到dstkey中
scard key:查看集合大小
sismember key member:判断member是否在集合中,1为存在,0为不存在
sinter k1 k2 k3:返回所有给定key的交集
sinterstore dstkey k1 k2 k3:同sinter,区别是sinterstore会把返回的结果集存在dstkey下
sunion k1 k2.. :并集
sunionstore:同上
sdiff:差集
sdiffstore:同上
smembers key:获取所有的元素
注:结果是无序的,生产上禁用,会阻塞服务器
Sorted Set----------------------------------------------------------------------------------
zadd key score member:添加,若存在则更新score
zrem key member:删除
zremrangebyrank key min max:删除排名在一定区间的元素
zremrangebyscore key min max:删除score在一定区间的集合
zincrby key incr member:增加score的值重新排序,可以为负数递减
zrank key member:获取排名,从小到大
zrevrank key member:获取排名,从大到小
zrange key start end:从集合中指定区间元素,返回有序结果
zrevrange:同上,需要分数可以加上withscores
zrangebyscore key min max:返回给定区间的元素,指定inf为无穷
zcount key min max:返回score在给定区间的member数量
zcard key:返回集合中元素的个数
zscore key member 返回给定元素的score
zunionstore destkey numkeys k1 k2 ... weights 1 2 aggregate sum|min|max:多个集合的聚合,weight后面的是集合的权重,destkey是计算完后保存的目标key,numkeys是有几个key参与其中
可以使用zunionstore key 1 key weights 2,把key里的score进行翻倍