1、redis.conf
(1)连接配置
# 允许访问的地址,默认是127.0.0.1,会导致只能在本地访问。修改为0.0.0.0则可以在任意IP访问,生产环境不要设置为0.0.0.0 第75行
bind 0.0.0.0
# 守护进程,修改为yes后即可后台运行 第257行
daemonize yes
# 监听的端口
port 6379
# 工作目录,默认是当前目录,也就是运行redis-server时的命令,日志、持久化等文件会保存在这个目录
dir .
# 数据库数量,设置为1,代表只使用1个库,默认有16个库,编号0~15
databases 1
# 设置redis能够使用的最大内存
maxmemory 512mb
# 日志文件,默认为空,不记录日志,可以指定日志文件名
logfile "redis.log"
(2)RDB持久化配置
# 是否压缩 ,建议不开启,压缩也会消耗cpu,磁盘的话不值钱
# 360 行
rdbcompression yes
# RDB文件名称
dbfilename dump.rdb
# 文件保存的路径目录
dir ./
(3)AOF持久化配置
# 是否开启AOF功能,默认是no
# 1251 行
appendonly yes
# AOF文件的名称
appendfilename "appendonly.aof"
# 表示每执行一次写命令,立即记录到AOF文件
appendfsync always
# 写命令执行完先放入AOF缓冲区,然后表示每隔1秒将缓冲区数据写到AOF文件,是默认方案
appendfsync everysec
# 写命令执行完先放入AOF缓冲区,由操作系统决定何时将缓冲区内容写回磁盘
appendfsync no
# AOF文件比上次文件 增长超过多少百分比则触发重写
auto-aof-rewrite-percentage 100
# AOF文件体积最小多大以上才触发重写
auto-aof-rewrite-min-size 64mb
2、application.yml配置
(1)java连接redis
该配置的作用是使java和redis可以连接,主要配置了redis的地址和端口。
spring:
# 配置连接redis的主机地址、端口
redis:
host: 127.0.0.1
port: 6379
(2)java连接redis 哨兵
spring:
redis:
sentinel:
master: mymaster
nodes:
- 192.168.60.129:27001
- 192.168.60.129:27002
- 192.168.60.129:27003
3、配置类
(1)序列化配置
该配置类的作用是让redis中键和值的序列化保持不一致。因为redis中默认键和值的序列化方式是一致的,要么是字符串序列化,要么是对象序列化。但是实际开发中键的数据类型往往是字符串,而值的数据类型往往是对象,因此要在这里配置,使键和值的序列化方式分离避免出现序列化失误的情况。
package com.woniu.config;
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.serializer.GenericJackson2JsonRedisSerializer;
import org.springframework.data.redis.serializer.StringRedisSerializer;
/**
* @author vampire
* @date 2022-05-26
* @desc
*/
@Configuration
public class RedisConfig {
/**
* 给RedisTemplate配置序列化工具
*
*/
@Bean
public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory){
RedisTemplate redisTemplate = new RedisTemplate();
redisTemplate.setConnectionFactory(redisConnectionFactory);
//设置key的序列化
StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
redisTemplate.setKeySerializer(stringRedisSerializer);
//设置value的序列化
GenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer = new GenericJackson2JsonRedisSerializer();
// Jackson2JsonRedisSerializer 这个完成序列化操作
// 不能把 序列化字符串 转成 java 对象
redisTemplate.setValueSerializer(genericJackson2JsonRedisSerializer);
// hash类型key的序列化方式
redisTemplate.setHashKeySerializer(stringRedisSerializer);
// hash类型value的序列化方式
redisTemplate.setHashValueSerializer(genericJackson2JsonRedisSerializer);
return redisTemplate;
}
}
(2)读写分离配置
该类写在RedisConfig 这个配置类中,配置redis的读写分离,其中包括了四种读写策:(1)MASTER:从主节点读取。(2)MASTER_PREFERRED:优先从master节点读取,master不可用才读取replica。(3)REPLICA:从slave(replica)节点读取。(4)REPLICA _PREFERRED:优先从slave(replica)节点读取,所有的slave都不可用才读取master。
@Bean
public LettuceClientConfigurationBuilderCustomizer clientConfigurationBuilderCustomizer(){
return clientConfigurationBuilder -> clientConfigurationBuilder.readFrom(ReadFrom.REPLICA_PREFERRED);
}
3、访问分片集群
(1)读写分离配置
@Bean
public LettuceClientConfigurationBuilderCustomizer clientConfigurationBuilderCustomizer(){
return clientConfigurationBuilder -> clientConfigurationBuilder.readFrom(ReadFrom.REPLICA_PREFERRED);
}
(2)application.yml配置
spring:
redis:
cluster:
nodes:
- 192.168.60.129:7001
- 192.168.60.129:7002
- 192.168.60.129:7003
- 192.168.60.129:8001
- 192.168.60.129:8002
- 192.168.60.129:8003