Heim > Datenbank > Redis > Hauptteil

So erhalten Sie alle Schlüssel in Redis

PHPz
Freigeben: 2023-05-28 15:40:21
nach vorne
3524 Leute haben es durchsucht

keys: Vollständige Traverse-Schlüssel, die zum Auflisten aller Schlüssel verwendet werden, die bestimmte reguläre Zeichenfolgenregeln erfüllen. Unter der Annahme, dass sich Redis zu diesem Zeitpunkt in einer Produktionsumgebung befindet, führt die Verwendung dieses Befehls zu versteckten Gefahren:

keys gibt alle qualifizierten Schlüssel auf einmal zurück, sodass es zu Redis-Verzögerungen kommt.

Der SCAN-Iterator basiert auf dem Cursor, und der letzte Cursor muss verwendet werden, um den vorherigen Iterationsprozess fortzusetzen. Führen Sie unter Verwendung von Cursor 0 als Ausgangspunkt eine neue Durchlaufoperation durch und setzen Sie die Iteration fort, bis der Befehl zu Cursor 0 zurückkehrt, um den gesamten Durchlauf abzuschließen.

Dieser Befehl garantiert nicht, dass jede Ausführung eine bestimmte Anzahl von Elementen zurückgibt, und kann sogar 0 Elemente zurückgeben. Solange der Cursor jedoch nicht 0 ist, geht das Programm nicht davon aus, dass der SCAN-Befehl beendet wurde, sondern dass Die Anzahl der zurückgegebenen Elemente wird höchstwahrscheinlich mit dem Zählparameter übereinstimmen. Darüber hinaus unterstützt SCAN Fuzzy-Abfragen.

1.keys CMOS-Cache-Paket

redisCacheService.keys(String pattern);
Nach dem Login kopieren

2.Scan-Methode

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;
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonSo erhalten Sie alle Schlüssel in Redis. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:yisu.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage