欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

解決spring中redistemplate不能用通配符keys查出相應Key的問題

 更新時間:2020年11月24日 09:45:08   作者:大樹葉  
這篇文章主要介紹了解決spring中redistemplate不能用通配符keys查出相應Key的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

有個業(yè)務中需要刪除某個前綴的所有Redis緩存,于是用RedisTemplate的keys方法先查出所有合適的key,再遍歷刪除。

但是在keys(patten+"*")時每次取出的都為空。

解決問題:

spring中redis配置中,引入StringRedisTemplate而不是RedisTemplate,StringRedisTemplate本身繼承自RedisTemplate,

<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<property name="connectionFactory" ref="connectionFactory" />
</bean>

改為

<bean id="redisTemplate" class="org.springframework.data.redis.core.StringRedisTemplate">
<property name="connectionFactory" ref="connectionFactory" />
</bean>

補充知識:RedisTemplate使用SCAN命令掃描key替代KEYS避免redis服務器阻塞,無坑!完美解決方案

先來鄙視下博客上很多人不懂瞎幾把亂說還有大量轉載誤導群眾,本文原創(chuàng)親自驗證方案。

話不多說先上代碼,拿走即用。

long start = System.currentTimeMillis();
 //需要匹配的key
 String patternKey = "pay:*";
 ScanOptions options = ScanOptions.scanOptions()
  //這里指定每次掃描key的數(shù)量(很多博客瞎說要指定Integer.MAX_VALUE,這樣的話跟 keys有什么區(qū)別?)
  .count(10000)
  .match(patternKey).build();
 RedisSerializer<String> redisSerializer = (RedisSerializer<String>) redisTemplate.getKeySerializer();
 Cursor cursor = (Cursor) redisTemplate.executeWithStickyConnection(redisConnection -> new ConvertingCursor<>(redisConnection.scan(options), redisSerializer::deserialize));
 List<String> result = new ArrayList<>();
 while(cursor.hasNext()){
  result.add(cursor.next().toString());
 }
 //切記這里一定要關閉,否則會耗盡連接數(shù)。報Cannot get Jedis connection; nested exception is redis.clients.jedis.exceptions.JedisException: Could not get a 
 cursor.close();
 log.info("scan掃描共耗時:{} ms key數(shù)量:{}",System.currentTimeMillis()-start,result.size());

以上這篇解決spring中redistemplate不能用通配符keys查出相應Key的問題就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關文章

  • Java用鄰接表存儲圖的示例代碼

    Java用鄰接表存儲圖的示例代碼

    鄰接表是圖的一種鏈式存儲方法,其數(shù)據(jù)結構包括兩部分:節(jié)點和鄰接點。本文將用鄰接表實現(xiàn)存儲圖,感興趣的小伙伴可以了解一下
    2022-06-06
  • 詳解java中的四種代碼塊

    詳解java中的四種代碼塊

    這篇文章主要介紹了詳解java中的四種代碼塊,具有一定借鑒價值,需要的朋友可以參考下。
    2017-12-12
  • Java實現(xiàn)批量修改txt文件名稱的方法示例

    Java實現(xiàn)批量修改txt文件名稱的方法示例

    這篇文章主要介紹了Java實現(xiàn)批量修改txt文件名稱的方法,結合實例形式分析了Java針對目錄文件遍歷及文件讀寫、屬性操作等相關實現(xiàn)技巧,需要的朋友可以參考下
    2019-03-03
  • Mybatis執(zhí)行Update返回行數(shù)為負數(shù)的問題

    Mybatis執(zhí)行Update返回行數(shù)為負數(shù)的問題

    這篇文章主要介紹了Mybatis執(zhí)行Update返回行數(shù)為負數(shù)的問題,具有很好的參考價值,希望大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-12-12
  • Java根據(jù)開始時間和結束時間及周幾計算日期的示例代碼

    Java根據(jù)開始時間和結束時間及周幾計算日期的示例代碼

    在Java 7中,java.time包不存在,所以我們需要使用java.util.Calendar和java.util.Date類來實現(xiàn)類似的功能,這篇文章主要介紹了Java根據(jù)開始時間和結束時間及周幾計算出日期的示例代碼,需要的朋友可以參考下
    2024-06-06
  • 淺談Java中的final關鍵字與C#中的const, readonly關鍵字

    淺談Java中的final關鍵字與C#中的const, readonly關鍵字

    下面小編就為大家?guī)硪黄獪\談Java中的final關鍵字與C#中的const, readonly關鍵字。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2016-10-10
  • SpringBoot配置動態(tài)數(shù)據(jù)源的實戰(zhàn)詳解

    SpringBoot配置動態(tài)數(shù)據(jù)源的實戰(zhàn)詳解

    Spring對數(shù)據(jù)源的管理類似于策略模式,不懂策略模式也沒關系,其實就是有一個全局的鍵值對,類型是Map<String, DataSource>,當JDBC操作數(shù)據(jù)庫之時,會根據(jù)不同的key值選擇不同的數(shù)據(jù)源,本文介紹了SpringBoot配置動態(tài)數(shù)據(jù)源的方法,需要的朋友可以參考下
    2024-08-08
  • Java object類及正則表達式原理解析

    Java object類及正則表達式原理解析

    這篇文章主要介紹了Java object類及正則表達式原理解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-07-07
  • Java Spring AOP詳解

    Java Spring AOP詳解

    這篇文章主要介紹了Java的Spring框架中的AOP實現(xiàn)實例,AOP面向切面編程其實也可以被看作是一個設計模式去規(guī)范項目的結構,需要的朋友可以參考下
    2021-09-09
  • mybatis新增到數(shù)據(jù)庫后返回當前ID問題

    mybatis新增到數(shù)據(jù)庫后返回當前ID問題

    這篇文章主要介紹了mybatis新增到數(shù)據(jù)庫后返回當前ID問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08

最新評論