set key value [ex seconds] [px milliseconds] [nx|xx]
ex seconds:为键设置秒级过期时间。
px milliseconds:为键设置毫秒级过期时间。
nx:键必须不存在,才可以设置成功,用于添加。
xx:与nx相反,键必须存在,才可以设置成功,用于更新。
redis还提供了setex和setnx
setex key seconds value setnx key value
demo证明 nx、xx
的区别
127.0.0.1:6379> set hello world OK 127.0.0.1:6379> setnx hello world (integer) 0 127.0.0.1:6379> set hello jedis xx OK 127.0.0.1:6379> get hello "jedis" 127.0.0.1:6379> set hello word OK 127.0.0.1:6379> get hello "word" 127.0.0.1:6379> set hello2 jedis xx (nil) 127.0.0.1:6379>
即 nx
仅当key不存在时才可set(应用于分布式锁),xx
仅当key存在才可set
get key
del key [key...]
k为key长度
mset key value [k v...]
mget key [key ...]
incr key
从0自增,且为单线程无CAS开销
还提供decr(自减)、incrby(自增指定数字)、 decrby(自减指定数字)、incrbyfloat(自增浮点数)[O(1)]
decr key incrby key increment decrby key decrement incrbyfloat key increment
append key value
向字符串尾部追加值
strlen key
redis中每个中文占用3个字节
getset key value
setrange key offeset value
n为字符串长度
getrange key start end
object encoding key
hset key field value hsetnx key fiedl value
hget key field
k为field总数
hdel key field [field ...]
返回结果为成功删除field的个数
hlen key
k为field总数
hmget key field [field ...]hmset key field value [field value ...]
hexists key field
n为field总数
hkeys key
n为field总数
hvals key
n为field总数
hgetall key
hincrby key field hincrbyfloat key field
hstrlen key field
k是元素个数
rpush key value [value ...]
k是元素个数
lpush key value [value ...]
n是target_val距离列表头或尾的距离
linsert key before|after target_val value
s是start的偏移量,n是start到end的范围
lrange key start endlrange key 0 -1
n是索引偏移量
lindex key index
llen key
lpop key
rpop key
lrem key count value
count>0,从左到右,删除最多count个元素。
count<0,从右到左,删除最多count绝对值个元素。
count=0,删除所有。
n是要保存元素的个数,即 end - start + 1
ltrim key start end
n是索引偏移量
lset key index newValue
blpop key [key ...] timeout
timeout:阻塞时间(单位:秒)
brpop key [key ...] timeout
sadd key element [element ...]
返回结果为添加成功的元素个数
srem key element [element ...]
返回结果为成功删除元素个数
直接用 Redis内部的变量,不会遍历集合所有元素
scard key
sismember key element
srandmember key [count]
spop key
smembers key
smembers和lrange、hgetall都属于比较重的命令,如果元素过多存在阻 塞Redis的可能性,这时候可以使用sscan来完成
sinter key [key ...]
suinon key [key ...]
sdiff key [key ...]
sinterstore destination key [key ...] suionstore destination key [key ...] sdiffstore destination key [key ...]
zadd key score member [score member...]
Redis3.2为zadd命令添加了nx、xx、ch、incr四个选项:
nx:member必须不存在,才可以设置成功,用于添加。
xx:member必须存在,才可以设置成功,用于更新。
ch:返回此次操作后,有序集合元素和分数发生变化的个数
incr:对score做增加,相当于后面介绍的zincrby。
有序集合相比集合提供了排序字段,但是也产生了代价,zadd的时间 复杂度为O(log(n)),sadd的时间复杂度为O(1)
zcard key
zscore key member
zrank key member # 从低到高 zrevrank key member
zrem key member [member ...]
zincrby key increment member
zrange key start end [withscores] zrevrange key start end [withscores]
zrangebyscore key min max [withscores] [limit offset count] zrevrangebyscore key max min [withscores] [limit offset count]
min和max还支持开区间(小括号)和闭区间(中括号),-inf和 +inf分别代表无限小和无限大
zcount key min max
zremrangebyrank key start end
zremrangebyscore key min max
zinterstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max]
destination:交集计算结果保存到这个键。
numkeys:需要做交集计算键的个数。
key[key...]:需要做交集计算的键。
weights weight[weight...]:每个键的权重,在做交集计算时,每个键中 的每个member会将自己分数乘以这个权重,每个键的权重默认是1。
aggregate sum|min|max:计算成员交集后,分值可以按照sum(和)、 min(最小值)、max(最大值)做汇总,默认值是sum。
zunionstore destination numkeys key [key ...] [weights weight [weight ...]] [aggregate sum|min|max]