RedisTemplateAPI:List

文章目录

⛄介绍

Redis 中的List类型与Java中的 LinkedList 类似,可以看做是一个 双向链表 结构。既可以支持正向检索和也可以支持反向检索。

特征也与LinkedList类似:

  • 有序
  • 元素可以重复
  • 插入和删除快
  • 查询速度一般

常用来存储一个有序数据,例如:朋友圈点赞列表,评论列表等。

⛄List的常见命令有

  • LPUSH key element ... :向列表左侧插入一个或多个元素
  • LPOP key:移除并返回列表左侧的第一个元素,没有则返回nil
  • RPUSH key element ... :向列表右侧插入一个或多个元素
  • RPOP key:移除并返回列表右侧的第一个元素
  • LRANGE key star end:返回一段角标范围内的所有元素
  • BLPOP和BRPOP:与LPOP和RPOP类似,只不过在没有元素时等待指定时间,而不是直接返回nil

⛄RedisTemplate API

❄️❄️添加缓存

java 复制代码
//1、通过redisTemplate设置值
redisTemplate.boundListOps("listKey").leftPush("listLeftValue1");
redisTemplate.boundListOps("listKey").rightPush("listRightValue2");

//2、通过BoundValueOperations设置值
BoundListOperations listKey = redisTemplate.boundListOps("listKey");
listKey.leftPush("listLeftValue3");
listKey.rightPush("listRightValue4");

//3、通过ValueOperations设置值
ListOperations opsList = redisTemplate.opsForList();
opsList.leftPush("listKey", "listLeftValue5");
opsList.rightPush("listKey", "listRightValue6");

❄️❄️将List放入缓存

java 复制代码
ArrayList<String> list = new ArrayList<>();
//	left
redisTemplate.boundListOps("listKey").leftPushAll(list);
//	right
redisTemplate.boundListOps("listKey").rightPushAll(list);

❄️❄️设置过期时间(单独设置)

java 复制代码
redisTemplate.boundValueOps("listKey").expire(1,TimeUnit.MINUTES);
redisTemplate.expire("listKey",1,TimeUnit.MINUTES);

❄️❄️获取List缓存全部内容(起始索引,结束索引)

java 复制代码
List listKey1 = redisTemplate.boundListOps("listKey").range(0, 10); 

❄️❄️从左或从右弹出一个元素

java 复制代码
//从左侧弹出一个元素
String listKey2 = (String) redisTemplate.boundListOps("listKey").leftPop();  
//从右侧弹出一个元素
String listKey3 = (String) redisTemplate.boundListOps("listKey").rightPop(); 

❄️❄️根据索引查询元素

java 复制代码
String listKey4 = (String) redisTemplate.boundListOps("listKey").index(1);

❄️❄️获取List缓存的长度

java 复制代码
Long size = redisTemplate.boundListOps("listKey").size();

❄️❄️根据索引修改List中的某条数据(key,索引,值)

java 复制代码
redisTemplate.boundListOps("listKey").set(3L,"listLeftValue3");

❄️❄️移除N个值为value(key,移除个数,值)

java 复制代码
redisTemplate.boundListOps("listKey").remove(3L,"value");

使用场景

  • 消息队列(Message Queue): List 可以用作简单的消息队列,生产者可以将消息 push 到列表的一端,而消费者可以从列表的另一端 pop 出消息进行处理。

  • 任务队列(Task Queue): List 可以用作任务队列,生产者可以向列表中 push 任务,而消费者可以从列表中 pop 出任务进行处理。

  • 发布与订阅(Pub/Sub)的实现: 你可以将订阅者的信息保存在列表中,发布者发布消息时,将消息推送到列表中,订阅者可以从列表中获取最新的消息。

  • 实时数据更新: List 可以用来存储一些需要实时更新的数据,比如用户的行为记录、实时日志等。

相关推荐
就爱学编程2 分钟前
重生之我在异世界学编程之C语言小项目:通讯录
c语言·开发语言·数据结构·算法
ALISHENGYA1 小时前
全国青少年信息学奥林匹克竞赛(信奥赛)备考实战之分支结构(实战项目二)
数据结构·c++·算法
咸鱼桨1 小时前
《庐山派从入门到...》PWM板载蜂鸣器
人工智能·windows·python·k230·庐山派
DARLING Zero two♡1 小时前
【优选算法】Pointer-Slice:双指针的算法切片(下)
java·数据结构·c++·算法·leetcode
滚雪球~2 小时前
如何使用Windows快捷键在多显示器间移动窗口
windows·计算机外设
波音彬要多做3 小时前
41 stack类与queue类
开发语言·数据结构·c++·学习·算法
Noah_aa3 小时前
代码随想录算法训练营第五十六天 | 图 | 拓扑排序(BFS)
数据结构
大猫和小黄3 小时前
Windows、CentOS环境下搭建自己的版本管理资料库:GitBlit
linux·服务器·windows·git
Schwertlilien4 小时前
图像处理-Ch6-彩色图像处理
windows