redis的超时监听,只需修改配置文件redis.conf中的:
notify-keyspace-events
Ex
K 键空间通知,以__keyspace@<db>__为前缀
E 键事件通知,以__keysevent@<db>__为前缀
g del , expipre , rename 等类型无关的通用命令的通知, ...
$ String命令
l List命令
s Set命令
h Hash命令
z 有序集合命令
x 过期事件(每次key过期时生成)
e 驱逐事件(当key在内存满了被清除时生成)
A g$lshzxe的别名,因此”AKE”意味着所有的事件
新建一个配置类
@Configuration
public class RedisListenerConfig {
@Bean
RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory){
RedisMessageListenerContainer container = new RedisMessageListenerContainer();
container.setConnectionFactory(connectionFactory);
return container;
}
}
再新建一个监听器
@Slf4j
@Component
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
}
@Override
public void onMessage(Message message, byte[] pattern) {
String expKey = message.toString();
String date = new DateTime().toString("yyyy-MM-dd HH:mm:ss");
log.info("{}---该key(订单号):{} 失效了~", date, expKey);
log.info("业务代码执行结束...");
}
}
测试代码
@RequestMapping(value = "/addOrder", method = RequestMethod.GET)
public String addOrder(){
String orderId = UUID.randomUUID().toString().replace("-", "");
String date = new DateTime().toString("yyyy-MM-dd--HH:mm:ss");
redisUtils.set(orderId, date, 10);
return "在"+date+"下单成功,订单号:"+orderId;
}
测试
版权声明:本文为niuchenliang524原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。