博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
SpringBoot连接Redis哨兵模式
阅读量:7125 次
发布时间:2019-06-28

本文共 7474 字,大约阅读时间需要 24 分钟。

application.yml

###################以下为Redis增加的配置###########################  redis:      #单机配置      #host: 192.168.43.188      #port: 6379    timeout: 6000    password: 123456    ###################以下为redis哨兵增加的配置###########################    sentinel:      nodes: 192.168.43.234:26379,192.168.43.234:26380,192.168.43.234:26381      master: mymaster    ###################以下为lettuce连接池增加的配置###########################    lettuce:      pool:        max-active:  100 # 连接池最大连接数(使用负值表示没有限制)        max-idle: 100 # 连接池中的最大空闲连接        min-idle: 50 # 连接池中的最小空闲连接        max-wait: 6000 # 连接池最大阻塞等待时间(使用负值表示没有限制  ###################以下为springcache增加的配置###########################  cache:    redis:      use-key-prefix: true      key-prefix: dev      cache-null-values: false      time-to-live: 20s

文件位置

1541457656_1_

RedisSentinelConfig.java

package com.heilongjiang.qiqihal.config.Redisonfig;import org.apache.commons.pool2.impl.GenericObjectPoolConfig;import org.springframework.beans.factory.annotation.Value;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.connection.*;import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;import org.springframework.data.redis.connection.lettuce.LettucePoolingClientConfiguration;import java.util.*;@Configuration@ConfigurationProperties(prefix = "spring.redis.sentinel")public class RedisSentinelConfig {    private Set
nodes; private String master; @Value("${spring.redis.timeout}") private long timeout; @Value("${spring.redis.password}") private String password; @Value("${spring.redis.lettuce.pool.max-idle}") private int maxIdle; @Value("${spring.redis.lettuce.pool.min-idle}") private int minIdle; @Value("${spring.redis.lettuce.pool.max-wait}") private long maxWait; @Value("${spring.redis.lettuce.pool.max-active}") private int maxActive; @Bean public RedisConnectionFactory lettuceConnectionFactory() { RedisSentinelConfiguration redisSentinelConfiguration = new RedisSentinelConfiguration(master, nodes); redisSentinelConfiguration.setPassword(RedisPassword.of(password.toCharArray())); GenericObjectPoolConfig genericObjectPoolConfig = new GenericObjectPoolConfig(); genericObjectPoolConfig.setMaxIdle(maxIdle); genericObjectPoolConfig.setMinIdle(minIdle); genericObjectPoolConfig.setMaxTotal(maxActive); genericObjectPoolConfig.setMaxWaitMillis(maxWait); LettucePoolingClientConfiguration lettuceClientConfiguration = LettucePoolingClientConfiguration.builder() .poolConfig(genericObjectPoolConfig) .build(); return new LettuceConnectionFactory(redisSentinelConfiguration, lettuceClientConfiguration); } public void setNodes(Set
nodes) { this.nodes = nodes; } public void setMaster(String master) { this.master = master; }}

RedisTemplateConfig.java

package com.heilongjiang.qiqihal.config.Redisonfig;import com.fasterxml.jackson.annotation.JsonAutoDetect;import com.fasterxml.jackson.annotation.PropertyAccessor;import com.fasterxml.jackson.databind.ObjectMapper;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;import org.springframework.data.redis.core.RedisTemplate;import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;/** 将默认序列化改为Jackson2JsonRedisSerializer序列化,* */@Configurationpublic class RedisTemplateConfig {    @Bean    public RedisTemplate
redisTemplate(LettuceConnectionFactory factory) { //创建Json序列化对象 Jackson2JsonRedisSerializer
jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); //解决查询缓存转换异常的问题 ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); // 将默认序列化改为Jackson2JsonRedisSerializer序列化 RedisTemplate
template = new RedisTemplate
(); template.setKeySerializer(jackson2JsonRedisSerializer);// key序列化 template.setValueSerializer(jackson2JsonRedisSerializer);// value序列化 template.setHashKeySerializer(jackson2JsonRedisSerializer);// Hash key序列化 template.setHashValueSerializer(jackson2JsonRedisSerializer);// Hash value序列化 template.setConnectionFactory(factory); template.afterPropertiesSet(); return template; }}

SpringCacheRedisConfig.java

package com.heilongjiang.qiqihal.config.Redisonfig;import com.fasterxml.jackson.annotation.JsonAutoDetect;import com.fasterxml.jackson.annotation.PropertyAccessor;import com.fasterxml.jackson.databind.ObjectMapper;import org.springframework.boot.context.properties.ConfigurationProperties;import org.springframework.cache.CacheManager;import org.springframework.cache.annotation.EnableCaching;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.data.redis.cache.RedisCacheConfiguration;import org.springframework.data.redis.cache.RedisCacheManager;import org.springframework.data.redis.connection.lettuce.LettuceConnectionFactory;import org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;import org.springframework.data.redis.serializer.RedisSerializationContext;import org.springframework.data.redis.serializer.RedisSerializer;import org.springframework.data.redis.serializer.StringRedisSerializer;import java.time.Duration;/** 修改 CacheManager 接口,将默认序列化改为JSON序列化,并使用redis作为缓存* */@Configuration@EnableCaching//开启缓存@ConfigurationProperties(prefix = "spring.cache.redis")public class SpringCacheRedisConfig {    private Duration timeToLive = Duration.ZERO;    public void setTimeToLive(Duration timeToLive) {        this.timeToLive = timeToLive;    }    @Bean    public CacheManager cacheManager(LettuceConnectionFactory factory) {        RedisSerializer
redisSerializer = new StringRedisSerializer(); //创建Json序列化对象 Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); //解决查询缓存转换异常的问题 ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); // 将默认序列化改为Jackson2JsonRedisSerializer序列化 RedisCacheConfiguration config = RedisCacheConfiguration.defaultCacheConfig() .entryTtl(timeToLive) .serializeKeysWith(RedisSerializationContext.SerializationPair.fromSerializer(redisSerializer)) .serializeValuesWith(RedisSerializationContext.SerializationPair.fromSerializer(jackson2JsonRedisSerializer)) .disableCachingNullValues(); // 使用redis作为缓存,进入 CacheManager 接口按Control+H查看 CacheManager 的实现类,其中 RedisCacheManager 与redis有关 RedisCacheManager cacheManager = RedisCacheManager.builder(factory) .cacheDefaults(config) .build(); return cacheManager; }}

转载地址:http://fleel.baihongyu.com/

你可能感兴趣的文章
用 namspace 隔离 DHCP 服务 - 每天5分钟玩转 OpenStack(90)
查看>>
我的友情链接
查看>>
我的友情链接
查看>>
latex 表格列宽度固定的情况下让文字居中显示
查看>>
mysql数据库备份与恢复
查看>>
Linux下文件描述符
查看>>
单元测试系列之5:使用unitils测试Service层
查看>>
忘记了root密码不能进入系统 -红帽官方文档
查看>>
构建FTP服务器,基于SSL,基于虚拟用户
查看>>
iOS tableView类似电话薄右边的索引搜索
查看>>
metasploit 配置 on kali 2016.2
查看>>
shell正则提取字符串中的数字并保存到变量中
查看>>
我的友情链接
查看>>
编程实现sharepoint工作流中的发送邮件功能
查看>>
git命令简易使用
查看>>
时间戳
查看>>
每行 标题 与 input 都对齐
查看>>
Linux添加永久静态路由的方法
查看>>
我的友情链接
查看>>
Zookeeper安装(LINUX环境)(一)
查看>>