使用redisTemplate的scan方式刪除批量key問題
redisTemplate的scan方式刪除批量key
/**
* 刪除指定前綴的一系列key
*
* @param pattern 匹配keys的規(guī)則
*/
public void deleteKeysByScan(String pattern) {
long start = System.currentTimeMillis();
LOGGER.error("清理{}類外呼記錄緩存的定時任務(wù)開始執(zhí)行", pattern);
String param = pattern + "*";
Set<String> keys = this.getValuesForStringByScan(param);
redisTemplate.delete(keys);
LOGGER.error("清理{}類外呼記錄緩存的定時任務(wù)執(zhí)行結(jié)束,耗時:{}", pattern, (System.currentTimeMillis() - start));
}
/**
* 獲取匹配的所有key,使用scan避免阻塞
*
* @param patten 匹配keys的規(guī)則
* @return 返回獲取到的keys
*/
public Set<String> getValuesForStringByScan(String patten) {
return redisTemplate.execute(connect -> {
Set<String> binaryKeys = new HashSet<>();
Cursor<byte[]> cursor = connect.scan(new ScanOptions.ScanOptionsBuilder().match(patten).count(200000).build());
while (cursor.hasNext() && binaryKeys.size() < 200000) {
binaryKeys.add(new String(cursor.next()));
}
return binaryKeys;
}, true);
}
Java使用RedisTemplate模糊刪除key
Redis模糊匹配批量刪除操作,使用RedisTemplate操作:
public void deleteByPrex(String prex) {
Set<String> keys = redisTemplate.keys(prex);
if (CollectionUtils.isNotEmpty(keys)) {
redisTemplate.delete(keys);
}
}prex為迷糊匹配的key,如cache:user:*
這里需要判斷keys是否存在,如果一個都匹配不到會報錯:
ERR wrong number of arguments for 'del' command
當(dāng)然,如果要直接在linux里面操作的話,在命令行執(zhí)行以下命令:
redis-cli keys "keys" | xargs redis-cli del
keys 是要匹配的規(guī)則,和上面的prex一樣。
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
- redis redistemplate序列化對象配置方式
- 配置redis的序列化,注入RedisTemplate方式
- 解讀RedisTemplate的各種操作(set、hash、list、string)
- Redis Template使用詳解示例教程
- RedisTemplate批量操作工具類性能測試
- redistemplate下opsForHash操作示例
- 解決redisTemplate向redis中插入String類型數(shù)據(jù)時出現(xiàn)亂碼問題
- 解決RedisTemplate存儲至緩存數(shù)據(jù)出現(xiàn)亂碼的情況
- reids自定義RedisTemplate以及亂碼問題解決
相關(guān)文章
java隨機(jī)驗(yàn)證碼生成實(shí)現(xiàn)實(shí)例代碼
這篇文章主要介紹了java隨機(jī)驗(yàn)證碼生成實(shí)現(xiàn)實(shí)例代碼的相關(guān)資料,需要的朋友可以參考下2017-05-05
Java 可視化垃圾回收_動力節(jié)點(diǎn)Java學(xué)院整理
Ben Evans是一名資深培訓(xùn)師兼顧問,他在演講可視化垃圾回收中從基礎(chǔ)談起討論了垃圾回收。以下是對其演講的簡短總結(jié)。感興趣的朋友一起學(xué)習(xí)吧2017-05-05
Java實(shí)現(xiàn)圖片上傳至FastDFS入門教程
這篇文章主要介紹了Java實(shí)現(xiàn)圖片上傳至FastDFS入門教程,通過前端ajax提交圖片到后端,java處理服務(wù)器文件上傳至FastDFS文件服務(wù)器系統(tǒng),以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下2021-07-07
java將文件轉(zhuǎn)成流文件返回給前端詳細(xì)代碼實(shí)例
Java編程語言提供了強(qiáng)大的文件處理和壓縮能力,下面這篇文章主要給大家介紹了關(guān)于java將文件轉(zhuǎn)成流文件返回給前端的相關(guān)資料,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2024-07-07
Java中InputStream重復(fù)使用問題的幾種解決方案
在Java開發(fā)中,InputStream是用于讀取字節(jié)流的類,在許多場景下,我們可能需要重復(fù)讀取InputStream中的數(shù)據(jù),這篇文章主要介紹了Java中InputStream重復(fù)使用問題的幾種解決方案,需要的朋友可以參考下2025-08-08
SpringBoot整合Zookeeper實(shí)現(xiàn)分布式鎖的具體步驟
在 Spring Boot 中實(shí)現(xiàn)分布式鎖通常可以利用 ZooKeeper 來實(shí)現(xiàn),以下是整合 Spring Boot 和 ZooKeeper 實(shí)現(xiàn)分布式鎖的基本步驟,需要的朋友可以參考下2025-11-11
數(shù)據(jù)定位在java購物車系統(tǒng)中的應(yīng)用
實(shí)現(xiàn)"加入購物車"功能,數(shù)據(jù)定位至關(guān)重要,它通過用戶ID和商品ID等標(biāo)識符實(shí)現(xiàn)快速查詢和數(shù)據(jù)一致性,主鍵、外鍵和聯(lián)合索引等數(shù)據(jù)庫技術(shù),以及Redis緩存和并發(fā)控制策略如樂觀鎖或分布式鎖,共同保障了購物車系統(tǒng)的查詢效率和數(shù)據(jù)安全,這些機(jī)制對高并發(fā)和大數(shù)據(jù)量的場景尤為重要2024-10-10
QTabWidget標(biāo)簽實(shí)現(xiàn)雙擊關(guān)閉的方法(推薦)
這篇文章主要介紹了QTabWidget標(biāo)簽實(shí)現(xiàn)雙擊關(guān)閉的方法(推薦)的相關(guān)資料,非常不錯,具有參考借鑒價值,需要的朋友可以參考下2016-06-06

