版权声明:本文为博主原创文章,未经博主允许不得转载。
(8)各类型支持的命令
##----------------string--------------------
set key value
setnx key value
get key
getset key value
mget key1 key2.. keyN
mset key1 val1 key2 val2 ...keyN valN
msetnx key1 val1 key2 val2..keyN valN
incr key
decr key
incrby key integer
decrby key integer
##---------------------List------------------
lpush key string
rpush key string
llen key
lrange key start end 下标-1开始
lset key index value
ltrim key start end 截取
lset key index val 设置指定下标的值
lrem key count value 删除从头部开始的count个value
lpop key 从头部删除
rpop key 从尾部删除
blpop key1 key2 key3...keyN 从左到右扫描,返回第一个非空list,进行lpop操作并返回
brpop key1 key2 key3...keyN
list key对应的value是双向链表,还可以实现消息队列,新消息放队尾,从队首获取
##------------------------Set--------------------------
set类型是一种无须集合,Redis内部通过hashtable实现,复杂度O(1) 快速查找不重复数据
sadd key member 添加元素到集合
srem key member 从集合中删除元素
spop key 删除key中的一个随机元素
srandmember key 通spop,随机取,不删除
smove srckey deskey member 删除srckey中的member元素添加到deskey中
scard key 返回set的元素个数
sismember key member 判断元素是否在key中
sinter key1 key2 key3..返回key的交集
sinterstore deskey key1 key2 key3 .. keyN 返回所有集合的交集,保存到deskey对应的set
sunion key1 key2 key3...
sunionstore key1 key2 ...keyN
sdiff key1 key2 ...keyN 返回指定元素的差集
sdiffstore key1 key2 ...keyN
smembers key 返回所有的元素,乱序
set常用来记录某些做过的是,如投票系统每个用户只能投票一次,可以用日期作为set的key,用户id作为member,查看是否投过票,可以用日期作为key查询
##-------------------sorted set ---------------------
与set类似,单是有序集合,用skiplist和hashtable实现,skiplist负责排序,hashtable负责保存数据
可以实现一个具有优先级的队列
zadd key score member 添加member到集合,元素存在则更新对应的score
zrem key member 删除元素
zincrby key incr member 增加对应member的score的值,并且重新排序
zrank key member 返回指定元素对应的排名
zrevrank key member 同上,但是score按从大到小排序
zrangebyscore key min max 返回集合中score在给定区间的元素
zcount key min max 返回集合中score在给定区间的数量
zcard key 返回集合中元素的个数
zscore key member 返回指定元素对应的score
zremrangebyrank key min max 删除集合中排名在给定区间的元素
zremrangebyscore key min value 删除集合中score在给定区间的元素
sorted set在web中应用较多,比如在排行榜中,按顶贴次数排序,将排序的值设置为score,具体数据设置成value,用户每次按顶贴,只需要zadd 修改score的值
##--------------------hash类型------------------------------
hash类型是每个key对应一个hashtable,增删改的时间复杂度都是O(1),适合存储对象,比如用户信息对象
把用户的id设为key,用户信息保存到hash类型的存储结构中
新建一个hash类型的对象时,为了节省内存,radis使用zipmap而不是真正的hashtable,当filed或者value的大小超过一定的限制时,radis内部自动转为hashTable,修改hash-max-zipmap-entries和hash-max-zipmap-value的值,可以修改超出值的大小
hset key filed value
hget key field
hmget key filed1 .. fieldN
hmset key field1 val1 .. fieldN valN
hincrby key field integer
hexists key field
hdel key field
hlen key
hkeys key
hvals key
hgetall key
##------------------redis 排序命令----------------
redis支持对list set sorted set的排序
sort key [by pattern] [limit start count] [get pattern ] [asc|desc] [alpha] [store deskey]
sort key 简单排序,并返回排序后的结果
[asc | desc] [alpha] 按照逆序或者字母顺序排序,可以同时使用
[by pattern] 按照给定模式将元素内容组合成新的key,并按新的key对应的内容排序
[limit start count]限制返回结果的条数
[store deskey] 将结果保存下来
新闻热点
疑难解答