redis

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进行翻倍

































评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值