java redis键值过期回调

  1. 在redis.conf 中修改 notify-keyspace-events Ex 这一行的注释打开

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;

@Configuration

public class RedisListenerConfig {
@Bean

RedisMessageListenerContainer container(RedisConnectionFactory connectionFactory) {
RedisMessageListenerContainer container = new RedisMessageListenerContainer();

container.setConnectionFactory(connectionFactory);

//container.addMessageListener(new RedisExpiredListener(), new PatternTopic("__keyevent@0__:expired"));

return container;

}

}
import com.mayikt.api.service.user.EduTempMemberService;

import com.mayikt.api.service.user.UserService;

import com.mayikt.entity.user.EduTempMember;

import org.apache.commons.lang3.StringUtils;

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 org.springframework.stereotype.Component;

@Component

public class RedisKeyExpirationListener extends KeyExpirationEventMessageListener {
@Autowired

private EduTempMemberService eduTempMemberService;

@Autowired

private UserService userService;

private final static Logger logger = LoggerFactory.getLogger(RedisKeyExpirationListener.class);

/* @Autowired

private RedisClient redisClient;*/

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

}

private final static String MAYIKT_REDIS_KEY="mayikt_member";

@Override

public void onMessage(Message message, byte[] pattern) {
// 用户做自己的业务处理即可,注意message.toString()可以获取失效的key

String expiredKey = message.toString();

Integer userId=null;

if(expiredKey.startsWith(MAYIKT_REDIS_KEY)){
//获取token 使用token 进行修改用户会员

if (!StringUtils.isBlank(expiredKey.substring(14))){
String token=expiredKey.substring(14);

EduTempMember eduTempMember = eduTempMemberService.queryEduTempMemberByToken(token);

System.out.println("eduTempMember--"+eduTempMember);

if (eduTempMember!=null){
userId=eduTempMember.getUserId();

userService.updateUserIsVip(userId);

}

}

}

}

}
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值