已解决
监听redis过期业务处理
来自网友在路上 162862提问 提问时间:2023-11-05 12:56:02阅读次数: 62
最佳答案 问答题库628位专家为你答疑解惑
配置类:
package com.testimport org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cache.annotation.CachingConfigurerSupport;
import org.springframework.cache.annotation.EnableCaching;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.core.script.DefaultRedisScript;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.data.redis.serializer.StringRedisSerializer;/*** redis配置** @author saas*/
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport {@Autowiredprivate RedisConnectionFactory redisConnectionFactory;// 监听@Beanpublic RedisMessageListenerContainer redisMessageListenerContainer() {RedisMessageListenerContainer redisMessageListenerContainer = new RedisMessageListenerContainer();redisMessageListenerContainer.setConnectionFactory(redisConnectionFactory);return redisMessageListenerContainer;}// 序列化@Bean@SuppressWarnings(value = {"unchecked", "rawtypes"})public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory connectionFactory) {RedisTemplate<Object, Object> template = new RedisTemplate<>();template.setConnectionFactory(connectionFactory);FastJson2JsonRedisSerializer serializer = new FastJson2JsonRedisSerializer(Object.class);// 使用StringRedisSerializer来序列化和反序列化redis的key值template.setKeySerializer(new StringRedisSerializer());template.setValueSerializer(serializer);// Hash的key也采用StringRedisSerializer的序列化方式template.setHashKeySerializer(new StringRedisSerializer());template.setHashValueSerializer(serializer);template.afterPropertiesSet();return template;}
}
过期监听类
@Component
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {private final Logger logger = LoggerFactory.getLogger(this.getClass());@Resourceprivate RedisService redisService;/*** @param listenerContainer must not be {@literal null}.* listenerContainer 需要在配置类中加载*/public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {super(listenerContainer);}@Overridepublic void onMessage(Message message, byte[] pattern) {logger.info("过期key:" + message.toString());String key = message.toString();// 业务处理}}
查看全文
99%的人还看了
相似问题
- 【Django-DRF用法】多年积累md笔记,第3篇:Django-DRF的序列化和反序列化详解
- 【Java 进阶篇】JavaScript JSON 语法入门:轻松理解数据的序列化和反序列化
- 【python学习】基础篇-常用模块-pickle模块:序列化和反序列化
- c#Nettonsoft.net库常用的方法json序列化反序列化
- 什么是Java序列化,它有哪些重要性
- 快手直播弹幕websocket protobuf序列化与反序列化
- protobufjs实现protobuf序列化与反序列化
- C#解析XML并反序列化为Model的方法
- 【实战-08】flink 消费kafka自定义序列化
- 【漏洞复现】Apache Log4j Server 反序列化命令执行漏洞(CVE-2017-5645)
猜你感兴趣
版权申明
本文"监听redis过期业务处理":http://eshow365.cn/6-32711-0.html 内容来自互联网,请自行判断内容的正确性。如有侵权请联系我们,立即删除!