String
命令
# 设置指定key的值set key value# 获取指定key的值get key# 只有在key不存在时设置key的值setnx key value# 将值value关联到key, 并将key的过期时间设为seconds(以秒为单位)setex key seconds value
场景
简单的key-value类型,value不仅可以是string,也可以是数字。
常规计数:微博数,粉丝数。
Hash
命令
# 将哈希表key中的字段field的值设为valuehset key field value# 获取存储在哈希表中指定字段的值hget key field# 删除一个或多个哈希表字段hdel key field1 [field2]
场景
hash特别适合用于存储对象,后续的操作中,可以直接仅仅修改这个对象中的某个字段的值。
比如可以hash数据结构来存储用户信息,商品信息等。
List
命令
# 将一个或多个值插入到列表头部lpush key value1 [value2]# 在列表中添加一个或多个值rpush key value1 [value2]# 移除并获取列表中的第一个元素lpop key# 移除列表的最后一个元素,返回被移除的元素rpop key
场景
微博的关注列表,粉丝列表。
可以基于redis实现简单的高性能分页,类似微博那种下拉不断分页的东西,性能高。
Set
命令
场景
存储不重复的列表数据。可以基于set实现交集,并集,差集操作。
比如:微博应用,可以将一个用户所有关注人存在一个集合中,将所有的粉丝存在一个集合。redis可以非常方便的实现如同共同关注,共同粉丝,共同喜好的功能。
#-------操作多个set-------# 求 key1,key2的交集,将结果存在key1内sinter key1 key2# 求key1,key2的交集, 将交集存在result内sinterstore result key1 key2# 求 key1,key2的差集,将结果存在key1内sdiff key1 key2# 求 key1, key2的差集,将结果存在result内sdiffstore result key1 key2# 返回所有集合的并集sunion key1 key2# 所有给定集合的并集存储在result集合中sunionstore result key1 key2#-------操作一个set-------# 添加元素sadd mySet 1# 查看全部元素smembers mySet# 判断是否包含某个值sismember mySet 3# 删除某个/些元素srem mySet 1srem mySet 2 4# 查看元素个数scard mySet# 随机删除一个元素spop mySet
Sorted Set
命令
# 向有序集合添加一个或多个成员,或者更新已存在成员的分数zadd key score1 member1 [score2 member2]#返回指定key内指定范围内的集合区间,withscores同时返回score权重参数(正序)zrange key start stop [withscores]# 返回有序集合中指定区间的成员,通过索引,分数从高到低 (降序)zrevrange key start stop [withscores]# 返回有序集合中指定区间内的成员,通过score,分数从高到低 (降序)zrevrangebyscore key maxScore minScore [withscores]# 移除有序集合中的一个或多个成员zrem key member [member...]# 获取有序集合的成员数zcard key# 获取指定值的排名zrank key member
场景
相比于set,sort set增加了一个权重参数score,使得集合中的元素能够按score进行有序排列。
比如:直播系统,试试排行信息包含直播间在线用户列表,礼物排行榜,弹幕消息等消息,适合使用redis中的sort set结构进行存储。
