Rumah > pangkalan data > Redis > teks badan

Bagaimana untuk mendapatkan semua kunci dalam redis

PHPz
Lepaskan: 2023-05-28 15:40:21
ke hadapan
3527 orang telah melayarinya

Kunci: Kunci lintasan penuh, digunakan untuk menyenaraikan semua kunci yang memenuhi peraturan rentetan biasa tertentu dengan mengandaikan bahawa redis berada dalam persekitaran pengeluaran pada masa ini, menggunakan arahan ini akan menyebabkan bahaya tersembunyi apabila jumlah data redis agak besar :

kunci akan mengembalikan semua kunci yang layak sekaligus, jadi ia akan menyebabkan redis tersekat.

Imbasan iterator adalah berdasarkan kursor, dan kursor terakhir perlu digunakan untuk meneruskan proses lelaran sebelumnya. Menggunakan kursor 0 sebagai titik permulaan, lakukan operasi traversal baharu dan teruskan lelaran sehingga arahan kembali ke kursor 0 untuk melengkapkan keseluruhan traversal.

Arahan ini tidak menjamin bahawa setiap pelaksanaan akan mengembalikan bilangan elemen tertentu, malah mungkin mengembalikan 0 elemen, tetapi selagi kursor bukan 0, program tidak akan menganggap perintah SCAN telah tamat , tetapi elemen yang dikembalikan Kuantiti berkemungkinan sepadan dengan parameter kiraan. Selain itu, SCAN menyokong pertanyaan kabur.

1.keys cmos-cache package

redisCacheService.keys(String pattern);
Salin selepas log masuk

2.kaedah imbasan

public static Set<String> getAllKey(String match,int count){
    //返回集
    Set<String> binKeys = new HashSet<>();
    //封装scan查询参数
    ScanParams param = new ScanParams().match(match).count(count);
    //获取查询对象
    RedisCacheServiceImpl redisCacheSer = (RedisCacheServiceImpl)RedisCacheService;
    JedisCluster jedisClu = redisCacheSer.getJedisCluster();
//getClueterNodes获取集群节点,从各个集群中获取值进行遍历
    jedisClu.getClusterNodes().values().stream().forEach(pool->{
        boolean done = false;//
        String cur = "0";//游标,以0开始,返回0代表一次结束
        try(Jedis jedisNode = pool.getResource()){
            while(!done){
                ScanResult<String> scanResult = jedisNode.scan(cur,param);
                cur = scanResult.getStringCursor();
                if("0".equals(cur){done=true};
                List<String> result = scanResult.getResult();
                result.foreach(data->{binKeys.add(data)});
            }
        }
    });
    return binKeys;
}
Salin selepas log masuk

Atas ialah kandungan terperinci Bagaimana untuk mendapatkan semua kunci dalam redis. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Label berkaitan:
sumber:yisu.com
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan