redis中opsForList().range()的使用方法詳解
測試stringRedisTemplate.opsForList().range(key, start, end)的使用
結(jié)論(具體測試數(shù)據(jù)請往下看)
1、start—end總體保持著順序就沒問題
2、按照順序,即便start < -N或者end > N-1也能查詢出數(shù)據(jù)
3、特殊用法:通過stringRedisTemplate.opsForList().range(key, 0, -1)可以查詢索引第一個到索引倒數(shù)第一個(即所有數(shù)據(jù))
1、環(huán)境 redis
2、測試代碼:
@Resource private StringRedisTemplate stringRedisTemplate; @Test void testRedis() { String key = "testList"; String[] data = new String[]{"1_1", "1-2", "2_1", "2_2"}; Boolean flag = stringRedisTemplate.hasKey(key); if (!flag) { stringRedisTemplate.opsForList().leftPushAll(key, data); } List<String> range = stringRedisTemplate.opsForList().range(key, -100, -1); System.out.println("range = " + range); }
3、測試數(shù)據(jù)(假設(shè)List長度為N)
4、測試從索引倒數(shù)開始
4.1、stringRedisTemplate.opsForList().range(key, -4, -1)
從結(jié)果看:從索引倒數(shù)第4個——索引倒數(shù)第1個
4.2、stringRedisTemplate.opsForList().range(key, -3, -1)
從結(jié)果看:從索引倒數(shù)第3個——索引倒數(shù)第1個
4.3、stringRedisTemplate.opsForList().range(key, -3, -2)
從結(jié)果看:從索引倒數(shù)第3個——索引倒數(shù)第2個
4.4、stringRedisTemplate.opsForList().range(key, -2, -3)
從結(jié)果看:從索引倒數(shù)第2個——索引倒數(shù)第3個不行,從索引倒數(shù)第3個——索引倒數(shù)第2個可以。
結(jié)論:從索引倒數(shù)第N個開始,要按照順序(即 -N、-(N-1)、-(N-2)、……、-1),逆序是不行的
5、測試從索引正數(shù)開始
5.1、stringRedisTemplate.opsForList().range(key, 0, 3)
從結(jié)果看:從索引第1個——索引第4個
5.2、stringRedisTemplate.opsForList().range(key, 1,2)
從結(jié)果看:從索引第2個——索引第3個
5.2、stringRedisTemplate.opsForList().range(key, 2,1)
從結(jié)果看:從索引第3個——索引第2個不行,從索引第2個——索引第3個可以
結(jié)論:從索引0開始,要按照順序(即 0、1、2、……、N-1),逆序是不行的
6、測試索引倒數(shù)——索引正數(shù)(正數(shù)索引,下標(biāo) 0 為第一個)
6.1、stringRedisTemplate.opsForList().range(key, -2, 2)
從結(jié)果看:這樣就不難理解了,從索引倒數(shù)第2個(即row為3),到索引第3個(即row為3)
6.2、stringRedisTemplate.opsForList().range(key, -4, 3)
從結(jié)果看:這樣就不難理解了,從索引倒數(shù)第4個(即row為1),到索引第3個(即row為4)
6.3、stringRedisTemplate.opsForList().range(key, -4, 5)
從結(jié)果看:從索引倒數(shù)第4個(即row為1),到索引第5個(即row為6)
結(jié)論:按順序超出是沒問題的
總結(jié)
到此這篇關(guān)于redis中opsForList().range()的使用方法詳解的文章就介紹到這了,更多相關(guān)redis opsForList().range()的使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Redis鏈表底層實(shí)現(xiàn)及生產(chǎn)實(shí)戰(zhàn)
Redis 的 List 是一個雙向鏈表,鏈表中的每個節(jié)點(diǎn)都包含了一個字符串。是redis中最常用的數(shù)據(jù)結(jié)構(gòu)之一,本文主要介紹了Redis鏈表底層實(shí)現(xiàn)及生產(chǎn)實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-03-03Redis中3種特殊的數(shù)據(jù)類型(BitMap、Geo和HyperLogLog)
這篇文章主要給大家介紹了關(guān)于Redis中3種特殊的數(shù)據(jù)類型(BitMap、GEOADD和GEODIST)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2018-03-03使用redis實(shí)現(xiàn)高效分頁的項(xiàng)目實(shí)踐
在很多場景下,我們需要對大量的數(shù)據(jù)進(jìn)行分頁展示,本文主要介紹了使用redis實(shí)現(xiàn)高效分頁的項(xiàng)目實(shí)踐,具有一定的參考價值,感興趣的可以了解一下2024-02-02Redis如何在項(xiàng)目中合理使用經(jīng)驗(yàn)分享
這篇文章主要給大家介紹了關(guān)于Redis如何在項(xiàng)目中合理使用的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用Redis具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧2019-04-04