亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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);
    }
});

Reids SCAN命令官方文檔

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詳解

    這篇文章主要介紹了Java設(shè)計模式之命令模式CommandPattern詳解,命令模式是把一個請求封裝為一個對象,從而使你可用不同的請求對客戶進行參數(shù)化;對請求排隊或記錄請求日志,以及支持可撤銷的操作,需要的朋友可以參考下
    2023-10-10
  • 使用CI/CD工具Github Action發(fā)布jar到Maven中央倉庫的詳細介紹

    使用CI/CD工具Github Action發(fā)布jar到Maven中央倉庫的詳細介紹

    今天通過對Github Action的簡單使用來介紹了CI/CD的作用,這個技術(shù)體系是項目集成交付的趨勢,也是面試中的一個亮點技能。 而且這種方式可以實現(xiàn)“一次配置,隨時隨地集成部署”,感興趣的朋友一起看看吧
    2021-07-07
  • Java實現(xiàn)簡單的socket通信教程

    Java實現(xiàn)簡單的socket通信教程

    這篇文章主要介紹了Java實現(xiàn)簡單的socket通信教程,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-12-12
  • SpringBoot日志配置簡單介紹

    SpringBoot日志配置簡單介紹

    這篇文章主要介紹了SpringBoot日志配置,需要的朋友可以參考下
    2017-09-09
  • Java 實戰(zhàn)項目錘煉之醫(yī)院門診收費管理系統(tǒng)的實現(xiàn)流程

    Java 實戰(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í)Spring Freemarker教程解析

    這篇文章主要介紹了新手入門學(xué)習(xí)Freemarker教程解析,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友可以參考下
    2020-10-10
  • Java動態(tài)代理分析及理解

    Java動態(tài)代理分析及理解

    這篇文章主要介紹了Java動態(tài)代理分析及理解的相關(guān)資料,需要的朋友可以參考下
    2017-05-05
  • SpringBoot+MyBatisPlus中樂觀鎖的實現(xiàn)示例

    SpringBoot+MyBatisPlus中樂觀鎖的實現(xiàn)示例

    樂觀鎖是一種用于解決并發(fā)沖突的機制,在數(shù)據(jù)庫中用于保護數(shù)據(jù)的一致性,本文主要介紹了SpringBoot+MyBatisPlus中樂觀鎖的實現(xiàn)示例,具有一定的參考價值,感興趣的可以了解一下
    2023-08-08
  • Java中MapStruct的使用詳解

    Java中MapStruct的使用詳解

    這篇文章主要介紹了Java中MapStruct的使用詳解,mapstruct,全稱是org.mapstruct.Mapper, 是將接口或抽象類標記為映射器,并通過MapStruct為這個接口或者抽象類生成一個實現(xiàn)類,大大簡化了Java bean類型之間轉(zhuǎn)換,需要的朋友可以參考下
    2023-09-09
  • Spring5使用JSR 330標準注解的方法

    Spring5使用JSR 330標準注解的方法

    從Spring3.0之后,除了Spring自帶的注解,我們也可以使用JSR330的標準注解,本文主要介紹了Spring5使用JSR 330標準注解,感興趣的可以了解一下
    2021-09-09

最新評論