若依添加添加监听容器配置(删除键,键过期)

1、配置Redis的键触发事件

bash 复制代码
# 基础配置
bind 0.0.0.0                   
# 允许所有IP连接
protected-mode no              
# 关闭保护模式(生产环境建议结合密码使用)
port 6379                      
# 默认端口
daemonize no                   
# 非后台运行(Docker 中必须为 no)
timeout 0                      
# 连接超时时间(0为不限制)
tcp-keepalive 300              
# 保持TCP连接活性
# 持久化
appendonly yes                 
# 开启AOF持久化
appendfsync everysec           
# 每秒同步一次AOF文件
dir /data                      
# 数据存储路径(Docker 中需挂载此目录)

# 内存管理
maxmemory 1GB                  
# 最大内存限制(根据需求调整)
maxmemory-policy volatile-lru  
# 内存满时删除最近最少使用的键

# 安全
requirepass 12321sadsadsadSDDSADS     
# 设置密码(生产环境必选)

# 键空间通知(关键配置!)
notify-keyspace-events Egx      
# 监听键过期事件(E: 键事件, x: 过期事件)

# 日志
loglevel notice                
# 日志级别(notice/production环境推荐)
logfile ""                     
# 日志输出到标准输出(Docker 友好)

按照配置文件进行启动

shell 复制代码
docker run -d -p 6379:6379 --name redis-server  --restart=always -v /home/redis/redis.conf:/etc/redis/redis.conf  -v /home/redis/data:/data -d redis:7.0.2 redis-server /etc/redis/redis.conf

2、 总的配置需要添加

配置文件在framework模块下面的config文件夹中

java 复制代码
@Configuration
@EnableCaching
public class RedisConfig extends CachingConfigurerSupport
{
    @Bean
    public RedisMessageListenerContainer redisMessageListenerContainer(RedisConnectionFactory connectionFactory) {
        RedisMessageListenerContainer container = new RedisMessageListenerContainer();
        container.setConnectionFactory(connectionFactory);
        return container;
    }
}

3、 键删除监听

java 复制代码
@Component
@Slf4j
public class RedisKeyDeletionListener extends KeyExpirationEventMessageListener {

    @Value("${spring.redis.database}")
    private Integer database;

    public RedisKeyDeletionListener(RedisMessageListenerContainer listenerContainer) {
        super(listenerContainer);
    }

    @Override
    protected void doRegister(RedisMessageListenerContainer listenerContainer) {
        // 监听指定数据库的键删除事件(__keyevent@*__:del)
        listenerContainer.addMessageListener(
            this,
            new PatternTopic("__keyevent@" + database + "__:del")
        );
    }

    @Override
    public void onMessage(Message message, byte[] pattern) {
        String deletedKey = new String(message.getBody());
        log.info("Key deleted: {}", deletedKey);
         //此处写你的业务逻辑
    }

}

4、 键过期监听

java 复制代码
@Component
@Slf4j
public class RedisKeyBasicExpirationListener 
				extends KeyExpirationEventMessageListener {

	// 当前服务连接的redis库序列号
    @Value("${spring.redis.database}")
    private Integer database;

    public RedisKeyBasicExpirationListener(
    	RedisMessageListenerContainer listenerContainer) {
        super(listenerContainer);
    }
    
    // 指定监听数据库
    @Override
    protected void doRegister(RedisMessageListenerContainer listenerContainer) {
        listenerContainer.addMessageListener(
        		this, new PatternTopic("__keyevent@" + database + "__:expired")
        	);

    }

    @Override
    public void onMessage(Message message, byte[] pattern) {
        // 业务逻辑执行
        System.out.println("业务逻辑执行");
        killVlcThread();
    }

}
相关推荐
TDengine (老段)5 小时前
TDengine 数学函数 DEGRESS 用户手册
大数据·数据库·sql·物联网·时序数据库·iot·tdengine
TDengine (老段)5 小时前
TDengine 数学函数 GREATEST 用户手册
大数据·数据库·物联网·时序数据库·iot·tdengine·涛思数据
安当加密5 小时前
云原生时代的数据库字段加密:在微服务与 Kubernetes 中实现合规与敏捷的统一
数据库·微服务·云原生
爱喝白开水a6 小时前
LangChain 基础系列之 Prompt 工程详解:从设计原理到实战模板_langchain prompt
开发语言·数据库·人工智能·python·langchain·prompt·知识图谱
想ai抽6 小时前
深入starrocks-多列联合统计一致性探查与策略(YY一下)
java·数据库·数据仓库
武子康6 小时前
Java-152 深入浅出 MongoDB 索引详解 从 MongoDB B-树 到 MySQL B+树 索引机制、数据结构与应用场景的全面对比分析
java·开发语言·数据库·sql·mongodb·性能优化·nosql
longgyy6 小时前
5 分钟用火山引擎 DeepSeek 调用大模型生成小红书文案
java·数据库·火山引擎
ytttr8737 小时前
C# 仿QQ聊天功能实现 (SQL Server数据库)
数据库·oracle·c#
盒马coding7 小时前
第18节-索引-Partial-Indexes
数据库·postgresql
dingdingfish8 小时前
关于Oracle RAC和ADG的学习资料
oracle·database·adg·rac·ha·dr·maa