成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

Spring Boot:RedisTemplate的List類型操作

數(shù)據(jù)庫 Redis
Redis中的List類型是一個雙向鏈表結(jié)構(gòu),支持在頭部或尾部進行元素的插入和刪除操作,常用于實現(xiàn)隊列、棧等場景。RedisTemplate對Redis中的List類型提供了多種操作方法,通過opsForList(),可以進行List的增刪查操作。

RedisTemplate支持Redis提供的所有數(shù)據(jù)類型(包括String、Hash、List、Set和ZSet等),并提供靈活的配置選項和事務(wù)支持,方便開發(fā)者與Redis交互。

Redis中的List類型是一個雙向鏈表結(jié)構(gòu),支持在頭部或尾部進行元素的插入和刪除操作,常用于實現(xiàn)隊列、棧等場景。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);

返回值:操作后的列表長度

示例:

// 將元素添加到列表的頭部
Long listLength = redisTemplate.opsForList().leftPush("news:user:1001", "news1");
log.info("leftPush listLength: {}", listLength);
// 將元素添加到列表的尾部
listLength = redisTemplate.opsForList().rightPush("news:user:1001", "news2");
log.info("rightPush listLength: {}", listLength);
// 將多個元素批量添加到列表的頭部
listLength = redisTemplate.opsForList().leftPushAll("news:user:1001", "news3", "news4", "news5");
log.info("leftPushAll listLength: {}", listLength);
// 將多個元素批量添加到列表的尾部
listLength = redisTemplate.opsForList().rightPushAll("news:user:1001", "news6", "news7", "news8");
log.info("rightPushAll listLength: {}", listLength);

2、獲取元素

1)根據(jù)索引獲取列表中的元素

V index(K key, long index);

參數(shù)K var1:鍵值

參數(shù)long var2:索引(包含),為0時從頭部第一個元素開始,可以為負數(shù),-1表示最后一個元素

返回值V:指定索引的元素值

2)獲取列表中指定范圍的元素

List<String> range(K key, long start, long end);

參數(shù):

key:鍵

start:起始索引(包含),為0時從頭部第一個元素開始,可以為負數(shù),-1表示最后一個元素

end:結(jié)束索引(包含),如果結(jié)束索引大于list的長度,則取從起始索引往后的所有數(shù)據(jù)

示例:

// 根據(jù)索引獲取列表中的元素
String value1 = redisTemplate.opsForList().index("news:user:1001", 0).toString();
log.info("index 0: {}", value1);
String valueInverse1 = redisTemplate.opsForList().index("news:user:1001", -1).toString();
log.info("index -1: {}", valueInverse1);
// 獲取列表中指定范圍的元素
List<String> values = redisTemplate.opsForList().range("news:user:1001", 0, 2);
log.info("values 0 2 : {}", values.toString());
values = redisTemplate.opsForList().range("news:user:1001", 0, 9);
log.info("values 0 9 : {}", values.toString());
values = redisTemplate.opsForList().range("news:user:1001", 0, -1);
log.info("values 0 -1 : {}", values.toString());
values = redisTemplate.opsForList().range("news:user:1001", 0, -3);
log.info("values 0 -3 : {}", values.toString());
values = redisTemplate.opsForList().range("news:user:1001", -3, -1);
log.info("values -3 -1 : {}", values.toString());

3、刪除元素

1)從列表中刪除指定值的元素

Long remove(K key, long count, Object value);

count > 0:從頭部開始刪除前count個匹配元素

count < 0:從尾部開始刪除后count個匹配元素

count = 0:刪除所有匹配元素

value:要刪除的值

返回值:被刪除的元素數(shù)量

2)從列表頭部彈出一個元素

V leftPop(K key);

返回值:彈出的元素值

3)從列表尾部彈出一個元素

V rightPop(K key);

返回值:彈出的元素值

4、列表修剪

void trim(K key, long start, long end);

保留指定索引范圍內(nèi)的元素,其余刪除

5、獲取列表長度

Long size(K key);

返回值:列表的長度

6、設(shè)置列表中指定索引位置的元素值

void set(K key, long index, V value);

index:元素的索引

value:要設(shè)置的值

二、適用場景

1、消息隊列

List類型可以用來實現(xiàn)簡單的消息隊列,生產(chǎn)者將消息放入隊列,消費者從隊列中取出消息進行處理

場景:異步任務(wù)處理、訂單排隊等需要先進先出的場景

2、棧

撤銷操作、瀏覽歷史記錄等后進先出的場景

3、緩存最近訪問的記錄

可以使用List類型來緩存最近訪問的記錄,例如用戶最近瀏覽的商品

4、任務(wù)調(diào)度

List類型可以用來實現(xiàn)任務(wù)調(diào)度,將任務(wù)放入隊列中,然后由工作線程依次處理

5、分頁查詢

需要分頁查詢的數(shù)據(jù)也可以放到List中,如商品列表、評論

三、注意事項

1、索引范圍

Redis的List的索引從0開始,-1表示最后一個元素,-2表示倒數(shù)第二個,以此類推

2、性能考慮

頻繁的插入/刪除操作在長列表中部時性能較低(鏈表結(jié)構(gòu)特性)

使用trim和range時注意范圍,避免全表掃描

責任編輯:武曉燕 來源: 圖南筆記
相關(guān)推薦

2018-11-02 15:45:41

Spring BootRedis數(shù)據(jù)庫

2017-04-17 10:35:40

Spring BooRedis 操作

2024-01-10 08:20:13

參數(shù)轉(zhuǎn)換技巧

2023-04-28 15:15:39

數(shù)據(jù)庫JPA

2025-06-24 07:35:20

2022-04-28 08:05:05

數(shù)據(jù)庫數(shù)據(jù)庫交互

2022-07-18 09:41:29

屬性類型安全Spring

2022-02-17 13:39:09

AOP接口方式

2023-09-27 08:14:56

2017-03-23 09:29:06

2024-01-23 08:47:13

BeanSpring加載方式

2021-04-13 20:24:57

Spring Boot注解spring

2024-11-21 14:42:31

2025-01-15 08:19:12

SpringBootRedis開源

2021-07-26 11:09:43

NacosSpring Boot配置

2023-11-01 15:07:51

環(huán)境配置方式

2021-09-15 16:20:02

Spring BootFilterJava

2023-12-08 07:52:51

Spring項目開發(fā)

2022-03-07 09:00:00

HTTPS證書中間件

2024-11-28 09:43:04

點贊
收藏

51CTO技術(shù)棧公眾號

主站蜘蛛池模板: 久久久精品一区 | 国产欧美一区二区三区在线看蜜臀 | 神马影院一区二区三区 | 日韩综合在线 | 午夜激情影院 | 一级做受毛片免费大片 | 久久久久久久久久久爱 | 国产精品九九九 | 国产欧美精品一区二区三区 | 久久精品一二三影院 | 成人午夜网 | www.久久久久久久久久久久 | 国产精品免费一区二区三区 | 久久久久国产一区二区三区四区 | 久久精品久久久 | 久久99精品国产自在现线小黄鸭 | 日韩欧美在线一区 | 精品国产欧美在线 | 日韩国产欧美在线观看 | 欧美亚洲国产一区二区三区 | 亚洲欧美国产精品一区二区 | 欧美一区二区三区在线观看 | 久久99深爱久久99精品 | 在线日韩视频 | 黄网站在线播放 | 久久精品国产亚洲夜色av网站 | 天天操夜夜骑 | 欧美成人精品激情在线观看 | 亚洲一区不卡在线 | 亚洲精品一区二区三区在线 | 国产精品久久久久久久免费大片 | 免费观看一级特黄欧美大片 | 日韩中文在线观看 | 午夜影院在线视频 | 日本特黄a级高清免费大片 特黄色一级毛片 | 欧美三级网站 | 午夜精品一区二区三区在线视频 | 99精品一区二区 | 久久99视频 | 国产精品中文字幕一区二区三区 | 亚洲成年影院 |