附:本系列的前一篇文章:【Redis】详述Redis 基本知识与命令整理:Key-Value 常用命令、String 类型常用命令
文章目录
- 1 List 类型常用命令
- 1.1 将新值加入列表头部
- 1.2 将新值加入列表尾部
- 1.3 获取列表中某区间的值
- 1.4 移除列表中最左边的值,并返回此值
- 1.5 移除列表中最右边的值,并返回此值
- 1.6 通过下标获取列表中的值
- 1.7 得到列表长度
- 1.8 删除指定值及数量的元素值
- 1.9 截断列表
- 1.10 将值从一个列表移动到另一个列表
- 1.11 替换列表中某个值
- 1.12 指定位置将新值插入列表
- 1.13 应用
- 2 Set 类型常用命令
- 2.1 添加集合元素
- 2.2 查看某集合的所有值
- 2.3 判断一个值是否在集合中
- 2.4 查看某集合的存值的数量
- 2.5 删除集合中指定值的元素
- 2.6 随机选出某集合中一个元素
- 2.7 随机删除某集合中一个元素
- 2.8 将一个集合中的某值移动至另一个集合
- 2.9 集合运算:差集
- 2.10 集合运算:交集
- 2.11 集合运算:并集
- 2.11 应用
1 List 类型常用命令
1.1 将新值加入列表头部
LPUSH 列表名 新值
1.2 将新值加入列表尾部
RPUSH 列表名 新值
1.3 获取列表中某区间的值
LRANGE 列表名 start end
(注:[start, end])
1.4 移除列表中最左边的值,并返回此值
LPOP 列表名
1.5 移除列表中最右边的值,并返回此值
1.6 通过下标获取列表中的值
LINDEX 列表名 下标值
1.7 得到列表长度
LLEN 列表名
1.8 删除指定值及数量的元素值
LREM 列表名 数量 值
1.9 截断列表
LTRIM 列表名 start end
(注:保留 [start, end])
1.10 将值从一个列表移动到另一个列表
1.11 替换列表中某个值
LSET 列表 下标 新值
1.12 指定位置将新值插入列表
LINSERT 列表名 BEFORE / AFTER 某值 要插入的新值
1.13 应用
(此部分学习自:链接)
(1)消息队列
list类型的lpop和rpush(或者反过来,lpush和rpop)能实现队列的功能,故而可以用Redis的list类型实现简单的点对点的消息队列。不过我不推荐在实战中这么使用,因为现在已经有Kafka、NSQ、RabbitMQ等成熟的消息队列了,它们的功能已经很完善了,除非是为了更深入地理解消息队列,不然我觉得没必要去重复造轮子。
(2)排行榜
list类型的lrange命令可以分页查看队列中的数据。可将每隔一段时间计算一次的排行榜存储在list类型中,如京东每日的手机销量排行、学校每次月考学生的成绩排名、斗鱼年终盛典主播排名等。但是,并不是所有的排行榜都能用list类型实现,只有定时计算的排行榜才适合使用list类型存储,与定时计算的排行榜相对应的是实时计算的排行榜,list类型不能支持实时计算的排行榜,之后在介绍有序集合sorted set的应用场景时会详细介绍实时计算的排行榜的实现。
(3)最新列表
list类型的lpush命令和lrange命令能实现最新列表的功能,每次通过lpush命令往列表里插入新的元素,然后通过lrange命令读取最新的元素列表,如朋友圈的点赞列表、评论列表。但是,并不是所有的最新列表都能用list类型实现,因为对于频繁更新的列表,list类型的分页可能导致列表元素重复或漏掉,此情况需要使用 sorted set 类型
2 Set 类型常用命令
2.1 添加集合元素
SADD 集合名 值
(注:若值已存在,则不进行添加,并返回 0)
2.2 查看某集合的所有值
SMEMBERS 集合名
2.3 判断一个值是否在集合中
2.4 查看某集合的存值的数量
SMEMBERS 集合名
2.5 删除集合中指定值的元素
SREM 集合名 值
2.6 随机选出某集合中一个元素
SRANDMEMBER 集合名
2.7 随机删除某集合中一个元素
SPOP 集合名
2.8 将一个集合中的某值移动至另一个集合
SMOVE 源集合 目的集合 源集合中的某值
2.9 集合运算:差集
SDIFF 集合名1 集合名2
2.10 集合运算:交集
SINTER 集合名1 集合名2
2.11 集合运算:并集
SUNION 集合名1 集合名2
2.11 应用
(此部分学习自:链接)
(1)好友/关注/粉丝/感兴趣的人集合
set 类型唯一的特点使得其适合用于存储好友/关注/粉丝/感兴趣的人集合,集合中的元素数量可能很多,每次全部取出来成本不小,set类型提供了一些很实用的命令用于直接操作这些集合,如
1)sinter命令可以获得A和B两个用户的共同好友
2)sismember命令可以判断A是否是B的好友
3)scard命令可以获取好友数量
4)关注时,smove命令可以将B从A的粉丝集合转移到A的好友集合
(2)随机展示
通常,app首页的展示区域有限,但是又不能总是展示固定的内容,一种做法是先确定一批需要展示的内容,再从中随机获取。如酷狗音乐K歌擂台赛当日的打擂歌曲共29首,首页随机展示5首;昨日打擂金曲共200首,首页随机展示30首。set类型适合存放所有需要展示的内容,而srandmember命令则可以从中随机获取几个。
(3)黑名单/白名单
经常有业务出于安全性方面的考虑,需要设置用户黑名单、ip黑名单、设备黑名单等,set类型适合存储这些黑名单数据,sismember命令可用于判断用户、ip、设备是否处于黑名单之中。