话不多说,直接上干货
官方文档:https://redis.io/documentation
1.首先引入pom依赖
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2.业务代码中设置redis的key和过期时间
//获取redisTemplate
@Resource
private RedisTemplate redisTemplate;
//接口中使用
redisTemplate.boundValueOps("key").set("value", "时间数值", "时间单位");
//时间单位可以输入TimeUnit.跟据自动提示弹出的选项,查询自己需要的单位
3.新增RedisKeyExpirationListener.java,监听过期事件
package com.uwooz.listener;
import com.uwooz.constant.BasicConstant;
import com.uwooz.service.TestService;
import io.lettuce.core.RedisClient;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import javax.annotation.Resource;
/**
* redis缓存过期监听
*/
public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
private final static Logger logger = LoggerFactory.getLogger(RedisKeyExpirationListener.class);
@Autowired
private RedisClient redisClient;
@Autowired
private TestService testService;
public RedisKeyExpirationListener(RedisMessageListenerContainer listenerContainer) {
super(listenerContainer);
}
@Override
public void onMessage(Message message, byte[] pattern) {
// 用户做自己的业务处理即可,注意message.toString()可以获取失效的key
String expiredKey = message.toString();
//判断是否属于自己第二步设置的key
if (expiredKey.equals("第二步设置的key")) {
//处理自己的业务即可
}
//友情建议,可以在设置key的时候采用固定"key"和value拼接的形式,设置动态key
//在判断条件中使用包含的判断方法,方法内部使用截取key的方式获取value
// demo:
// if (expiredKey.contains("key")) {
// String value= expiredKey.substring("自己的条件");
// }
}
}
PS: 快乐记录每一个遇到的问题,理论知识可以www.baidu.com哦