Redis安装、使用、主从、哨兵

1
原文:https://www.jianshu.com/p/2f93bb771469

1.安装部署

  • 安装编译环境
1
yum install gcc patch libffi-devel python-devel  zlib-devel bzip2-devel openssl-devel ncurses-devel sqlite-devel readline-devel tk-devel gdbm-devel db4-devel libpcap-devel xz-devel openssl openssl-devel -y
  • 目录规划
1
2
3
4
5
#redis配置文件目录:/opt/redis_cluster/redis{PORT}/conf/
#redis日志文件目录:/opt/redis_cluster/redis{PORT}/logs/
#redis数据文件目录:/opt/redis_cluster/redis{PORT}/data/
#redis pid文件目录:/opt/redis_cluster/redis{PORT}/pid/
#redis程序目录:/opt/redis
  • 创建目录
1
mkdir -pv /opt/redis_cluster/redis{PORT}/{conf,logs,data,pid}
  • 下载并安装redis程序
1
2
3
4
5
[root@nginx redis]# wget http://download.redis.io/releases/redis-3.2.13.tar.gz
[root@nginx redis]# tar xf redis-3.2.13.tar.gz -C /opt/
[root@nginx redis]# ln -sv /opt/redis-3.2.13.tar.gz /opt/redis
[root@nginx redis]# cd /opt/redis/
[root@nginx redis]# make && make install
  • 创建redis配置文件:/opt/redis_cluster/redis6379/conf/redis6379.conf
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
### 以守护进程模式启动
daemonize yes
 
### 绑定的主机地址
bind 192.168.1.92
 
###关闭只能本地访问
protected-mode no
 
###添加认证密码
requirepass 123456
 
### 监听端口
port 6379
 
### 内存限制(最好是总内存的一半)
maxmemory 5gb
 
### 超出内存之后的测率
#volatile-lru:根据LRU算法删除最老的key。
#allkeys-lru:根据LRU算法删除任何key。
#volatile-random:删除最老的key。
#allkeys->random:随机删。
#volatile-ttl:根据key的过期时间删除
#noeviction:谁也不删,没法再写
maxmemory-policy volatile-lru
 
 
### pid文件和log文件的保存地址
pidfile /opt/redis_cluster/redis6379/pid/redis6379.pid
logfile /opt/redis_cluster/redis6379/logs/redis6379.log
 
### 本地数据库的目录
dir /opt/redis_cluster/redis6379/data
 
### 设置数据库的数量,默认数据库为0
databases 16
 
###下面是持久化配置
### 指定本地持久化文件的文件名,默认是dump.rdb
dbfilename redis6379.rdb
save 900 1      #900秒(15分钟)内有1个更改
save 300 10     #300秒(5分钟)内有10个更改
save 60 10000   #60秒内有10000个更改 
  
appendonly yes             #是否打开aof日志功能
appendfsync always      #每1个命令,都立即同步到aof
appendfsync everysec   #每秒写1次
appendfsync no            #写入工作交给操作系统,由操作系统判断缓冲区大小,统一写入到aof.
appendfilename appendonly.aof  #aof文件名
  • 启动程序和关闭程序
1
2
3
4
5
#启动
[root@nginx redis_cluster]# redis-server redis6379/conf/redis6379.conf
 
#关闭
[root@nginx redis_cluster]# redis-cli -h 192.168.1.92 shutdown 

2.基本使用

  • 全局命令
  • 字符串数据类型
  • 列表数据类型
  • 哈希数据类型
  • 集合数据类型

3.持久化  

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
RDB 持久化优缺点
可以在指定的时间间隔内生成数据集的 时间点快照(point-in-time snapshot)。
优点:速度快,适合于用做备份,主从复制也是基于RDB持久化功能实现的。
缺点:会有数据丢失
dir /data/6379
dbfilename dump.rdb
save 900 1      #900秒(15分钟)内有1个更改
save 300 10     #300秒(5分钟)内有10个更改
save 60 10000   #60秒内有10000个更改
 
AOF 持久化优缺点
记录服务器执行的所有写操作命令,并在服务器启动时,通过重新执行这些命令来还原数据集。AOF 文件中的命令全部以 Redis 协议的格式来保存,新命令会被追加到文件的末尾。
优点:可以最大程度保证数据不丢
缺点:日志记录量级比较大
appendonly yes          #是否打开aof日志功能
appendfsync always      #每1个命令,都立即同步到aof
appendfsync everysec    #每秒写1次
appendfsync no          #写入工作交给操作系统,由操作系统判断缓冲区大小,统一写入到aof.
appendfilename appendonly.aof  #文件名
 
RDB和AOF文件同时存在时,会优先读取AOF文件。  

 4.安全认证

1
2
3
4
5
6
7
8
9
10
11
#是否只让本地访问redis数据库
protected-mode yes|no
 
#绑定内网地址
bind 10.0.0.51  127.0.0.1
 
#添加认证密码,最常用
requirepass 123456
 
#认证节点密码
masterauth 12345678 

5.主从复制

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
#每个从节点只能有一个主节点,主节点可以有多个从节点。开启复制有三种方法:
1.在配置文件中加入slaveof {masterHost} {masterPort} 随redis启动生效.
2.在redis-server启动命令后加入—slaveof {masterHost} {masterPort}生效.
3.直接使用命令:slaveof {masterHost} {masterPort}生效.
 
#从节点断开复制命令
> slave of no one
 
#查看主从复制状态
> Info replication
 
#主从复制流程
1.从库发起同步请求
2.主库接收到请求,执行bgsave命令保存数据
3.主库将持久化的数据发送给从库
4.从库接收到主库的数据,先清空自己的数据
4.从库加载主库发来的数据  

6.哨兵  

  • 在创建哨兵集群之前,需要先做好1主2从复制三个节点
  • 创建哨兵服务存放目录,这里是在一台服务器上做的,生产需要分开服务器
1
]# mkdir -pv {redis26379,redis26380,redis26381}/{conf,logs,pid,data}
  • 哨兵26379节点配置(需要密码的话添加sentinel auth-pass mymaster 12345678)
  • 哨兵26380节点配置
  • 哨兵26381节点配置
  • 启动三台哨兵
1
2
3
]# redis-sentinel redis26380/conf/redis26380.conf
]# redis-sentinel redis26381/conf/redis26381.conf
]# redis-sentinel redis26379/conf/redis26379.conf
  • 哨兵启动后,配置文件会发生变化
1
2
3
1)Sentinel节点自动发现了从节点,其余Sentinel节点
2)去掉了默认配置,例如parallel-syncs failover-timeout参数
3)添加了配置纪元相关参数
  • 哨兵节点API命令
1
2
3
4
5
6
7
8
Info Sentinel
Sentinel masters
Sentinel master <master name>
Sentinel slaves <master name>
Sentinel sentinels <master name>
Sentinel get-master-addr-by-name <master name>  
Sentinel failover <master name>
Sentinel flushconfig
  • 手动调整主节点
1
2
3
4
5
6
7
8
9
10
11
12
#Redis Sentinel存在多个从节点时,如果想将指定的从节点晋升为主节点,可以将其他从节点的slavepriority配置为0,但是需要注意failover后,将slave-priority调回原值.
 
1.查询命令:CONFIG GET slave-priority
2.设置命令:CONFIG SET slave-priority 0
3.主动切换:sentinel failover mymaster
 
#db02/db03操作
redis-cli -h db02 -p 6379 CONFIG SET slave-priority 0
redis-cli -h db03 -p 6379 CONFIG SET slave-priority 0
 
#db01操作
redis-cli -h db01 -p 26379 Sentinel failover mymaster

  

  

 

 

 

 

posted @   ForLivetoLearn  阅读(217)  评论(0编辑  收藏  举报
编辑推荐:
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
阅读排行:
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· DeepSeek在M芯片Mac上本地化部署
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
点击右上角即可分享
微信分享提示