您好,登錄后才能下訂單哦!
這篇文章主要介紹“redis怎么獲取所有key”,在日常操作中,相信很多人在redis怎么獲取所有key問題上存在疑惑,小編查閱了各式資料,整理出簡單好用的操作方法,希望對大家解答”redis怎么獲取所有key”的疑惑有所幫助!接下來,請跟著小編一起來學習吧!
keys:全量遍歷鍵,用來列出所有滿足特定正則字符串規則的key,假設redis此時正在生產環境下,使用該命令就會造成隱患,當redis數據量比較大時:
keys會一次性返回所有符合條件的key,所以會造成redis的卡頓。
SCAN是一個基于游標的迭代器,需要基于上一次的游標延續之前的迭代過程。SCAN以0作為游標,開始一次新的迭代,直到命令返回游標0完成一次遍歷。
此命令并不保證每次執行都返回某個給定數量的元素,甚至會返回0個元素,但只要游標不是0,程序都不會認為SCAN命令結束,但是返回的元素數量大概率符合count參數。另外,SCAN支持模糊查詢。
1.keys cmos-cache包
redisCacheService.keys(String pattern);
2.scan方法
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; }
到此,關于“redis怎么獲取所有key”的學習就結束了,希望能夠解決大家的疑惑。理論與實踐的搭配能更好的幫助大家學習,快去試試吧!若想繼續學習更多相關知識,請繼續關注億速云網站,小編會繼續努力為大家帶來更多實用的文章!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。