最近在项目中遇到了token过期实时推送的问题,我们的token是存在redis中半个小时不操作自动失效过期,token过期后需要个触发机制,这个触发机制就是Redis的订阅/监听机制。由于集成了Jedis,这里使用JedisPubSub完成整个操作。
首先是对消息的订阅 下面 config(Jedis jedis)方法 建议在redis客户端的配置文件redis.conf里修改notify-keyspace-events 为Ex
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”意味着所有的事件
Ex代表了过期事件
@Configuration
public class RedisConfiguration {
private String redisTopic = “__keyevent@0__:expired”; //订阅事件失效通道 0表示db0 根据自己的dbIndex选择合适的数字
@Bean(name= "jedis.pool")
@Autowired
public JedisPool jedisPool(