如何使用 Spring Data Redis 为过期键启用键空间通知

Posted

技术标签:

【中文标题】如何使用 Spring Data Redis 为过期键启用键空间通知【英文标题】:How to Enable Keyspace Notifications for Expired Keys using Spring Data Redis 【发布时间】:2021-09-30 08:51:42 【问题描述】:

有没有办法从 Spring Data Redis 运行以下命令,可能使用RedisTemplate

$ redis-cli config set notify-keyspace-events Ex

我的理解是RedisTemplate可以运行lua脚本,上面可以转换成一个吗?

【问题讨论】:

【参考方案1】:

回答我自己的问题,原来不需要运行 lua 脚本:

如果使用非反应式 Redis 连接:

RedisConnection conn = null;
try 
    conn = connectionFactory.getConnection();
    conn.setConfig("notify-keyspace-events", "Ex");
 finally 
    if (conn != null) 
        conn.close();
    

如果使用反应式 Redis 连接:

ReactiveRedisConnection conn = connectionFactory.getReactiveConnection();
        conn
                .serverCommands()
                .setConfig("notify-keyspace-events", "Ex")
                .filter(status -> status.equals("OK"))
                .doFinally(unused -> conn.close())
                .block(Duration.ofSeconds(5L));

【讨论】:

以上是关于如何使用 Spring Data Redis 为过期键启用键空间通知的主要内容,如果未能解决你的问题,请参考以下文章

Spring Boot && Spring Cloud系列在spring-data-Redis中如何使用切换库

Spring data redis - 如何使用 hashOperation 的 scan 方法根据模式获取键或值?

如何在过期事件中访问spring data redis store对象?

Spring Data with Redis:如何使用不同的 LocalDateTime 格式或不同的转换器?

如何将默认过期的 RedisCacheManager 迁移到 Spring Data Redis 2.0?

谈谈spring-boot-starter-data-redis序列化