龙泉驿区建设局网站,wordpress多合一seo包,深圳做网站d公司,公司网站建设改版SpringBoot 监听Redis key过期回调
场景
Spring boot实现监听Redis key失效事件可应对某些场景例如#xff1a;处理订单过期自动取消、用户会员到期… 开启Redis键过期回调通知 Redis默认是没有开启键过期监听功能的#xff0c;需要手动在配置文件中修改。Linux操作系统 修…SpringBoot 监听Redis key过期回调
场景
Spring boot实现监听Redis key失效事件可应对某些场景例如处理订单过期自动取消、用户会员到期… 开启Redis键过期回调通知 Redis默认是没有开启键过期监听功能的需要手动在配置文件中修改。Linux操作系统 修改redis安装目录下的redis.conf配置文件然后找到notify-keyspace-events Ex这行代码默认是注释掉的取消注释即可(即删除掉前面的#)。也有一种情况是没有这一行的这种情况下直接把这一行添加上去即可。然后重启redis。 Windows操作系统 在安装目录下找到redis.windows.conf和redis.windows-service.conf两个文件然后分别修改这两个文件中的notify-keyspace-events Ex字段取消注释即可。然后重启redisWindows重启命令为redis-server.exe --service-start。 Java代码实现监听回调
添加Redis键过期监听配置
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;/*** Description: redis 回调监听配置类* 1。需要打开redis.conf配置类打开回调监听配置 #开启key 过期回调监听 notify-keyspace-events Ex* 2。编写回调监听配置类RedisListenerConfig* 3。重写失效回调方法 RedisKeyExpirationListerner**/Configuration
public class RedisListenerConfig {BeanRedisMessageListenerContainer container(RedisConnectionFactory factory){RedisMessageListenerContainer containernew RedisMessageListenerContainer();container.setConnectionFactory(factory);return container;}
}
创建监听类
import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;
import org.springframework.stereotype.Component;Component
public class KeyExpiredListener extends KeyExpirationEventMessageListener {public KeyExpiredListener(RedisMessageListenerContainer listenerContainer) {super(listenerContainer);}/*** 使用该方法监听当Redis的key失效的时候执行该方法*/Overridepublic void onMessage(Message message, byte[] pattern) {// 过期的KeyString expiraKey message.toString();System.out.println(该Key已失效expiraKey);}}
3.指定Redis的 key 设置值及其过期时间
Redis Setex 命令为指定的 key 设置值及其过期时间。如果 key 已经存在 SETEX 命令将会替换旧的值。