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

Spring Boot:RedisTemplate的List類型操作

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

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

Redis中的List類型是一個雙向鏈表結(jié)構(gòu),支持在頭部或尾部進(jìn)行元素的插入和刪除操作,常用于實(shí)現(xiàn)隊列、棧等場景。RedisTemplate對Redis中的List類型提供了多種操作方法,通過opsForList(),可以進(jìn)行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時從頭部第一個元素開始,可以為負(fù)數(shù),-1表示最后一個元素

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

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

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

參數(shù):

key:鍵

start:起始索引(包含),為0時從頭部第一個元素開始,可以為負(fù)數(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類型可以用來實(shí)現(xiàn)簡單的消息隊列,生產(chǎn)者將消息放入隊列,消費(fèi)者從隊列中取出消息進(jìn)行處理

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

2、棧

撤銷操作、瀏覽歷史記錄等后進(jìn)先出的場景

3、緩存最近訪問的記錄

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

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

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

5、分頁查詢

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

三、注意事項(xiàng)

1、索引范圍

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

2、性能考慮

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

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

責(zé)任編輯:武曉燕 來源: 圖南筆記
相關(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

2021-07-26 11:09:43

NacosSpring Boot配置

2021-09-15 16:20:02

Spring BootFilterJava

2024-11-28 09:43:04

2023-11-01 15:07:51

環(huán)境配置方式

2023-12-08 07:52:51

Spring項(xiàng)目開發(fā)

2024-08-13 08:41:18

2022-03-07 09:00:00

HTTPS證書中間件

2017-03-23 09:29:06

2024-01-23 08:47:13

BeanSpring加載方式

2021-04-13 20:24:57

Spring Boot注解spring

2025-01-15 08:19:12

SpringBootRedis開源
點(diǎn)贊
收藏

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

主站蜘蛛池模板: 欧美男男videos | 国产日韩欧美精品一区二区三区 | 亚洲二区在线 | 天天爽夜夜骑 | 成人视屏在线观看 | 日韩在线资源 | 久久国产婷婷国产香蕉 | 日韩伦理一区二区 | 亚洲性视频 | 国产小视频在线观看 | 国产精品久久久久久久久久尿 | 久久另类 | 成人毛片视频免费 | 成人免费观看男女羞羞视频 | 中文字幕视频在线观看 | 欧美一区不卡 | 狠狠躁躁夜夜躁波多野结依 | 91文字幕巨乱亚洲香蕉 | 天天射中文 | 自拍偷拍亚洲视频 | 中文字幕高清视频 | 色久电影| 亚洲黄色片免费观看 | 一区二区三区四区国产 | 亚洲黄色av网站 | 欧美精品久久久久 | 亚洲精品一区二区三区在线 | 国产在线观 | 久久夜视频 | 综合激情久久 | 国产日韩欧美在线观看 | 综合久久久 | 日韩视频精品 | av中文字幕在线播放 | 成人午夜电影在线观看 | 91精品国产一区二区三区 | 国产高清美女一级a毛片久久w | 亚洲视频欧美视频 | 日韩一二三区视频 | 久久涩涩 | 99久热|