【Redis】基础实践总结:List 类型常用命令、Set 类型常用命令

附:本系列的前一篇文章:【Redis】详述Redis 基本知识与命令整理:Key-Value 常用命令、String 类型常用命令

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、设备是否处于黑名单之中。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

超周到的程序员

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值