spring redis 如何實現(xiàn)模糊查找key
更新時間:2021年08月10日 15:52:03 作者:路過君_P
這篇文章主要介紹了spring redis 如何實現(xiàn)模糊查找key的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
spring redis 模糊查找key
用法
Set<String> keySet = stringRedisTemplate.keys("keyprefix:"+"*");
- 需要使用StringRedisTemplate,或自定義keySerializer為StringRedisSerializer的redisTemplate
- redis里模糊查詢key允許使用的通配符:
* 任意多個字符
? 單個字符
[] 括號內(nèi)的某1個字符
源碼
org.springframework.data.redis.core.RedisTemplate public Set<K> keys(K pattern) { byte[] rawKey = rawKey(pattern); Set<byte[]> rawKeys = execute(connection -> connection.keys(rawKey), true); return keySerializer != null ? SerializationUtils.deserialize(rawKeys, keySerializer) : (Set<K>) rawKeys; }
改善
- Redis2.8以后可以使用scan獲取key
- 基于游標迭代分次遍歷key,不會一次性掃描所有key導(dǎo)致性能消耗過大,減少服務(wù)器阻塞
可以通過count參數(shù)設(shè)置掃描的范圍
Set<String> keys = new LinkedHashSet<>(); stringRedisTemplate.execute((RedisConnection connection) -> { try (Cursor<byte[]> cursor = connection.scan( ScanOptions.scanOptions() .count(Long.MAX_VALUE) .match(pattern) .build() )) { cursor.forEachRemaining(item -> { keys.add(RedisSerializer.string().deserialize(item)); }); return null; } catch (Exception e) { throw new RuntimeException(e); } });
redis-redisTemplate模糊匹配刪除
String key = "noteUserListenedPoi:*"; redisTemplate.delete(key); LOGGER.info("redis中用戶收聽歷史被清空");
后來測試發(fā)現(xiàn)模糊查詢是可以用的, 刪除改成
Set<String> keys = redisTemplate.keys("noteUserListenedPoi:" + "*"); redisTemplate.delete(keys); LOGGER.info("{}, redis中用戶收聽歷史被清空"
以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
Java設(shè)計模式之命令模式CommandPattern詳解
這篇文章主要介紹了Java設(shè)計模式之命令模式CommandPattern詳解,命令模式是把一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數(shù)化;對請求排隊或記錄請求日志,以及支持可撤銷的操作,需要的朋友可以參考下2023-10-10使用CI/CD工具Github Action發(fā)布jar到Maven中央倉庫的詳細介紹
今天通過對Github Action的簡單使用來介紹了CI/CD的作用,這個技術(shù)體系是項目集成交付的趨勢,也是面試中的一個亮點技能。 而且這種方式可以實現(xiàn)“一次配置,隨時隨地集成部署”,感興趣的朋友一起看看吧2021-07-07Java 實戰(zhàn)項目錘煉之醫(yī)院門診收費管理系統(tǒng)的實現(xiàn)流程
讀萬卷書不如行萬里路,只學(xué)書上的理論是遠遠不夠的,只有在實戰(zhàn)中才能獲得能力的提升,本篇文章手把手帶你用java+html+jdbc+mysql實現(xiàn)一個醫(yī)院門診收費管理系統(tǒng),大家可以在過程中查缺補漏,提升水平2021-11-11新手入門學(xué)習(xí)Spring Freemarker教程解析
這篇文章主要介紹了新手入門學(xué)習(xí)Freemarker教程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下2020-10-10SpringBoot+MyBatisPlus中樂觀鎖的實現(xiàn)示例
樂觀鎖是一種用于解決并發(fā)沖突的機制,在數(shù)據(jù)庫中用于保護數(shù)據(jù)的一致性,本文主要介紹了SpringBoot+MyBatisPlus中樂觀鎖的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下2023-08-08