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的值设为value
hset 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 1
srem 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结构进行存储。