首頁 > 軟體

redis中opsForList().range()的使用方法詳解

2023-03-17 06:06:46

測試stringRedisTemplate.opsForList().range(key, start, end)的使用

結論(具體測試資料請往下看)

1、start—end總體保持著順序就沒問題

2、按照順序,即便start < -N或者end > N-1也能查詢出資料

3、特殊用法:通過stringRedisTemplate.opsForList().range(key, 0, -1)可以查詢索引第一個到索引倒數第一個(即所有資料)

1、環境 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、測試資料(假設List長度為N)

4、測試從索引倒數開始

4.1、stringRedisTemplate.opsForList().range(key, -4, -1)

從結果看:從索引倒數第4個——索引倒數第1個

4.2、stringRedisTemplate.opsForList().range(key, -3, -1)

從結果看:從索引倒數第3個——索引倒數第1個

4.3、stringRedisTemplate.opsForList().range(key, -3, -2)

從結果看:從索引倒數第3個——索引倒數第2個

4.4、stringRedisTemplate.opsForList().range(key, -2, -3)

從結果看:從索引倒數第2個——索引倒數第3個不行,從索引倒數第3個——索引倒數第2個可以。

結論:從索引倒數第N個開始,要按照順序(即 -N、-(N-1)、-(N-2)、……、-1),逆序是不行的

5、測試從索引正數開始

5.1、stringRedisTemplate.opsForList().range(key, 0, 3)

從結果看:從索引第1個——索引第4個

5.2、stringRedisTemplate.opsForList().range(key, 1,2)

從結果看:從索引第2個——索引第3個

5.2、stringRedisTemplate.opsForList().range(key, 2,1)

從結果看:從索引第3個——索引第2個不行,從索引第2個——索引第3個可以

結論:從索引0開始,要按照順序(即 0、1、2、……、N-1),逆序是不行的

6、測試索引倒數——索引正數(正數索引,下標 0 為第一個)

6.1、stringRedisTemplate.opsForList().range(key, -2, 2)

從結果看:這樣就不難理解了,從索引倒數第2個(即row為3),到索引第3個(即row為3)

6.2、stringRedisTemplate.opsForList().range(key, -4, 3)

從結果看:這樣就不難理解了,從索引倒數第4個(即row為1),到索引第3個(即row為4)

6.3、stringRedisTemplate.opsForList().range(key, -4, 5)

從結果看:從索引倒數第4個(即row為1),到索引第5個(即row為6)

結論:按順序超出是沒問題的

總結 

到此這篇關於redis中opsForList().range()的使用方法詳解的文章就介紹到這了,更多相關redis opsForList().range()的使用內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!


IT145.com E-mail:sddin#qq.com