Rumah  >  Artikel  >  pangkalan data  >  Mari kita bincangkan tentang operasi imbasan redis

Mari kita bincangkan tentang operasi imbasan redis

藏色散人
藏色散人ke hadapan
2021-09-11 17:00:512740semak imbas
siri redis
  • fungsi penerbitan dan langgan redis
  • baris gilir mesej redis
  • talian paip redis
  • operasi imbasan redis

jujukan

Terdapat sejumlah besar kekunci dalam db redis atau set tertentu, zset, cincang dalam db. Jika terdapat banyak elemen di dalamnya, menggunakan operasi get all biasa mungkin akan menyebabkan redis disekat kerana operasi ini, mengakibatkan ketidakupayaan untuk bertindak balas terhadap operasi lain terutamanya dalam konteks konkurensi tinggi dan besar-besaran data, masalah ini amat serius. Jadi bolehkah ia mempunyai fungsi paging seperti pangkalan data jawapannya ialah operasi imbasan. Artikel ini terutamanya menunjukkan cara menggunakannya dalam redis-cli dan SpringDataRedis. [Disyorkan: tutorial video redis]

sintaks imbasan

Selepas imbasan, dua bahagian dikembalikan. Bahagian pertama ialah parameter imbasan seterusnya dan bahagian kedua ialah item yang keluar daripada imbasan. >

set(

)
  • key
zset(
127.0.0.1:6379> scan 0
1) "120"
2)  1) "articleMap:63"
    2) "articleMap:37"
    3) "counter:__rand_int__"
    4) "articleMap:60"
    5) "tagSet:tag5"
    6) "articleMap:80"
    7) "messageCache~keys"
    8) "mymap"
    9) "articleMap:46"
   10) "articleMap:55"
127.0.0.1:6379> scan 120
1) "28"
2)  1) "articleMap:17"
    2) "tagSet:tag1"
    3) "articleMap:18"
    4) "articleMap:81"
    5) "\xac\xed\x00\x05t\x00\btest-cas"
    6) "articleMap:51"
    7) "articleMap:94"
    8) "articleMap:26"
    9) "articleMap:71"
   10) "user-abcde"
)
  • value
cincang (
127.0.0.1:6379> sscan myset 0
1) "3"
2)  1) "m"
    2) "j"
    3) "c"
    4) "h"
    5) "f"
    6) "i"
    7) "a"
    8) "g"
    9) "n"
   10) "e"
   11) "b"
127.0.0.1:6379> sscan myset 3
1) "0"
2) 1) "l"
   2) "k"
   3) "d"
)
  • value & score
  • Parameter tambahan SCAN
127.0.0.1:6379> zscan sortset 0
1) "0"
2) 1) "tom"
   2) "89"
   3) "jim"
   4) "90"
   5) "david"
   6) "100"
    kira(
  • )key & value
127.0.0.1:6379> hscan mymap 0
1) "0"
2)  1) "name"
    2) "codecraft"
    3) "email"
    4) "pt@g.cn"
    5) "age"
    6) "20"
    7) "desc"
    8) "hello"
    9) "sex"
   10) "male"

padanan(

)
  • 指定每次取多少条
  • operasi RedisTemplate
127.0.0.1:6379> scan 0 count 5
1) "240"
2) 1) "articleMap:63"
   2) "articleMap:37"
   3) "counter:__rand_int__"
   4) "articleMap:60"
   5) "tagSet:tag5"
Kunci pangkalan data lintasan
  • 匹配keySet lintasan
127.0.0.1:6379> scan 0 match article*
1) "120"
2) 1) "articleMap:63"
   2) "articleMap:37"
   3) "articleMap:60"
   4) "articleMap:80"
   5) "articleMap:46"
   6) "articleMap:55"
Traverse zset

Traverse hash

@Test
    public void scanDbKeys(){
        template.execute(new RedisCallback<Iterable<byte[]>>() {
            @Override
            public Iterable<byte[]> doInRedis(RedisConnection connection) throws DataAccessException {

                List<byte[]> binaryKeys = new ArrayList<byte[]>();

                Cursor<byte[]> cursor = connection.scan(ScanOptions.scanOptions().count(5).build());
                while (cursor.hasNext()) {
                    byte[] key = cursor.next();
                    binaryKeys.add(key);
                    System.out.println(new String(key, StandardCharsets.UTF_8));
                }

                try {
                    cursor.close();
                } catch (IOException e) {
                    // do something meaningful
                }

                return binaryKeys;
            }
        });
    }

Atas ialah kandungan terperinci Mari kita bincangkan tentang operasi imbasan redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Artikel ini dikembalikan pada:segmentfault.com. Jika ada pelanggaran, sila hubungi admin@php.cn Padam