springmvcdate类型接收不到_解决Redis集群条件下键空间通知服务器接收不到消息的问题...

解决Redis集群条件下键空间通知服务器接收不到消息的问题

键空间通知介绍

键空间通知使得客户端可以通过订阅频道或模式, 来接收那些以某种方式改动了 Redis 数据集的事件。

可以通过对redis的redis.conf文件中配置notify-keyspace-events参数可以指定服务器发送哪种类型的通知。下面对于一些参数的描述。默认情况下此功能是关闭的。

3a8f1103ed282c903d83ffd0c7afab35.png

所以当你配置文件中配置为AKE时就表示发送所有类型的通知。

在程序中接入

使用SpringData可以轻松的实现对于redis键空间通知的接收操作。只需要作如下配置即可

所使用的jar包

'org.springframework.boot:spring-boot-starter-data-redis'

配置监听器

@Configuration

@ConditionalOnExpression("!'${spring.redis.host:}'.isEmpty()")

public static class RedisStandAloneAutoConfiguration {

@Bean

public RedisMessageListenerContainer customizeRedisListenerContainer(

RedisConnectionFactory redisConnectionFactory,MessageListener messageListener) {

RedisMessageListenerContainer redisMessageListenerContainer = new RedisMessageListenerContainer();

redisMessageListenerContainer.setConnectionFactory(redisConnectionFactory);

redisMessageListenerContainer.addMessageListener(messageListener,new PatternTopic("__keyspace@0__:*"));

return redisMessageListenerContainer;

}

}

其中PatternTopic构造器里面填写的是你所要监听哪一个通道。

例如在redis中执行set blog buxuewushu。我配置文件中配置的AKE所以所有消息都会发送,他就会发送两条信息。

PUBLISH __keyspace@0__:blog setPUBLISH __keyevent@0__:set blog

所以我在上面配置的监听规则__keyspace@0__:*就是监听0号库发送的所有space信息都会接收到。

配置处理器

上面我们配置了监听Redis的哪条通道,现在我们需要配置接收到了信息以后如何处理的事情。所以此时我们需要在程序中写处理器

@Slf4j

@Component

public class KeyExpiredEventMessageListener implements MessageListener {

@Override

public void onMessage(Message message, byte[] pattern) {

log.info("监听失效的redisKey:{},值是:{}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值