redis獲取所有key的方法
keys:全量遍歷鍵,用來(lái)列出所有滿足特定正則字符串規(guī)則的key,假設(shè)redis此時(shí)正在生產(chǎn)環(huán)境下,使用該命令就會(huì)造成隱患,當(dāng)redis數(shù)據(jù)量比較大時(shí):
keys會(huì)一次性返回所有符合條件的key,所以會(huì)造成redis的卡頓。
SCAN是一個(gè)基于游標(biāo)的迭代器,需要基于上一次的游標(biāo)延續(xù)之前的迭代過(guò)程。SCAN以0作為游標(biāo),開(kāi)始一次新的迭代,直到命令返回游標(biāo)0完成一次遍歷。
此命令并不保證每次執(zhí)行都返回某個(gè)給定數(shù)量的元素,甚至?xí)祷?個(gè)元素,但只要游標(biāo)不是0,程序都不會(huì)認(rèn)為SCAN命令結(jié)束,但是返回的元素?cái)?shù)量大概率符合count參數(shù)。另外,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查詢參數(shù) ScanParams param = new ScanParams().match(match).count(count); //獲取查詢對(duì)象 RedisCacheServiceImpl redisCacheSer = (RedisCacheServiceImpl)RedisCacheService; JedisCluster jedisClu = redisCacheSer.getJedisCluster(); //getClueterNodes獲取集群節(jié)點(diǎn),從各個(gè)集群中獲取值進(jìn)行遍歷 jedisClu.getClusterNodes().values().stream().forEach(pool->{ boolean done = false;// String cur = "0";//游標(biāo),以0開(kāi)始,返回0代表一次結(jié)束 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; }
到此這篇關(guān)于redis獲取所有key的方法的文章就介紹到這了,更多相關(guān)redis獲取所有key內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Redis數(shù)據(jù)類型string和Hash詳解
大家都知道Redis中有五大數(shù)據(jù)類型分別是String、List、Set、Hash和Zset,本文給大家分享Redis數(shù)據(jù)類型string和Hash的相關(guān)操作,感興趣的朋友跟隨小編一起看看吧2022-03-03使用高斯Redis實(shí)現(xiàn)二級(jí)索引的方法
本文介紹了如何通過(guò)高斯Redis搭建二級(jí)索引,二級(jí)索引在電商、圖(hexastore)、游戲等領(lǐng)域具有廣泛的應(yīng)用場(chǎng)景,高斯redis現(xiàn)網(wǎng)亦有很多類似應(yīng)用,需要的朋友跟隨小編一起看看吧2022-07-07Redis序列化轉(zhuǎn)換類型報(bào)錯(cuò)的解決
本文主要介紹了Redis序列化轉(zhuǎn)換類型報(bào)錯(cuò)的解決,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04Redis實(shí)現(xiàn)每周熱評(píng)的項(xiàng)目實(shí)踐
實(shí)時(shí)統(tǒng)計(jì)和展示熱門內(nèi)容是一種常見(jiàn)的需求,本文主要介紹了Redis實(shí)現(xiàn)每周熱評(píng)的項(xiàng)目實(shí)踐,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2024-03-03Win10下通過(guò)Ubuntu安裝Redis的過(guò)程
這篇文章主要介紹了Win10下通過(guò)Ubuntu安裝Redis,在安裝Ubuntu需要先打開(kāi)Windows功能,接著創(chuàng)建一個(gè)用戶及密碼,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下2022-04-04