Spring Boot:RedisTemplate的List类型操作
RedisTemplate支持Redis提供的所有数据类型(包括String、Hash、List、Set和ZSet等),并提供灵活的配置选项和事务支持,方便开发者与Redis交互。
Redis中的List类型是一个双向链表结构,支持在头部或尾部进行元素的插入和删除操作,常用于实现队列、栈等场景。RedisTemplate对Redis中的List类型提供了多种操作方法,通过opsForList(),可以进行List的增删查操作。
一、基本操作
1、添加元素
1)将元素添加到列表的头部Long leftPush(K key, V value);
返回值:操作后的列表长度
2)将元素添加到列表的尾部Long rightPush(K key, V value);
返回值:操作后的列表长度
3)将多个元素批量添加到列表的头部Long leftPushAll(K key, V... values);
返回值:操作后的列表长度
4)将多个元素批量添加到列表的尾部Long rightPushAll(K key, V... values);
返回值:操作后的列表长度
示例:
2、获取元素
1)根据索引获取列表中的元素V index(K key, long index);
参数K var1:键值
参数long var2:索引(包含),为0时从头部第一个元素开始,可以为负数,-1表示最后一个元素
返回值V:指定索引的元素值
2)获取列表中指定范围的元素List<String> range(K key, long start, long end);
参数:
key:键
start:起始索引(包含),为0时从头部第一个元素开始,可以为负数,-1表示最后一个元素
end:结束索引(包含),如果结束索引大于list的长度,则取从起始索引往后的所有数据
示例:
1)从列表中删除指定值的元素
Long remove(K key, long count, Object value);
count > 0:从头部开始删除前count个匹配元素
count < 0:从尾部开始删除后count个匹配元素
count = 0:删除所有匹配元素
value:要删除的值
返回值:被删除的元素数量
2)从列表头部弹出一个元素
V leftPop(K key);
返回值:弹出的元素值
3)从列表尾部弹出一个元素
V rightPop(K key);
返回值:弹出的元素值
4、列表修剪void trim(K key, long start, long end);
保留指定索引范围内的元素,其余删除
5、获取列表长度Long size(K key);
返回值:列表的长度
6、设置列表中指定索引位置的元素值void set(K key, long index, V value);
index:元素的索引
value:要设置的值
二、适用场景
1、消息队列
List类型可以用来实现简单的消息队列,生产者将消息放入队列,消费者从队列中取出消息进行处理
场景:异步任务处理、订单排队等需要先进先出的场景
2、栈
撤销操作、浏览历史记录等后进先出的场景
3、缓存最近访问的记录
可以使用List类型来缓存最近访问的记录,例如用户最近浏览的商品
4、任务调度
List类型可以用来实现任务调度,将任务放入队列中,然后由工作线程依次处理
5、分页查询
需要分页查询的数据也可以放到List中,如商品列表、评论
三、注意事项
1、索引范围
Redis的List的索引从0开始,-1表示最后一个元素,-2表示倒数第二个,以此类推
2、性能考虑
频繁的插入/删除操作在长列表中部时性能较低(链表结构特性)
使用trim和range时注意范围,避免全表扫描