开发者

redis key过期监听的实现示例

开发者 https://www.devze.com 2024-08-10 09:33 出处:网络 作者: 刘小僧
目录1、pom.XML文件中添加Redis依赖2、application.yml文件中添加redis相关配置3、redis配置类RedisConfig中注册Bean–RedisMessageListenerContainer4、自定义redis key过期监听器,继承KeyExhttp://www.devze
目录
  • 1、pom.XML文件中添加Redis依赖
  • 2、application.yml文件中添加redis相关配置
  • 3、redis配置类RedisConfig中注册Bean–RedisMessageListenerContainer
  • 4、自定义redis key过期监听器,继承KeyExhttp://www.devze.compirationEventMessageListener类

1、pom.xml文件中添加redis依赖

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

2、application.yml文件中添加redis相关配置

# redis 配置
redis:
  # 地址
  host: localhost
  # 端口,默认为6379
  port: 6379
  # 数据库索引
  database: 0
  # 密码
  password:
  # 连接超时时间
  timeout: 10s
  lettuce:
    pool:
      # 连接池中的最小空闲连接
      min-idle: 0
      # 连接池中的最大空闲连接
      max-idle: 8
      # 连接池的最大数据库连接数
      max-active: 8
      # #连接池最大阻塞等待时间(使用负值表示没有限制)
      max-wait: -1ms

3、redis配置类RedisConfig中注册Bean–RedisMessageListenerContainer

@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport
{
    
    /**
     * redis key 过期事件订阅需要
     * @param redisConnectionFactory
     * @return
     */
    @Bean
    public RedisMessageListenerContainer redisMessageListenerContainer(RedisConnectionFactory redisConnectionFactory) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(redisConnectionFactory);
        return container;
    }
}

4、自定义redis key过期监听器,继承KeyEwww.devze.comxpirationEventMessageListener类

@Component
public class RedisKeyExpirationListener extends KeyhmqyhTyExpirationEventMessageListener {

    @Autowired
    private StringRedisTemplate stringRedisTemplate;

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

    @Override
    public void onMessage(Message messaghmqyhTye, byte[] pattern) {
        //注意:只能获取失效的key值,获取不到key对应的value值的。
        String expireKey = message.toString();
        try {
            if (!StringUtils.isEmpty(expireKey)) {
            	//具体处理逻辑......
  编程          }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

 到此这篇关于redis key过期监听的解决方法的文章就介绍到这了,更多相关redis key过期监听内容请搜索编程客栈(www.devze.com)以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程客栈(www.devze.com)!

0

精彩评论

暂无评论...
验证码 换一张
取 消

关注公众号