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

SpringBoot 監(jiān)聽(tīng)Redis鍵過(guò)期事件(過(guò)期監(jiān)聽(tīng))

 更新時(shí)間:2024年12月24日 10:54:03   作者:生產(chǎn)隊(duì)的驢.  
Redis鍵過(guò)期事件是SpringBoot中常用的緩存失效通知方式,通過(guò)配置可以監(jiān)聽(tīng)特定鍵的過(guò)期事件,具有一定的參考價(jià)值,感興趣的可以了解一下

介紹

Redis 鍵過(guò)期事件是 Redis 中非常有用的功能,可以在鍵過(guò)期時(shí)觸發(fā)事件通知。這對(duì)于緩存失效、會(huì)話管理、定時(shí)任務(wù)等場(chǎng)景非常有用。

Redis配置

Redis 默認(rèn)是沒(méi)有啟用鍵過(guò)期事件通知的,你需要通過(guò)配置來(lái)啟用這個(gè)功能??梢酝ㄟ^(guò)修改 redis.conf 文件或者使用 CONFIG SET 命令來(lái)啟用鍵過(guò)期事件通知。

notify-keyspace-events Ex

依賴

<!--        操作redis-->
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

配置文件

spring:
  redis:
    host: localhost
    port: 6379
    #password: 用的本機(jī)的redis,并且我沒(méi)有設(shè)置redis密碼
    database: 0
    lettuce:
      pool:
        # 最大阻塞等待時(shí)間,負(fù)數(shù)表示沒(méi)有限制
        max-wait: -1
        # 連接池中的最大空閑連接
        max-idle: 5
        # 連接池中的最小空閑連接
        min-idle: 0
        # 連接池中最大連接數(shù),負(fù)數(shù)表示沒(méi)有限制

寫(xiě)入鍵

@RestController
@RequiredArgsConstructor
public class BasicController {
    private final StringRedisTemplate stringRedisTemplate;
    @GetMapping("/hello")
    public String hello() {
        // 設(shè)置鍵值對(duì),并指定過(guò)期時(shí)間為 10 秒
        stringRedisTemplate.opsForValue().set("product:123", "dpc", Duration.ofSeconds(5));
        // 獲取值
        String str = stringRedisTemplate.opsForValue().get("name");
        System.out.println("Value: " + str);
        return str;
    }
}

配置監(jiān)聽(tīng)器

@Configuration
public class RedisListenerConfig {

    @Bean
    public RedisMessageListenerContainer redisMessageListenerContainer(RedisConnectionFactory connectionFactory) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        return container;
    }

    @Bean
    public OrderKeyExpirationListener orderKeyExpirationListener(RedisMessageListenerContainer container) {
        // 配置監(jiān)聽(tīng)器只監(jiān)聽(tīng) `order:*` 鍵
        OrderKeyExpirationListener listener = new OrderKeyExpirationListener(container);
        container.addMessageListener(listener, new ChannelTopic("__keyevent@0__:expired"));
        return listener;
    }

    @Bean
    public SessionKeyExpirationListener sessionKeyExpirationListener(RedisMessageListenerContainer container) {
        // 配置監(jiān)聽(tīng)器只監(jiān)聽(tīng) `session:*` 鍵
        SessionKeyExpirationListener listener = new SessionKeyExpirationListener(container);
        container.addMessageListener(listener, new ChannelTopic("__keyevent@0__:expired"));
        return listener;
    }

    @Bean
    public ProductKeyExpirationListener productKeyExpirationListener(RedisMessageListenerContainer container) {
        // 配置監(jiān)聽(tīng)器只監(jiān)聽(tīng) `product:*` 鍵
        ProductKeyExpirationListener listener = new ProductKeyExpirationListener(container);
        container.addMessageListener(listener, new ChannelTopic("__keyevent@0__:expired"));
        return listener;
    }


}

按KEY監(jiān)聽(tīng)

監(jiān)聽(tīng)session鍵

@Slf4j
public class SessionKeyExpirationListener extends KeyExpirationEventMessageListener {

    public SessionKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
        super(listenerContainer);
    }

    @Override
    public void onMessage(Message message, byte[] pattern) {
        String key = message.toString();
        if (key.startsWith("session:")) {
            log.info("會(huì)話【" + key + "】已過(guò)期");
            // 處理會(huì)話超時(shí)的邏輯
        }
    }
}

監(jiān)聽(tīng)product鍵

@Slf4j
public class ProductKeyExpirationListener extends KeyExpirationEventMessageListener {
    public ProductKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
        super(listenerContainer);
    }
    @Override
    public void onMessage(Message message, byte[] pattern) {
        String key = message.toString();
        if (key.startsWith("product:")) {
            log.info("產(chǎn)品【" + key + "】已過(guò)期");
            // 處理產(chǎn)品相關(guān)的超時(shí)邏輯
        }
    }
}

監(jiān)聽(tīng)order鍵

public class OrderKeyExpirationListener extends KeyExpirationEventMessageListener {

    public OrderKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
        super(listenerContainer);
    }
    @Override
    public void onMessage(Message message, byte[] pattern) {
        String key = message.toString();
        System.out.println(123);
        if (key.startsWith("order:")) {
            // 處理訂單相關(guān)的超時(shí)邏輯
        }
    }
}

到此這篇關(guān)于SpringBoot 監(jiān)聽(tīng)Redis鍵過(guò)期事件(過(guò)期監(jiān)聽(tīng))的文章就介紹到這了,更多相關(guān)SpringBoot 監(jiān)聽(tīng)Redis過(guò)期內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家! 

相關(guān)文章

  • C語(yǔ)言實(shí)現(xiàn)矩陣運(yùn)算案例詳解

    C語(yǔ)言實(shí)現(xiàn)矩陣運(yùn)算案例詳解

    這篇文章主要介紹了C語(yǔ)言實(shí)現(xiàn)矩陣運(yùn)算案例詳解,本篇文章通過(guò)簡(jiǎn)要的案例,講解了該項(xiàng)技術(shù)的了解與使用,以下就是詳細(xì)內(nèi)容,需要的朋友可以參考下
    2021-08-08
  • MyBatis多表關(guān)聯(lián)查詢的實(shí)現(xiàn)示例

    MyBatis多表關(guān)聯(lián)查詢的實(shí)現(xiàn)示例

    本文主要介紹了MyBatis多表關(guān)聯(lián)查詢的實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-03-03
  • Springboot如何獲取上下文ApplicationContext

    Springboot如何獲取上下文ApplicationContext

    這篇文章主要介紹了Springboot如何獲取上下文ApplicationContext,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-11-11
  • RocketMQ生產(chǎn)者一個(gè)應(yīng)用不能發(fā)送多個(gè)NameServer消息解決

    RocketMQ生產(chǎn)者一個(gè)應(yīng)用不能發(fā)送多個(gè)NameServer消息解決

    這篇文章主要為大家介紹了RocketMQ生產(chǎn)者一個(gè)應(yīng)用不能發(fā)送多個(gè)NameServer消息原因及解決方法詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-11-11
  • Java防止短信盜刷和轟炸的解決方案

    Java防止短信盜刷和轟炸的解決方案

    短信盜刷和短信轟炸是項(xiàng)目開(kāi)發(fā)中必須要解決的問(wèn)題之一,它的優(yōu)先級(jí)不亞于 SQL 注入的問(wèn)題,今天我們就來(lái)看下,如何防止這個(gè)問(wèn)題,需要的朋友可以參考下
    2024-02-02
  • mybatis-plus數(shù)據(jù)權(quán)限實(shí)現(xiàn)代碼

    mybatis-plus數(shù)據(jù)權(quán)限實(shí)現(xiàn)代碼

    這篇文章主要介紹了mybatis-plus數(shù)據(jù)權(quán)限實(shí)現(xiàn),結(jié)合了mybatis-plus的插件方式,做出了自己的注解方式的數(shù)據(jù)權(quán)限,雖然可能存在一部分的局限性,但很好的解決了我們自己去解析SQL的功能,需要的朋友可以參考下
    2023-06-06
  • Java如何實(shí)現(xiàn)調(diào)用外部Api

    Java如何實(shí)現(xiàn)調(diào)用外部Api

    這篇文章主要介紹了Java如何實(shí)現(xiàn)調(diào)用外部Api問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • 基于JPA實(shí)體類監(jiān)聽(tīng)器@EntityListeners注解的使用實(shí)例

    基于JPA實(shí)體類監(jiān)聽(tīng)器@EntityListeners注解的使用實(shí)例

    這篇文章主要介紹了JPA實(shí)體類監(jiān)聽(tīng)器@EntityListeners注解的使用實(shí)例,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-08-08
  • JDBC連接MySQL并實(shí)現(xiàn)模糊查詢

    JDBC連接MySQL并實(shí)現(xiàn)模糊查詢

    本文詳細(xì)講解了JDBC連接MySQL并實(shí)現(xiàn)模糊查詢的方式,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-01-01
  • javz筆記之:有趣的靜態(tài)方法的使用

    javz筆記之:有趣的靜態(tài)方法的使用

    本篇文章介紹了,java中靜態(tài)方法的使用介紹,需要的朋友參考下
    2013-04-04

最新評(píng)論