redis常用指令:
keys *:显示所有key,一般不用,key太多会导致网络资源占用
dbsize:获得key的数量(o1复杂度)
exists key:key是否存在
del key:删除kv对
del k1 k2 k3:批量删除
expire key 10:给已存在的key设置过期时间(默认单位为秒)
ttl key:看这个key还多久过期(已过期返回-2,没设置过期返回-1,刚好过期返回0)
pexpire key 10000:设置多少毫秒过期
expireat key timestamp:设置什么时间过期
注意:set命令会将过期时间取消,不能对value内部元素提供过期时间
type key:返回数据类型
setnx key value / set key value nx : 如果值不存在就设置
set key value xx :如果值存在就设置
mset k1 v1 k2 v2 :批量设置
incr key:value值加一(没有这个key会创建)
incrby key 2:value值+2(没有这个key会创建)
decr key:值减一
incrbyfloat key 0.5:浮点数自增
append key xx:追加字符串xx,返回value总长度,每个中文字占据三个长度
strlen key:返回value长度
getset key:相当于set操作,只是返回值返回被覆盖的值
setrange key index p:将key的value中索引为5的位置设置为p(如果string长度比index小,会导致有空值“/x00”的情况)
getrange key a b:获取value从a索引到b的字符串
hset key filed value:设置hash数据类型的单个键值对
hmset key filed1 value1 filed2 value2 filed3 value3:批量设置hash数据类型的键值对
hsetnx key filed value :不发生覆盖(针对value里面的filed)
hset key filed value :会发生覆盖(针对value里面的filed)
hmget key filed1 filed2 filed3:批量拿值
hgetall key :获取所有键值对,单数是filed双数是value
hincrby key filed 2:自增2
list数据类型操作指令,l和r是镜像不重复赘述
lpush:插入
lpop:弹出
lset key index value,设置值
ltrim key index1 index2 :裁剪
lindex key index:获取指定位置的值
llen key:长度查询
blpop key time:阻塞弹出,阻塞多长时间,time=0一直阻塞
list实现消息队列,实现栈,电商场景存放文章(分页、范围查询)
set数据类型,相比list优势:集合交并集快速计算
sadd key value1 value2.。。:可以批量添加元素,返回添加个数,自动去重
smembers key:批量查询(没有顺序)
smembers key value:查询一个元素在不在,返回0,1
srem key value1 value2.。。:可以批量删除,返回元素个数
srandmember key:随机返回元素中一个值
sinter key1 key2 :求两个集合的交集
sunion key1 key2:求两个集合的并集
sdiff key1 key2:返回第一个有第二个没有的元素,差集
sinterstore key key1 key2 :求1,2的交集存入key --并集、差集同理
set数据类型适合集合操作,常见用于打标签。去重抽奖。
zset数据类型,相当于set数据带一个分数(score)用于排序
zadd key score value:插入数据(排序分数,值)
zadd nx key score value:必须不存在才能插入
zadd key score value -xx :必须存在才能更新
zcard key :返回元素个数
zscore key value:查询集合中值的分数
zrank key value:排名从0开始 从低到高(低是0)
zrevrank key value:反转排名从0开始 从高到低(高是0)
zrem key value:删除,成功返回1
zincrby key num value : 对应key的value的分数增加num