Spring实现redis键失效监听

1.修改redis配置文件

修改配置文件redis.conf中的:notify-keyspace-events Ex,默认为notify-keyspace-events

配置参数说明:

# K    键空间通知,以__keyspace@__为前缀 
# E    键事件通知,以__keysevent@__为前缀
# g    del , expipre , rename 等类型无关的通用命令的通知, ...  
# $    String命令  
# l    List命令  
# s    Set命令  
# h    Hash命令  
# z    有序集合命令  
# x    过期事件(每次key过期时生成)  
# e    驱逐事件(当key在内存满了被清除时生成)  
# A    g$lshzxe的别名,因此”AKE”意味着所有的事件   

修改好配置文件后,redis会对设置了expire的数据进行监听,当redis中的数据超时失效时,将会通知客户端.

2.在spring-jedis的配置文件中添加监听配置


    
        
            
        
    

    
        
        
            
                
                    
                        
                    
                
            
        
    

3.编写失效回调接口

public interface MyMessageDelegate {

    void handleMessage(String message);

    void handleMessage(Map message);

    void handleMessage(byte[] message);

    void handleMessage(Serializable message);

    void handleMessage(Serializable message, String channel);
}

4.实现该接口并添加你的操作

public class MyMessageDelegateImpl implements MyMessageDelegate {

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

    @Autowired
    private RedisTemplate redisTemplate;

    @Override
    public void handleMessage(String message) {
    }

    @Override
    public void handleMessage(Map message) {
    }

    @Override
    public void handleMessage(byte[] message) {
    }

    @Override
    public void handleMessage(Serializable message) {
        logger.info("失效的键:",message);
        //TODO 拿到失效的键后做其他操作
    }

    @Override
    public void handleMessage(Serializable message, String channel) {
    }
}

你可能感兴趣的:(Spring实现redis键失效监听)