附:本系列的前一篇文章:​​【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 列表名 新值

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

1.2 将新值加入列表尾部

RPUSH 列表名 新值

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

1.3 获取列表中某区间的值

LRANGE 列表名 start end

(注:[start, end])

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

1.4 移除列表中最左边的值,并返回此值

LPOP 列表名

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

1.5 移除列表中最右边的值,并返回此值

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

1.6 通过下标获取列表中的值

LINDEX 列表名 下标值

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

1.7 得到列表长度

LLEN 列表名

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

1.8 删除指定值及数量的元素值

LREM 列表名 数量 值

【Redis】基础实践总结:List 类型常用命令、Set 类型常用命令_数据库_08


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

1.9 截断列表

LTRIM 列表名 start end

(注:保留 [start, end])

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

1.10 将值从一个列表移动到另一个列表

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

1.11 替换列表中某个值

LSET 列表 下标 新值

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

1.12 指定位置将新值插入列表

LINSERT 列表名 BEFORE / AFTER 某值 要插入的新值

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

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)

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

2.2 查看某集合的所有值

SMEMBERS 集合名

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

2.3 判断一个值是否在集合中

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

2.4 查看某集合的存值的数量

SMEMBERS 集合名

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

2.5 删除集合中指定值的元素

SREM 集合名 值

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

2.6 随机选出某集合中一个元素

SRANDMEMBER 集合名

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

2.7 随机删除某集合中一个元素

SPOP 集合名

【Redis】基础实践总结:List 类型常用命令、Set 类型常用命令_数据库_20

2.8 将一个集合中的某值移动至另一个集合

SMOVE 源集合 目的集合 源集合中的某值

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

2.9 集合运算:差集

SDIFF 集合名1 集合名2

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

2.10 集合运算:交集

SINTER 集合名1 集合名2

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

2.11 集合运算:并集

SUNION 集合名1 集合名2

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

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