Redis5.0版本后使用详解

本文详细介绍了Redis的用途、客户端命令、数据操作、内存管理以及在Windows上的后台启动方法。深入探讨了Redis的数据类型,如String、Hash、List、Set和ZSet,并展示了如何在Spring Boot中整合Redis。此外,文章还涵盖了Redis的主从复制、哨兵模式和集群搭建,解析了配置文件,并阐述了集群中主从切换的规则和集群相关命令。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


查看Redis安装目录 whereis redis

Redis作用

  1. 内存存储,持久化
  2. 效率高,可用于告诉缓存
  3. 发布订阅系统
  4. 地图信息分析
  5. 计数器(浏览量,String类型)

客户端命令

  • 查看redis的安装路径:ps -ef | grep redis 在这里插入图片描述
  • 客户端登录命令:redis-cli -h ip -p port -a "密码" ,-h后面是ip,-p后面是端口号,-a后面是密码,有的登录不支持密码,需要登录使用auth "密码"命令,才能使用命令
  • 查看所有key值命令:keys *
  • 查看redis占用内存信息:info
    查看Memory下的信息
# 数据占用了多少内存(字节)
used_memory:7093336
# 数据占用了多少内存(兆) 可读性好
used_memory_human:6.76M
# redis占用了多少内存
used_memory_rss:14786560
used_memory_rss_human:14.10M
# 占用内存的峰值
used_memory_peak:17254720
used_memory_peak_human:16.46M
used_memory_peak_perc:41.11%
used_memory_overhead:6821738
used_memory_startup:1392440
used_memory_dataset:271598
used_memory_dataset_perc:4.76%
allocator_allocated:7059480
allocator_active:14748672
allocator_resident:14748672
# Linux总内存
total_system_memory:33245634560
total_system_memory_human:30.96G
# lua引擎所占用的内存大小
used_memory_lua:37888
used_memory_lua_human:37.00K
# 
used_memory_scripts:0
used_memory_scripts_human:0B
number_of_cached_scripts:0
maxmemory:0
maxmemory_human:0B
maxmemory_policy:noeviction
allocator_frag_ratio:2.09
allocator_frag_bytes:7689192
allocator_rss_ratio:1.00
allocator_rss_bytes:0
# 内存碎片率
rss_overhead_ratio:1.00
#
rss_overhead_bytes:37888
mem_fragmentation_ratio:2.09
mem_fragmentation_bytes:7727080
mem_not_counted_for_evict:60
mem_replication_backlog:1048584
mem_clients_slaves:49694
mem_clients_normal:4330960
mem_aof_buffer:60

# Keyspace keys为key的总数
db0:keys=20,expires=0,avg_ttl=0
  • 查看集群的槽分配情况:cluster nodes
    可以看出主从和分配槽的索引
    在这里插入图片描述

windows后台启动redis

  1. redis-server --service-install redis.windows.conf,执行完此命令后会看到在这里插入图片描述

  2. redis-server --service-start

  3. 停止命令:redis-server --service-stop

  4. 卸载命令:redis-server --service-uninstall

数据操作命令

公共命令

查看key值的数据类型:type key

  • 查看key是否存在:EXISTS key 如果存在返回1,如果不存在返回0
  • 删除key:move key 1 1代表当前库
  • 设置key的过期时间:EXPIRE key 10 10代表10秒过期
  • 查看key值过期时间:ttl key 如果是-1就不会过期,返回正数是过期时间,单位为毫秒
  • 值查显示中文需要在redis-cli 后面加上–raw,如果是window系统,需要在进入客户端前先把DOS窗口的编码修改为UTF-8,用chcp 65001
  • 查看redis节点信息:info replication 查看是否是主节点还是从节点
String类型
  • 设置值:set key value key为变量名,value为变量值
  • 获取值:get key 如果是集群的话,当要获取的值不在当前Redis,则会提示(error) MOVED 6918 ip:port 在哪个ip的那个端口的Redis
  • 对对应的key的值追加内容:APPEND key value
  • 查询字符串的长度:STRLEN key
  • 对数字进行加减:INCR key 加1,DECR key 减1
  • 对数字进行步进加减:DECRBY key decrement 对数字进行减decrement个数值,INCRBY key increment 对数字进行加increment 个数值
hash(哈希)

hash命令个string命令一般都是在前面加个h

  • 设置一个字段值:hset key field value filed相当于map的key值,
  • 获取一个字段值:hget key field
  • 获取所有的字段值:HGETALL key 展示形式为一行key一行 value
  • 删除自定的字段:hdel key field
  • 查看对应key有几个字段:hlen key
  • 获取对应的key的所有字段和所有值:hkeys key 获取key的所有字段, hvals key获取key的所有值
list
  • 所有的list命令都是l开头的
  • 设置值:lpush key value [value1 ...] 可以同时设置多个值
  • 获取值:lrange key start end start和end都会包括,end为-1时会获取所有的,获取的规则为最后进入的数据
  • 将数据保存到list的右边:rpush key value
  • 移出list的第一个元素:lpop key 移出最后一个元素:rpop key
  • 通过下标获取list的值,从0开始:lindex key 下标值
  • 返回list的长度:llen key
  • 截取list:ltrim key start end start和end都是下标值,都包含关系,截取后再获取list的值的时候是获取的截取的内容
  • 修改指定下标的值:lset key index value 如果此下标存在就成功,如果不存在就会失败
小结:消息队列(lpush rpop),栈(lpush lpop)
set集合
  • set集合中的数据不会有重复的
  • 创建集合并添加值:sadd key value
  • 查看元素内容:SMEMBERS key
  • 判断某个元素是否在集合中:SISMEMBER key value 如果存在返回1,没有就返回0
  • 查看集合元素个数:scard key
  • 移除集合中的指定元素:srem key value
  • 查看两个集合的差集,不同部分:sdiff key1 key2
  • 查看两个集合的交集:sinter key1 key2
  • 查看两个集合的并集:sunion key1 key2
zset(有序集合)
  • 新增值:zadd key score value score 为排序的依据
  • 获取所有的key值:zrange key 0 -1
  • 获取所有的值:ZRANGEBYSCORE key -inf +inf 顺序从小到大
  • 移除有序集合中的指定元素:zrem key value
  • 获取有序集合中的个数:zcard key
  • 获取指定区间的成员数量:zcount key min max min和max是score的最小值和最大值

数据库

Redis有16个数据库,可以从redis.conf的配置文件中看到databases 16配置,

  • 切换数据命令:select 3 ,切换到数据库索引为3的库
  • 查看当前库的已保存的数据大小:dbsize 计算的是key的多少
  • 清空当前数据库:flushdb
  • 清空所有数据库:FLUSHALL

事务

Redis事务本质:一组命令的集合!一个事务中的所有命令都会被序列化,在事务执行过程中,会按照顺序执行!一次性、顺序性、排他性!执行一些命令

  • Redis事务没有隔离级别的概念
    Redis开启事务
  1. 开启事务 ===multi
  2. 命令入队 ===开启事务后后面的命令都会自动进入队列
  3. 执行事务 ===exec (如果命令入队列时有错误的命令如ceshi命令则执行此命令时会报EXECABORT Transaction discarded because of previous errors,如果是命令没有错误,但是执行过程中有异常则只会单条命令执行失败,其他的执行成功,如对一个非数字的字符串进行加加减减)
  4. 取消事务 === discard :执行了此命令后队列中的所有命令都不会执行
    watch开启乐观锁
    Redis的乐观锁一般通过watch命令实现,通过对数据的version的监控,判断是否对事务执行成功,如果事务执行失败则返回nil,如果事务执行失败,需要对此次监控取消,通过用unwatch命令取消锁,再次用watch命令添加锁,再次执行未成功的命令
  • watch key 命令开启乐观锁
  • unwatch key命令取消锁

spring-boot整合Redis

需要引入的依赖

<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

可以在spring-boot的autoconfigure包中看自动配置类RedisAutoConfiguration
在这里插入图片描述
自动配置类中有ConditionalOnMissingBean注解,意思是如果自己注入了这个类,则不会使用这个注入的在这里插入图片描述

lettuce连接池的参数配置解释

  1. maxActive
    • 描述:连接池中可同时连接的最大连接数。不宜过大,建议结合响应时间判断
    • 作用:控制连接池中的最大活跃连接数,以防止系统资源被过度占用。
  2. maxIdle:
    • 描述:连接池中最大的空闲连接数。值不能超过maxActive,建议和maxActive一致
    • 作用:当连接池中的空闲连接数超过此值时,多余的空闲连接将被释放。这有助于节省系统资源。
  3. minIdle:
    • 描述:连接池中最小的空闲连接数。
    • 作用:确保连接池中始终有至少一定数量的空闲连接可供使用。当空闲连接数低于此值时,连接池会尝试创建新的连接。
  4. initialSize:
    • 描述:连接池启动时创建的初始化连接数量。值建议和minIdle一致
    • 作用:在连接池启动时立即创建指定数量的连接,以提高系统响应速度。
  5. maxWait:
    • 描述:连接池中连接用完时,新的请求等待时间(毫秒)。
    • 作用:当连接池中没有可用连接时,新的请求会等待指定的时间以获取连接。如果等待时间超过此值,则会抛出错误信息。

操作数据

直接在需要使用的类中注入RedisTemplate类即可,保存的值都必须可序列换,否则保存失败
RedisTemplate类的使用

  • 设置string类型的值
    redisTemplate.opsForValue().set(“key”,“value”);
  • 设置hash类型的值
    redisTemplate.opsForHash().put(“key”,“field”,“value”);
  • 设置list类型的值
    redisTemplate.opsForList().leftPush(“key”,“value”);
  • 设置set类型的值
    redisTemplate.opsForSet().add(“key”,“values”);
  • 设置zset类型的值
    redisTemplate.opsForZSet().add(“key”,“value”,Double.valueOf(“1”));
  • 获取string类型的值
    redisTemplate.opsForValue().get(“key”);
  • 获取hash类型的值
    redisTemplate.opsForHash().get(“key”,“field”);

自定义的RedisTemplate

@Configuration
public class RedisConfig {

    // 编写自己的redisTemplate
    @Bean
    @SuppressWarnings("all")
    // 参数必须是LettuceConnectionConfiguration类的redisConnectionFactory的方法名
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
        RedisTemplate<String, Object> template = new RedisTemplate();
        template.setConnectionFactory(factory);
        // 序列化配置
        Jackson2JsonRedisSerializer jsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.activateDefaultTyping(LaissezFaireSubTypeValidator.instance, ObjectMapper.DefaultTyping.NON_FINAL, JsonTypeInfo.As.PROPERTY);
        jsonRedisSerializer.setObjectMapper(om);
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();
        // key采用string的序列化方式
        template.setKeySerializer(stringRedisSerializer);
        // hash的key采用string的序列化方式
        template.setHashKeySerializer(stringRedisSerializer);
        // value序列化方式采用jackson
        template.setValueSerializer(jsonRedisSerializer);
        // hash的value采用Jackson的序列化方式
        template.setHashValueSerializer(jsonRedisSerializer);
        template.afterPropertiesSet();
        return template;
    }
}

一主多从

主机数据更新后根据配置和策略,自动同步到从库的master/slave机制,master以写为主,slave以读为主。

管道 pipeline 批量发送命令

传统redis交互中,客户端都是一条一条发送命令并等待响应,当需要执行大量命令时,频繁的网络往返(RTT)成为主要性能瓶颈,

管道的作用

通过批处理技术将多个命令:一次性发送到服务器,一次性读取所有响应
三个关键阶段:

  1. 客户端缓冲:将多个命令存入本地缓冲区
  2. 批量发送:达到阈值后一次性发送到服务端
  3. 批量接收:统一读取所有响应结果

与事务的区别

特性管道事务(MULTI/EXEC)
原子性
错误处理单命令失败不影响其他整体回滚
性能优化目标网络优化操作原子性

使用jedis性能测试

使用管道的

public static void main(String[] args) {
    int batchSize = 500;
    Jedis jedis = new Jedis("192.168.245.128", 16379);
    jedis.auth("test");
    long start = System.currentTimeMillis();

    Pipeline pipeline = jedis.pipelined();
    for (int i = 0; i < 10000; i++) {
        pipeline.set("test:" + i, "value" + i);
        if (i % batchSize == 0) {
            pipeline.sync();
        }
    }
    pipeline.sync();

    System.out.printf("批大小%d 耗时%dms%n",
            batchSize, System.currentTimeMillis()-start);
}

用时39毫秒

不使用管道的

@Test
void contextLoads() {
	Jedis jedis = new Jedis("192.168.245.128", 16379);
	jedis.auth("test");
	long start = System.currentTimeMillis();
	for (int i = 0; i < 10000; i++) {
		jedis.set("test:" + i, "value" + i);
	}
	System.out.printf("耗时%ds%n",
			(System.currentTimeMillis()-start) / 1000);
}

用时三秒多

使用RedisTemplate的管道

springboot2的代码


@Autowired
private StringRedisTemplate redisTemplate;

@Test
void testRedisTemplatePipeline() {
	// 使用管道发送一万条数据
	long start = System.currentTimeMillis();
	redisTemplate.executePipelined((RedisCallback<Object>) session -> {
		RedisSerializer<String> serializer = redisTemplate.getStringSerializer();
		for (int i = 0; i < 10000; i++) {
			session.set(serializer.serialize("test:" + i), serializer.serialize("test:" + i));
		}
		return null; // 必须返回 null,因为管道操作不需要返回值
	});
	System.out.printf("耗时%dms%n",
			(System.currentTimeMillis()-start));
}

springboot3的代码

@Test
void testRedisTemplatePipeline() {
	// 使用管道发送一万条数据
	long start = System.currentTimeMillis();
	redisTemplate.executePipelined(new SessionCallback<Object>() {
		@Override
		public <K, V> Object execute(RedisOperations<K, V> operations) throws DataAccessException {
			for (int i = 0; i < 10000; i++) {
				redisTemplate.opsForValue().set("key" + i, "value" + i);
			}
			return null;
		}
	});
	System.out.printf("耗时%dms%n",
			(System.currentTimeMillis()-start));
}

// 或者
@Test
void testRedisTemplatePipeline() {
	// 使用管道发送一万条数据
	long start = System.currentTimeMillis();
	redisTemplate.executePipelined(new SessionCallback<Object>() {
		@Override
		public <K, V> Object execute(RedisOperations<K, V> operations) throws DataAccessException {
			for (int i = 0; i < 10000; i++) {
				operations.opsForValue().set((K)("key" + i), (V)("value" + i));
			}
			return null;
		}
	});
	System.out.printf("耗时%dms%n",
			(System.currentTimeMillis()-start));
}

发现两种方式都可以提升set速度

安装

Linux的下载地址https://download.redis.io/releases/
Windows的下载地址:https://github.com/microsoftarchive/redis/releases
Windows版本微软已经停止维护,下载msi结尾的文件
选择要下载的版本

  1. 将上传好的安装包解压tar -zxvf 安装包名
  2. 基本的环境安装
    1.1 yum install gcc-c++ 安装c语言的编译环境
    1.2 make 编译redis的文件,make命令会根据Makefile中的规则来编译Redis的源代码。这个过程可能需要一些时间,具体取决于你的系统性能。
    1.3 make install 进行安装redis,redis的默认安装路径 /usr/local/bin,这一步需要管理员权限,因为它会将Redis的可执行文件和相关脚本安装到系统目录中,方便在任何位置使用。
  3. 默认安装目录介绍
文件作用
redis-benchmark性能测试工具
redis-check-aof修复有问题的AOF文件
redis-check-rdb修复有问题的rdb文件
redis-sentinelredis集群使用
redis-serverredis服务启动命令
redis-cli客户端操作入口命令
  1. 单机指定配置文件启动redis-server redis.config路径,如果不指定配置文件则默认为/path/to/redis.conf,后台启动命令redis-server redis.config路径 &

配置文件讲解

配置作用
单位只支持bytes,不支持bit,大小写不敏感
include /path/to/local.conf包含其他文件内容
bind 127.0.0.1绑定ip,如果是这个ip则只支持本地连接,可以注释掉则可以支持外网连接
protected-mode yes保护模式,yes代表只能本机访问,改成no即可远程访问
tcp-backlog 511backlog 的值, backlog 是一个连接队列,队列综合=未完成三次握手 + 完成了三次握手
timeout 0连接不操作超时时间,0代表永不超时,单位为秒
tcp-keepalive 300监测连接是否还在操作时间间隔,单位秒,如果不操作了则断开连接
daemonize no是否后台启动,no代表前台启动,yes为后台启动,一般改为yes
pidfile /var/run/redis_6379.pid保存进程号的文件
loglevel notice日志级别
requirepass foobared设置密码,foobared 为密码的值
port端口号
save 60 10000持久化机制,代表60秒内,有10000个key进行了修改,则进行持久化操作
stop-writes-on-bgsave-error yes持久化如果出错,是否还继续工作
rdbcompression yes是否压缩rdb文件,需要消耗CPU资源
rdbchecksum yes保存rdb文件的时候,是否进行错误的校验
dir ./rdb文件保存的目录
maxmemory 最大的内存设置
maxmemory-policy noeviction内存达到最上线的处理策略
appendonly no是否开启aof模式,默认是不开启的,因为大多数情况下,rdb是完全满足的
appendfilename “appendonly.aof”aof持久化的文件的名字
appendfsync everysecaof写入磁盘的策略,此配置是每秒写入一次磁盘
replicaof 在从库配置文件中,配置主库的ip和端口,启动从库时自动关联主库
masterauth 在从库配置文件中, 如果主库有密码,则需要配置上
logfile日志文件的位置,如/soft/redis-5.0.9/logs/redis.log

搭建一主两从

创建6379主库

  1. 创建目录 /soft/redis-cluster/6379,创建配置并输入内容
include /soft/redis-5.0.9/redis.conf # 引入通用配置文件
pidfile /soft/redis-cluster/6379.pid # 进程文件
port 6379 # 启动端口号
dbfilename dump6379.rdb  # 持久化文件
slave-announce-ip 192.168.111.128 # 作用主要与Redis的复制(replication)功能以及哨兵(Sentinel)模式有关

当使用哨兵模式时slave-announce-ip必须配置,配成成代码可以连接的

  1. 同理创建从库6380 和 6381 ,只需要加上从库配置
replicaof 127.0.0.1 6379  # 5版本之后的配置
  1. 使用启动命令 redis-server /soft/redis-cluster/6380/redis6380.conf启动主库和从库
  2. 查看主从状态:连接到主库6379端口,使用info replication命令,有角色和从库数量和ip配置等在这里插入图片描述

哨兵模式

哨兵默认的启动端口为26379

  1. 配置文件
  • sentinel monitor 为哨兵监控
  • mymaster 为监控的主库的别名
  • ip 6380 为主库的ip和端口,ip要用外网ip,因为在springboot集成redis的哨兵模式时要连接此ip和端口,所以不能用127.0.0.1这种内网的ip
  • 1 为至少有多少个哨兵迁移的数量
  • sentinel myid:哨兵的实例id,多个哨兵要唯一,否则相同的id只会有一个哨兵监控主库
  • sentinel auth-pass mymaster 123456:设置哨兵连接主库的名称和密码,此配置必须配置在sentinel monitor mymaster配置的下面
sentinel monitor mymaster 外网ip 6380 1
sentinel myid 0ab9a9c2d07ae81e102ae88b2a9e508007742411 # 多个sentinel,myid 后面的值要不相同
  1. 启动
redis-sentinel sentinel.conf

redis-sentinel 为启动命令
sentinel.conf为哨兵配置文件

查看哨兵命令

用客户度连接哨兵端口26379

  • info sentinel:可查看哨兵和从库的数量,如果数量不对,需要看下哨兵的配置是否正确,如主库的密码、自动生成的连接从库的地址是否正确在这里插入图片描述- sentinel masters:查看主库信息

重新选主库的规则

  1. 选择优先级靠前的
    优先级可以在redis.conf配置文件中默认:replica-priority 100,值越小优先级越高
  2. 选择偏移量最大的,即和主库同步最新的
  3. 选择runid最小的从服务,runid为redis实例启动后会随机生成一个40为的runid

主从切换规则

1、如果旧的主库重新启动后,会成为新的主库的从库

搭建集群

介绍

redis集群中,读和写都是主库,只有主库挂掉,从库变为主库,才会从之前的从库读和写数据
redis集群是根据Redis集群数据分片
Redis集群不同一致性哈希,它用一种不同的分片形式,在这种形式中,每个key都是一个概念性(hash slot)的一部分。
Redis集群中有16384个hash slots,为了计算给定的key应该在哪个hash slot上,我们简单地用这个key的CRC16值来对16384取模。(即:key的CRC16 % 16384),每个slot可以保存多个key
Redis集群中的每个节点负责一部分hash slots,假设你的集群有3个节点,那么:

  • Node A contains hash slots from 0 to 5500
  • Node B contains hash slots from 5501 to 11000
  • Node C contains hash slots from 11001 to 16383
    允许添加和删除集群节点。比如,如果你想增加一个新的节点D,那么久需要从A、B、C节点上删除一些hash slot给到D。同样地,如果你想从集群中删除节点A,那么会将A上面的hash slots移动到B和C,当节点A上是空的时候就可以将其从集群中完全删除。

因为将hash slots从一个节点移动到另一个节点并不需要停止其它的操作,添加、删除节点以及更改节点所维护的hash slots的百分比都不需要任何停机时间。也就是说,移动hash slots是并行的,移动hash slots不会影响其它操作。

Redis支持多个key操作,只要这些key在一个单个命令中执行(或者一个事务,或者Lua脚本执行),那么它们就属于相同的hash slot。你也可以用hash tags俩强制多个key都在相同的hash slot中。

修改配置文件

include /soft/redis-5.0.9/redis.conf
pidfile "/soft/redis-cluster/6379.pid"
port 6379
dbfilename "dump6379.rdb"
# Generated by CONFIG REWRITE
daemonize yes # 后台启动
cluster-enabled yes # 打开集群模式
cluster-config-file nodes-6379.conf # 设置节点配置文件名称,启动后自动生成
cluster-node-timeout 1500 # 设置节点失联时间,超过该时间(毫秒),则自动将从库转为主库

集群启动命令

src/redis-server ../redis-cluster/6385/redis-6385.conf

src/redis-server 是启动命令,…/redis-cluster/6385/redis-6385.conf是使用哪个节点的配置文件
启动集群后通过命令将集群关联起来

redis-cli -a "密码" --cluster create --cluster-replicas 1 ip:6379 ip:6380 ip:6381 ip:6382 ip:6383 ip:6384

参数中的1代表最简单的方式配置集群,ip不要用127.0.0.1
连接集群可以用redis-cli -c --raw命令,-c为集群模式连接,会自动变化端口读取和写数据,–raw是会把数据反序列化变为可理解数据

主从回复规则

  1. 当主库挂掉,从库变为主库,负责读和写任务
  2. 当最初的主库重新启动后,会变为当前主库的从库
  3. 当集群中的某一节点的主从库都挂掉,redis服务是否还能继续
    如果某一段slot的主从都挂掉,而配置文件中的cluster-require-full-coverage 为yes,那么整个集群都会挂掉,如果为no,则该段的slot不能使用,其他段位的slot即节点是可以提供服务的

集群相关命令

  • 查看主从配置的命令cluster nodes
  • 查看key的slot值 cluster keyslot k1 k1为key值
  • 查看插槽中的key个数 cluster countkeysinslot 111 111为卡槽值,此命令只能在登录机的卡槽的信息
  • 查看卡槽中key的值 cluster getkeysinslot 111 10 111为卡槽值,10为查看10个key值

遇到的问题

  1. 编译报错You need tcl 8.5 or newer in order to run the Redis test,是因为tcl版本过低导致,则需要删除就的tcl并安装新的
    1.1 查找旧的tcl:rpm -qa | grep tcl
    1.2 删除:rpm -e rpm包名
    1.3 tcl安装:下载地址https://jaist.dl.sourceforge.net/project/tcl/Tcl/8.6.16/tcl8.6.16-src.tar.gz?viasf=1
    • tar xzvf tcl8.6.1-src.tar.gz -C /usr/local/ #解压并指定解压后存放的路径
    • cd /usr/local/tcl8.6.1/unix/
    • ./configure
    • make
    • make install
  2. 端口访问不通,因为防火墙firewalld开启了,关闭即可
  3. 如果没有设置密码且设置了所有ip都可以访问,则需要设置protected-mode配置为no
  4. springboot集成redisson后启动不起来,看报错是连接127.0.0.1:6380失败,此为从库的端口,百度得知哨兵模式下集成redisson在配置从库时需要配置slave-announce-ip,值为代码可以访问的外网ip,或者只需要将哨兵的监控主库的ip改为代码可以访问的ip
  5. 当多次修改redis和哨兵的配置文件后通过哨兵端口用命令info sentinel查看哨兵状态哨兵数量和从库数量与实际不一致,可通过删除以下配置重启哨兵修复,此为哨兵连接主库时自动生成的,一般在哨兵的配置文件的最后。删除掉重启哨兵即可在这里插入图片描述
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值