ホームページ  >  記事  >  データベース  >  Redis で opsForList().range() を使用する方法

Redis で opsForList().range() を使用する方法

王林
王林転載
2023-05-26 13:46:201692ブラウズ

結論 (具体的なテストデータについては以下をお読みください)

1. start—end が全体の順序を維持していれば問題はありません

2. start であっても順序に従います N-1 もデータをクエリできます

3. 特別な使用法: stringRedisTemplate.opsForList().range(key, 0, -1) を通じて、最初のインデックスをクエリできます。最後のインデックス (つまり、すべてのデータ)

1. 環境 redis

Redis で opsForList().range() を使用する方法

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. テストデータ (リストの長さが N であると仮定)

Redis で opsForList().range() を使用する方法

4. テストは相互インデックスから開始します

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

結果から: 最後のインデックスから 4 番目 - 最後のインデックスから 1 番目

Redis で opsForList().range() を使用する方法

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

結果から: 最後のインデックスから 3 番目 - 最後のインデックスから 1 番目

Redis で opsForList().range() を使用する方法

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

結果から: 最後のインデックスから 3 番目 - 最後のインデックスから 2 番目

Redis で opsForList().range() を使用する方法

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

結果から: 最後のインデックスから 2 番目 - 最後のインデックスから 3 番目は無効になりますwork, from インデックスの下から 3 番目 - インデックスの下から 2 番目で大丈夫です。

結論: N 番目のインデックスから順に並んでいる必要があります (つまり、-N、-(N-1)、-(N-2)、...、-1)。順序は逆ではありません。 '

Redis で opsForList().range() を使用する方法

5. テストは正のインデックス番号

5.1 から始まります。stringRedisTemplate.opsForList().range(key, 0, 3)

結果から: 最初のインデックスから 4 番目のインデックスまで

Redis で opsForList().range() を使用する方法

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

結果から: 2 番目のインデックスから 3 番目のインデックス

Redis で opsForList().range() を使用する方法##5.3, stringRedisTemplate.opsForList().range(key, 2,1)

結果から: 3 番目のインデックスから - 2 番目のインデックスは不可能、2 番目のインデックスから - 3 番目のインデックスは OK

結論: インデックス 0 から開始し、順序が整っていなければなりません (つまり、0、 1、2、...、N-1)、逆順は不可

Redis で opsForList().range() を使用する方法6. テスト インデックス カウントダウン——正のインデックス (正のインデックス、添字 0 は最初のもの)

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

結果から判断すると、2 番目から最後までは理解するのは難しくありません。インデックス (つまり、行は 3) から 3 番目のインデックス (つまり、行は 3) まで

Redis で opsForList().range() を使用する方法 6.2. stringRedisTemplate.opsForList().range(key, - 4, 3)

結果から: 最後から 4 番目のインデックス (つまり行が 1) からインデックス 3 (つまり行が 4) までは理解するのが難しくありません

Redis で opsForList().range() を使用する方法6.3, stringRedisTemplate.opsForList().range(key, -4, 5)

結果から: 4 番目から最後のインデックス (つまり、行)は 1)、5 番目のインデックス (つまり、行は 6) まで

#結論: 順番に超えても問題ありません

以上がRedis で opsForList().range() を使用する方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

声明:
この記事はyisu.comで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。