赞
踩
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
redis:
host: 127.0.0.1
port: 6379
timeout: 3000
package com.strap.mydemo.config; import com.fasterxml.jackson.annotation.JsonAutoDetect; import com.fasterxml.jackson.annotation.PropertyAccessor; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.databind.jsontype.impl.LaissezFaireSubTypeValidator; import lombok.extern.log4j.Log4j; import org.springframework.cache.Cache; import org.springframework.cache.interceptor.CacheErrorHandler; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.data.redis.connection.RedisConnectionFactory; import org.springframework.data.redis.core.RedisTemplate; import org.springframework.data.redis.listener.RedisMessageListenerContainer; import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer; import org.springframework.data.redis.serializer.StringRedisSerializer; /** * <p>消息监听配置</p> * * @author strap */ @Configuration @Log4j public class RedisConfig { public RedisConfig() { } @Bean public RedisTemplate<String, Object> initTemplate(RedisConnectionFactory factory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); redisTemplate.setConnectionFactory(factory); Jackson2JsonRedisSerializer<Object> valueSerializer = new Jackson2JsonRedisSerializer<>(Object.class); ObjectMapper objectMapper = new ObjectMapper(); objectMapper.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); objectMapper.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL); valueSerializer.setObjectMapper(objectMapper); StringRedisSerializer keySerializer = new StringRedisSerializer(); // key均采用string的序列化方式 redisTemplate.setKeySerializer(keySerializer); redisTemplate.setHashKeySerializer(keySerializer); // value均采用jackson序列化 redisTemplate.setValueSerializer(valueSerializer); redisTemplate.setHashValueSerializer(valueSerializer); redisTemplate.setEnableTransactionSupport(true); redisTemplate.afterPropertiesSet(); return redisTemplate; } /** * redis数据操作异常处理 * 这里的处理:在日志中打印出错误信息,但是放行 * 保证redis服务器出现连接等问题的时候不影响程序的正常运行,使得能够出问题时不用缓存 */ @Bean public CacheErrorHandler errorHandler() { return new CacheErrorHandler() { @Override public void handleCacheGetError(RuntimeException e, Cache cache, Object key) { log.error("redis异常:key=[{" + key + "}]", e); } @Override public void handleCachePutError(RuntimeException e, Cache cache, Object key, Object value) { log.error("redis异常:key=[{" + key + "}]", e); } @Override public void handleCacheEvictError(RuntimeException e, Cache cache, Object key) { log.error("redis异常:key=[{" + key + "}]", e); } @Override public void handleCacheClearError(RuntimeException e, Cache cache) { log.error("redis异常:", e); } }; } }
修改其中的配置,打开监听
将 notify-keyspace-events ""
修改为 notify-keyspace-events "Ex"
重启redis服务
命令详解
开启键空间通知功能需要消耗一些CPU,所以在默认配置下,该功能处于关闭状态。
notify-keyspace-events 的参数可以是以下字符的任意组合,它指定了服务器该发送哪些类型的通知
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/代码探险家/article/detail/925191
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。