redis入门知识点

windows上的redis:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

双击打开客户端:
在这里插入图片描述

连接成功
在这里插入图片描述

存键值对,取键值对
在这里插入图片描述

Redis中的key是一个String类型,value可以是多种类型
在这里插入图片描述
在这里插入图片描述

Key-value类型

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

Key s * //用来查询存储在redis中所有的key(键)

在这里插入图片描述
在这里插入图片描述

可能会带来服务被占用,降低服务器性能
常用:

Redission
Jedis

Spring集成用到的redis:

在这里插入图片描述

在这里插入图片描述

对应了redis中的几种数据结构:
Hash
List
Set
Value====string
Zset
在这里插入图片描述

在这里插入图片描述

可提前将key传给bound开头的函数,后面只需操作value

在这里插入图片描述
在这里插入图片描述

Hash中的entries()方法可以把对象中的属性以map形式打印出来
在这里插入图片描述
在这里插入图片描述

Linux上的redis:

狂老师的:
Redis-server + 配置文件地址 ,会以配置文件的内容创建开启redis-server
Redis-cli -p后面可以自己设置连接端口号,默认的是6379
Redis-cli -p +端口号 开启后在客户端里输入shutdown指令会关闭redis-server 以和客户端相同端口的redis-server服务器
所以可以直接redis-cli启动
在这里插入图片描述

在这里插入图片描述

自己的:
在这里插入图片描述

查看redis的进程是否开启:
Ps -ef|grep redis
在这里插入图片描述

Shutdown关闭连接
在这里插入图片描述

Exit推出服务:
在这里插入图片描述

进程已关闭:
在这里插入图片描述

单机多redis启动集群测试:

测试性能:

Redis-benchmark是一个压力测试工具;
官方自带的性能测试工具
在这里插入图片描述

测试:100个并发连接, 100000个请求
Redis-benchmark -h localhost -p 6379 -c 100 -n 100000
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

它会测试一些命令
如何查看这些分析呢?
在这里插入图片描述

下面指向100.00%的是所有请求在3毫秒内完成
每秒处理92165.90个请求

100个并发的意思是100个客户端

100000个请求写入测试,花费0.90秒

每次写入3个字节
保证一台服务器测试,单机性能测试
Redis默认有16个数据库
可以在redis.conf中查看
在这里插入图片描述

Select可以切换数据库:
在这里插入图片描述

默认数据库是0;
Dbsize 查看数据库大小
在这里插入图片描述

存入数据后,数据库空间会增加;但是只针对与当前数据库
在这里插入图片描述
在这里插入图片描述

Flushdb 清空当前库
Flushall 清空全部
无论在哪个数据库操作,都会清空全部的数据库(慎用)

在这里插入图片描述

有的是压力测试工具添加进来的信息
在这里插入图片描述

为什么redis要有6379这个端口?
作者antirez 用意大利歌女MERZ在手机九宫格按键上对应的数字(了解一下即可)

Redis是单线程的

官方表示,redis是基于内存操作,cpu不是其性能瓶颈,redis的评价是根据机器的内存和网络带宽,既然可以使用单线程来实现,就用单线程。所以就使用单线程了!
Redis是C语言写的,官方提供的数据为100000+的QPS,完全不比同样使用key-value的memecache差

Redis是单线程为什么还这么快!

误区1:高性能的服务一定是多线程的
误区2:多线程(cpu上下文会切换)一定比单线程效率高
Cpu>内存>硬盘速度
核心:redis是将所有数据放在内存中的,所以说使用单线程去操作效率就是最高的,多线程(cpu上下文会切换:耗时)对于内存系统来说,如果没有上下文的切换效率就是最高的
多次读写都是在一个CPU上,在内存情况下,这个就是最佳方案。

Redis常见5种数据类型:

在这里插入图片描述

Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中间件。 它支持多种类型的数据结构,如 字符串(strings), 散列(hashes), 列表(lists), 集合(sets), 有序集合(sorted sets) 与范围查询, bitmaps, hyperloglogs 和 地理空间(geospatial) 索引半径查询。 Redis 内置了 复制(replication),LUA脚本(Lua scripting), LRU驱动事件(LRU eviction),事务(transactions) 和不同级别的 磁盘持久化(persistence), 并通过 Redis哨兵(Sentinel)和自动 分区(Cluster)提供高可用性(high availability)。
Redis-key 关于操作

*5种数据类型:

String
List
Set
Hash
Zset

*Redis-key:

Keys * 查看当前库的所有key
Set 存key -value set key value
Get 获取key的walue get key
Exists 判断key是否存在,存在返回1,不存在返回0
Move +key +1 ;1代表的是当前库的意思,然后这个key在当前库就没有了
在这里插入图片描述

Expire 设置key的存在时间;
Expire + key +秒数(默认单位是秒)
从这个命令执行开始+秒数之后,这个key在数据库中就不存在了
可用于单点登录设置cookie的过期时间:
Ttl + key 可以查看剩余存在的秒数
在这里插入图片描述

Type + key :查看key的数据类型;
在这里插入图片描述

如果以后遇到不会的命令,可以在官网查询帮助文档:
http://www.redis.cn/

在这里插入图片描述
http://www.redis.cn/commands.html
在这里插入图片描述

在这里插入图片描述

String (字符串):

Append 在字符串后追加字符串,
Set key1 v1
Get key1
Value = v1
Append key1 hello
此时get key1
Key1的value 就变成了v1hello
在这里插入图片描述

Strlen + key :查看key的字符长度
在这里插入图片描述

Incr + key 可以使key的value+1
Decr +key 可以使key的value-1

Incrby+key+ 要增长的数值
Decrby+key+要减小的数值
在这里插入图片描述

字符串范围:

Getrange key value1 value2 截取value1和value2之间的存储数据·
在这里插入图片描述

Getrange + key 0 -1 获取全部的值

Setrange key1 + value(位置) + value(内容)
get key1
在这里插入图片描述

三种特殊数据类型:

Geospatial 地理位置空间
Hyperloglog 位图
Bitmaps 位图

Geospatial 地理位置:

经度纬度查询:

Geoadd China:city 经度 纬度 城市名称

也可同时添加多个
Geoadd china:city 经度 纬度 城市名称 经度 纬度 城市名称
在这里插入图片描述

Geopos 查询指定城市的的地理位置(经度 纬度)

Geopos china:city city1
在这里插入图片描述
在这里插入图片描述

Geodist china:city 城市1 城市2

可以查询城市鸭和城市2的距离,如果要换成km的直线距离,可以在geodist china:city 城市1 城市2 +km
在这里插入图片描述

找附近的人(获取附近所有人的地址,定位!)通过半径来查询
Georedius + china:city 经度 纬度 距离 +距离单位 可以搜索到附近的城市在距离这个半径内
在这里插入图片描述

查到的都是存到redis数据库中的城市数据

Georedius + china:city 经度 纬度 距离 +距离单位+withdist 可以搜索到附近

的城市在距离这个半径内,并打印出这些城市的直线距离
在这里插入图片描述

Georedius + china:city 经度 纬度 距离 +距离单位+withcoord 可以搜索到附近的城市在距离这个半径内,并打印出这些城市的经纬度
用于搜索附近的人:
在这里插入图片描述
在这里插入图片描述

后面也可以加count 限定数量 ,城市按距离的长短排序
Georadiusbymember + china:city +city1+距离 距离单位
找出指定元素的周围元素:
在这里插入图片描述

Geo的底层实现原理其实就是Zset!我们可以使用Zset命令来操作geo

Zrange china:city 0 -1 查看所有的地理位置

在这里插入图片描述

Zrem china:city+城市 移除城市

在这里插入图片描述

事务:
Redis要么同时成功,要么同时失败
Redis单条命令式保存原子性的,但是事务不保证原子性
Redis事务本质:一组命令的集合!一个事务中所有的命令都会被序列化,在事务的执行过程中,会按照顺序执行!一次性,顺序性,排他性!执行一系列的命令。
Redis事务没有隔离级别的概念

Redis发布订阅:

Redis发布订阅(pub/sub)是一种消息通信模式:发送者(pub)发送信息,订阅者(sub)接收信息。微信、微博、关注系统!
Redis客户端可以订阅任意数量的频道。
订阅/发布消息图:
在这里插入图片描述

**Redis发布订阅命令:

**
在这里插入图片描述

测试:

消息订阅者:

订阅的频道是“yechenglongshuo” 引号系统加的,默认字符串
在这里插入图片描述

消息发布者:

也是客户端发出的文章到频道“yechenglongshuo”中,消息订阅者马上会受到“yechenglongshuo”频道的文章,速度非常快
在这里插入图片描述

使用场景:
1.实时消息系统!
2.实时聊天,将频道当做聊天室,将消息回复给所有人即可
3.订阅关注系统

Redis主从复制:

将一台服务器的数据,复制到其他的redis服务器。前者称为主节点(master),后者称为从节点(slave);数据的复制是单向的,只能由主节点到从节点,master以写为主,slave以读为主。
默认情况下,每台redis服务器都是主节点
一个主节点可以有多个从节点,一个从节点只有一个主节点。
主从复制,读写分离!80%的情况下都是在进行读操作!减缓服务器地压力,架构中经常使用,

最小redis集群:

一主二从
主从复制的作用主要包括:
1.数据冗余
在这里插入图片描述

2.故障恢复
在这里插入图片描述

3.负载均衡
在这里插入图片描述

4.高可用基石
在这里插入图片描述

高可用一般就是讲集群
一般来说,要将redis运用于工程项目中,只使用一台redis是万万不能的(宕机),原因如下:
从结构上来看,单个redis服务器会发生单点故障,并且一台服务器需要处理所有的请求负载,压力较大;
2.从容量上,当redis服务器内存容量有限,就算一台redis服务器内存容量为256G,也不能将所有内存用作于redis存储内存,一般来说,单台redis使用内存不应该超过20G
在这里插入图片描述

只要在公司中,主从复制就是必须要使用的,基本不会使用单击redis,性能会降低很多。

环境配置:

只配置从库,不配置主库!
Info replication 查看当前库的信息

127.0.0.1:6379> info replication
Replication
role:master 角色
connected_slaves:0 连接的从机数(没有从机,为0)

master_replid:2bec35cd0ef0b84540a8eb4d50632b9afbdcbc9c
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:0
second_repl_offset:-1
repl_backlog_active:0
repl_backlog_size:1048576
repl_backlog_first_byte_offset:0
repl_backlog_histlen:0
127.0.0.1:6379>
在这里插入图片描述

复制三个配置文件,然后修改对应的信息;
1.端口
2.Pid名字
3.Log文件名字
4.Dump.Rdb名字
在这里插入图片描述

开79,80,81三个redis-server ,分别用redis-server yclconfig/redis79.Conf
redis-server yclconfig/redis80.Conf
redis-server yclconfig/redis81.Conf启动
在这里插入图片描述

一主二从:
默认情况下,每台redis服务器都是主节点;我们一般情况下只需要配置从机就可以了!
认老大一主(79)二从(80,81)
Info aplication 查看服务器配置
在这里插入图片描述

Slaveof + 主机端口号(host+port)host指的ip,port指的端口号,本机默认127.0.0.1或localhost
在从机中配置:
在这里插入图片描述

role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up
master_last_io_seconds_ago:4
master_sync_in_progress:0
slave_repl_offset:14
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:5459044e4a2510fd9e28edbf54e3259ea094a24d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:14
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:14
在这里插入图片描述

主机配置:
在这里插入图片描述

127.0.0.1:6379> info replication
#Replication
role:master
connected_slaves:1
slave0:ip=127.0.0.1,port=6380,state=online,offset=322,lag=0
master_replid:5459044e4a2510fd9e28edbf54e3259ea094a24d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:322
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:322

第二台从机:
用localhost也可以代替127.0.0.1
127.0.0.1:6381> slaveof localhost 6379
OK
127.0.0.1:6381> info replication
#Replication
role:slave
master_host:localhost
master_port:6379
master_link_status:up
master_last_io_seconds_ago:2
master_sync_in_progress:0
slave_repl_offset:1022
slave_priority:100
slave_read_only:1
connected_slaves:0
master_replid:5459044e4a2510fd9e28edbf54e3259ea094a24d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1022
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:995
repl_backlog_histlen:28

主机:
127.0.0.1:6379> info replication
#Replication
role:master
connected_slaves:2
slave0:ip=127.0.0.1,port=6380,state=online,offset=1134,lag=1
slave1:ip=127.0.0.1,port=6381,state=online,offset=1134,lag=1
master_replid:5459044e4a2510fd9e28edbf54e3259ea094a24d
master_replid2:0000000000000000000000000000000000000000
master_repl_offset:1134
second_repl_offset:-1
repl_backlog_active:1
repl_backlog_size:1048576
repl_backlog_first_byte_offset:1
repl_backlog_histlen:1134

真正的主从配置应该在配置文件中配置,这样的话是永久的,这里使用的命令是暂时的,

细节:

主机可以写,从机不能写,只能读!主机中的所有信息和数据,都会被从机保存;
主机初始:
在这里插入图片描述

从机初始:
在这里插入图片描述

主机输入键-值
在这里插入图片描述

从机可以获取到主机键-值:
在这里插入图片描述

从机不可写:
在这里插入图片描述

让主机下机,断开连接:
在这里插入图片描述
在这里插入图片描述

从机依然是从机:
在这里插入图片描述
在这里插入图片描述

但是从机依然可以读到主机断开之前的key value;
在这里插入图片描述
在这里插入图片描述

当主机重新连接上后:
在这里插入图片描述

可以进行读写操作;
从机也能继续读到主机读写后的key value
在这里插入图片描述
在这里插入图片描述

狂神的说法:

这样理解:这应该是保留了之前的数据
当断开从机:
主机进行操作:
在这里插入图片描述

从机
在这里插入图片描述

断开再连接,在断开期间,主机进行的操作,从机接收不到了;
在这里插入图片描述
在这里插入图片描述

在从机连接上后:
主机进行的操作:
在这里插入图片描述

从机也接收不到:
在这里插入图片描述

这是如果是命令行,来配置的主从,这个时候如果重启了,就会变成默认的主机;
在这里插入图片描述

只要变为从机,立马可以从主机中获取值;
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Sync同步命令,
全量复制:从机连接后的的那瞬间全量复制
增量复制:一直是连着的,主机增加值,从机也增加主机增加的值

数据可以在从机中看到;

层层链路:
在这里插入图片描述

这里80还是一个从机,不能读写
在这里插入图片描述

81是从机:
在这里插入图片描述
在这里插入图片描述

79
在这里插入图片描述

在79中设置值:
在这里插入图片描述

81也能看到:
在这里插入图片描述

80当然能看到:
在这里插入图片描述

如果没有老大了,这时候能不能选一个老大出来呢!
谋朝(权)篡位:
Slaveof no one 从机变为主机
在这里插入图片描述

其他的节点就可以手动地连接到这个节点(手动)
但是掉线,断开连接的那个主机回来后依然是主机,但他的从机小弟已经不是从机了,也是主机,要想那个变为主机的小弟再变为从机小弟,只能再重置让他成为从机了;

哨兵模式(自动选取老大):

在这里插入图片描述

主从切换技术的方法是:当服务器宕机,需要手动把一台服务器切换为主服务器,
谋权篡位的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库切换到主库。

哨兵模式是一种特殊的模式,首先redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待redis服务器响应,从而监控运行的多个redis实例。
在这里插入图片描述

多哨兵模式:
在这里插入图片描述
在这里插入图片描述

测试:
我们目前的状态是:一主二从!
1.配置哨兵配置文件 /usr/local/bin/下的sentinel.Conf文件
在这里插入图片描述
在这里插入图片描述

Sentinel monitor 被监控的名称 host port 1

后面的数字1,代表主机挂了,slave(丛机)投票看让谁接替成为主机,票数最多的成为主机

2.启动哨兵
[root@izuf6f4f6o8lv0fp1sqnflz bin]# ls
dump.rdb redis-benchmark redis-check-aof redis-check-rdb redis-cli redis-sentinel redis-server yclconfig
[root@izuf6f4f6o8lv0fp1sqnflz bin]# redis-sentinel yclconfig/sentinel.conf
6134:X 26 Jan 2021 15:33:24.213 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
6134:X 26 Jan 2021 15:33:24.213 # Redis version=6.0.10, bits=64, commit=00000000, modified=0, pid=6134, just started
6134:X 26 Jan 2021 15:33:24.213 # Configuration loaded
.
.-__ ''-._ _.- .. ‘’-._ Redis 6.0.10 (00000000/0) 64 bit
.-.-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in sentinel mode |`-._`-...-` __...-.-.|’_.-'| Port: 26379 |-. ._ / _.-' | PID: 6134-._ -._-./ .-’ .-’
|-._-.
-.__.-' _.-'_.-'| |-.
-._ _.-'_.-' | http://redis.io-._ -._-..-’.-’ .-’
|-._-.
-.__.-' _.-'_.-'| |-.
-._ _.-'_.-' |-._ -._-.
.-’_.-’ _.-’
-._-..-’ _.-’
-._ _.-'-.
.-’

6134:X 26 Jan 2021 15:33:24.215 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
6134:X 26 Jan 2021 15:33:24.226 # Sentinel ID is 1a1630f4f601d8b43bc56fd16a6151ae1b7866d9
6134:X 26 Jan 2021 15:33:24.226 # +monitor master myredis 127.0.0.1 6379 quorum 1
//主机,且有一票
开始启动效果;
在这里插入图片描述

root@izuf6f4f6o8lv0fp1sqnflz bin]# redis-sentinel yclconfig/sentinel.conf
2576:X 27 Jan 2021 00:16:15.120 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
2576:X 27 Jan 2021 00:16:15.120 # Redis version=6.0.10, bits=64, commit=00000000, modified=0, pid=2576, just started
2576:X 27 Jan 2021 00:16:15.120 # Configuration loaded
.
.-__ ''-._ _.- .. ‘’-._ Redis 6.0.10 (00000000/0) 64 bit
.-.-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in sentinel mode |`-._`-...-` __...-.-.|’_.-'| Port: 26379 |-. ._ / _.-' | PID: 2576-._ -._-./ .-’ .-’
|-._-.
-.__.-' _.-'_.-'| |-.
-._ _.-'_.-' | http://redis.io-._ -._-..-’.-’ .-’
|-._-.
-.__.-' _.-'_.-'| |-.
-._ _.-'_.-' |-._ -._-.
.-’_.-’ _.-’
-._-..-’ _.-’
-._ _.-'-.
.-’

2576:X 27 Jan 2021 00:16:15.122 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
2576:X 27 Jan 2021 00:16:15.122 # Sentinel ID is 1a1630f4f601d8b43bc56fd16a6151ae1b7866d9
2576:X 27 Jan 2021 00:16:15.122 # +monitor master myredis 127.0.0.1 6379 quorum 1
2576:X 27 Jan 2021 00:16:15.122 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:16:15.133 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6379

[root@izuf6f4f6o8lv0fp1sqnflz bin]# redis-sentinel yclconfig/sentinel.conf

在一切配好了:
2576:X 27 Jan 2021 00:16:15.120 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
2576:X 27 Jan 2021 00:16:15.120 # Redis version=6.0.10, bits=64, commit=00000000, modified=0, pid=2576, just started
2576:X 27 Jan 2021 00:16:15.120 # Configuration loaded
.
.-__ ''-._ _.- .. ‘’-._ Redis 6.0.10 (00000000/0) 64 bit
.-.-```. ```\/ _.,_ ''-._ ( ' , .-` | `, ) Running in sentinel mode |`-._`-...-` __...-.-.|’_.-'| Port: 26379 |-. ._ / _.-' | PID: 2576-._ -._-./ .-’ .-’
|-._-.
-.__.-' _.-'_.-'| |-.
-._ _.-'_.-' | http://redis.io-._ -._-..-’.-’ .-’
|-._-.
-.__.-' _.-'_.-'| |-.
-._ _.-'_.-' |-._ -._-.
.-’_.-’ _.-’
-._-..-’ _.-’
-._ _.-'-.
.-’

2576:X 27 Jan 2021 00:16:15.122 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
2576:X 27 Jan 2021 00:16:15.122 # Sentinel ID is 1a1630f4f601d8b43bc56fd16a6151ae1b7866d9
2576:X 27 Jan 2021 00:16:15.122 # +monitor master myredis 127.0.0.1 6379 quorum 1
2576:X 27 Jan 2021 00:16:15.122 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:16:15.133 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:10.929 # +sdown master myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:10.929 # +odown master myredis 127.0.0.1 6379 #quorum 1/1
2576:X 27 Jan 2021 00:20:10.929 # +new-epoch 1
2576:X 27 Jan 2021 00:20:10.929 # +try-failover master myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:10.935 # +vote-for-leader 1a1630f4f601d8b43bc56fd16a6151ae1b7866d9 1
2576:X 27 Jan 2021 00:20:10.935 # +elected-leader master myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:10.935 # +failover-state-select-slave master myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:11.025 # +selected-slave slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:11.025 * +failover-state-send-slaveof-noone slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:11.087 * +failover-state-wait-promotion slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:12.100 # +promoted-slave slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:12.100 # +failover-state-reconf-slaves master myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:12.177 * +slave-reconf-sent slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:13.151 * +slave-reconf-inprog slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:13.151 * +slave-reconf-done slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:13.202 # +failover-end master myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:13.202 # +switch-master myredis 127.0.0.1 6379 127.0.0.1 6381
2576:X 27 Jan 2021 00:20:13.202 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6381
2576:X 27 Jan 2021 00:20:13.202 * +slave slave 127.0.0.1:6379 127.0.0.1 6379 @ myredis 127.0.0.1 6381
2576:X 27 Jan 2021 00:20:43.235 # +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ myredis 127.0.0.1 6381
在这里插入图片描述

哨兵模式自动选取了6381为主机;
如果master节点断开了,这个时候就会从从机中随机选择一个服务器!(这里面有一个投票算法)
哨兵日志:
| -._._ / .-’ | PID: 2576
-._-.
-./ _.-' _.-' |-.-._-.__.-’ .-’.-’|
| -._-.
.-’.-’ | http://redis.io
-._-.-.__.-'_.-' _.-' |-.-._-..-’ .-’.-’|
| -._-._ .-’.-’ |
-._-.-.__.-'_.-' _.-'-. -.__.-' _.-'-._ _.-’
`-.
.-’

2576:X 27 Jan 2021 00:16:15.122 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
2576:X 27 Jan 2021 00:16:15.122 # Sentinel ID is 1a1630f4f601d8b43bc56fd16a6151ae1b7866d9
2576:X 27 Jan 2021 00:16:15.122 # +monitor master myredis 127.0.0.1 6379 quorum 1
2576:X 27 Jan 2021 00:16:15.122 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:16:15.133 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:10.929 # +sdown master myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:10.929 # +odown master myredis 127.0.0.1 6379 #quorum 1/1
2576:X 27 Jan 2021 00:20:10.929 # +new-epoch 1
2576:X 27 Jan 2021 00:20:10.929 # +try-failover master myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:10.935 # +vote-for-leader 1a1630f4f601d8b43bc56fd16a6151ae1b7866d9 1
2576:X 27 Jan 2021 00:20:10.935 # +elected-leader master myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:10.935 # +failover-state-select-slave master myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:11.025 # +selected-slave slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:11.025 * +failover-state-send-slaveof-noone slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:11.087 * +failover-state-wait-promotion slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:12.100 # +promoted-slave slave 127.0.0.1:6381 127.0.0.1 6381 @ myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:12.100 # +failover-state-reconf-slaves master myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:12.177 * +slave-reconf-sent slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:13.151 * +slave-reconf-inprog slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:13.151 * +slave-reconf-done slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:13.202 # +failover-end master myredis 127.0.0.1 6379
2576:X 27 Jan 2021 00:20:13.202 # +switch-master myredis 127.0.0.1 6379 127.0.0.1 6381
2576:X 27 Jan 2021 00:20:13.202 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ myredis 127.0.0.1 6381
2576:X 27 Jan 2021 00:20:13.202 * +slave slave 127.0.0.1:6379 127.0.0.1 6379 @ myredis 127.0.0.1 6381
2576:X 27 Jan 2021 00:20:43.235 # +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ myredis 127.0.0.1 6381
在这里插入图片描述

如果主机此时回来了,只能规并到新的主机下当做从机,这就是哨兵模式的

  1. List item

规则(哨兵模式非常智能)
优点:
1.哨兵集群,基于主从复制模式,所有的主从配置优点,它全有
2.主从可以切换,故障可以转移,系统的可用性就会更好
3.哨兵模式就是主从模式的升级,手动到自动,更加健壮
缺点:
1.内存扩容性差
2.配置文件复杂

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值