安装
源码安装
按照 Redis 官网进行安装.
yum 安装
yum -y install Redis
多实体
备份 Redis.conf
cp Redis.conf Redis.conf.bak
修改 Redis.conf
- # 写入时去掉注释
- port 6379
- daemonize no #后台运行 Redis
- pidfile /data/6379/Redis.pid #将 Redis 进程的 id 写入到 Redis.pid 这个文件
- loglevel notice #日志级别
- logfile "/data/6379/redis.log"
- dir /data/6379 #配置 Redis 数据存放点
- protected-mode yes #redis3.0 之后的安全模式
- requirepass qiangdademima #给 Redis 添加密码
Redis 的安全模式, 可能会阻挡你远程连接, 为了解决这个安全模式, 给 Redis 设置一个密码
查看 Redis 密码
127.0.0.1:6379>CONFIG get requirepass
设置密码
127.0.0.1:6379> CONFIG set requirepass "password"
发布订阅
PUBLISH channel msg
将信息 message 发送到指定的频道 channel
SUBSCRIBE channel [channel ...]
订阅频道, 可以同时订阅多个频道
UNSUBSCRIBE [channel ...]
取消订阅指定的频道, 如果不指定频道, 则会取消订阅所有频道
PSUBSCRIBE pattern [pattern ...]
订阅一个或多个符合给定模式的频道, 每个模式以 * 作为匹配符, 比如 it* 匹配所 有以 it 开头的频道 ( it.news , it.blog , it.tweets 等等), news.* 匹配所有 以 news. 开头的频道 ( news.it , news.global.today 等等), 诸如此类
PUNSUBSCRIBE [pattern [pattern ...]]
退订指定的规则, 如果没有参数则会退订所有规则
PUBSUB subcommand [argument [argument ...]]
查看订阅与发布系统状态
注意: 使用发布订阅模式实现的消息队列, 当有客户端订阅 channel 后只能收到后续发布到该频道的消息, 之前发送的不会缓存, 必须 Provider 和 Consumer 同时在线.
持久化
Redis 是内存型数据库, 服务器进程关闭后数据会丢失, 所以需要进行持久化操作.
RDB 持久化
将数据保存到硬盘中, 可以手动执行, 也配置 Redis.conf 定期执行. 产生的 rdb 文件是一个经过压缩的二进制文件.
rdb 通过在 Redis.conf 使用 save 命令触发.
- # 配置详情
- daemonize yes
- port 6379
- logfile /data/6379/Redis.log
- dir /data/6379 #定义持久化文件存储位置
- dbfilename dbmp.rdb #rdb 持久化文件
- bind 10.0.0.10 127.0.0.1 #Redis 绑定地址
- requirepass RedHat #Redis 登录密码
- save 900 1 #rdb 机制 每 900 秒 有 1 个修改记录
- save 300 10 #每 300 秒 10 个修改记录
- save 60 10000
AOF 持久化
记录服务器执行的所有变更操作命令 (例如 set del 等), 并在服务器启动时, 通过重新执行这些命令来还原数据集. AOF 文件中的命令全部以 Redis 协议的格式保存, 新命令追加到文件末尾.
- # 配置详情
- daemonize yes
- port 6379
- logfile /data/6379/Redis.log
- dir /data/6379
- dbfilename dbmp.rdb
- requirepass RedHat
- save 900 1
- save 300 10
- save 60 10000
- appendonly yes
- appendfsync everysec
不重启情况下将 rdb 切换为 aof,rdb 中已有的数据也要转到 aof
1. 准备 Redis.conf 配置文件, 确保开启 rdb 功能, 配置参数如下
- port 6379
- daemonize yes
- pidfile /data/Redis.pid
- loglevel notice
- logfile "/data/redis.log"
- dir /data/
- dbfilename dbmp.rdb
- save 900 1
- save 300 10
- save 60 10000
2. 启动 Redis 服务端
Redis-server Redis.conf
3. 插入 Redis 数据, 通过 save 命令, 强制写入持久化 rdb 文件 (此时还是使用 rdb 持久化)
- set name shahe
- set age 11
- save
4. 通过命令, 切换到 aof 持久化,(注意此步只是临时生效, 必须将 AOF 的配置, 写入 Redis.conf)
- 127.0.0.1:6379> CONFIG set appendonly yes #开启 AOF 功能
- OK
- 127.0.0.1:6379> CONFIG SET save "" #关闭 RDB 功能
- OK
5. 修改配置文件, 添加 aof 参数,(此步重启后, rdb 持久化完全切换 aof 持久化, 且数据保持一致)
- port 6379
- # Redis 后台启动
- daemonize yes
- # 安全模式
- protomode yes
- # 设置密码
- requirepass xxxx
- # 存放 Redis pid 的文件
- pidfile /data/Redis.pid
- loglevel notice
- logfile "/data/redis.log"
- # 指明 Redis 数据目录
- dir /data/
- appendonly yes
- appendfsync everysec
6. 重启 Redis 服务
Redis 持久化方式有哪些? 有什么区别?
rdb: 基于快照的持久化, 速度更快, 一般用作备份, 主从复制也是依赖于 rdb 持久化功能
aof: 以追加的方式记录 Redis 操作日志的文件. 可以最大程度的保证 Redis 数据安全, 类似于 MySQL 的 binlog
Redis 主从配置
在从库的 Redis.conf 中添加: slaveof 主库 ip, 主库 port
手动主从切换
当主库挂了
手动选一个 slave 作为主库, 将被选为主库的 slave 设置, slaveof no one
在其他 slave 配置 slave 新主库的 ip port
主从同步的好处
保存数据安全, 主从及其两份数据
读写分离, 缓解主库压力 (主库: 可读可写, 从库: 只读)
缺点
手动主从切换
哨兵
Redis-Sentinel 是 Redis 官方推荐的高可用性解决方案,
当用 Redis 作 master-slave 的高可用时, 如果 master 本身宕机, Redis 本身或者客户端都没有实现主从切换的功能.
而 Redis-sentinel 就是一个独立运行的进程, 用于监控多个 master-slave 集群,
自动发现 master 宕机, 进行自动切换 slave> master.
主要功能
不时的监控 Redis 是否良好运行, 如果节点不可达就会对节点进行下线标识.
如果被标识的是主节点, sentinel 就会和其他的 sentinel 节点 "协商", 如果其他节点也人为主节点不可达, 就会选举一个 sentinel 节点来完成自动故障转义.
在 master-slave 进行切换后, master_redis.conf,slave_redis.conf 和 sentinel.conf 的内容都会发生改变, 即 master_redis.conf 中会多一行 slaveof 的配置, sentinel.conf 的监控目标会随之调换.
配置信息
- # 主节点 master 的 Redis-6379.conf
- port 6379
- daemonize yes
- logfile "6379.log"
- dbfilename "dump-6379.rdb"
- dir "/var/redis/data/"
- # 从节点 slave 的 Redis-6380.conf
- port 6380
- daemonize yes
- logfile "6380.log"
- dbfilename "dump-6380.rdb"
- dir "/var/redis/data/"
- slaveof 127.0.0.1 6379 // 从属主节点
- # 从节点 slave 的 Redis-6381.conf
- port 6381
- daemonize yes
- logfile "6380.log"
- dbfilename "dump-6380.rdb"
- dir "/var/redis/data/"
- slaveof 127.0.0.1 6379 // 从属主节点
- # 启动 Redis 主节点和从节点
- Redis-server /etc/Redis-6379.conf
- Redis-server /etc/Redis-6380.conf
- Redis-server /etc/Redis-6381.conf
- # 配置 Redis sentinel
- ## 分别写入 Redis-sentinel-26379.conf,Redis-sentinel-26380.conf,Redis-sentinel-26381.conf. 注意修改端口
- // Sentinel 节点的端口
- port 26379
- dir /var/Redis/data/
- logfile "26379.log"
- // 当前 Sentinel 节点监控 192.168.119.10:6379 这个主节点
- // 2 代表判断主节点失败至少需要 2 个 Sentinel 节点节点同意
- // mymaster 是主节点的别名
- sentinel monitor mymaster 192.168.119.10 6379 2
- // 每个 Sentinel 节点都要定期 PING 命令来判断 Redis 数据节点和其余 Sentinel 节点是否可达, 如果超过 30000 毫秒 30s 且没有回复, 则判定不可达
- sentinel down-after-milliseconds mymaster 30000
- // 当 Sentinel 节点集合对主节点故障判定达成一致时, Sentinel 领导者节点会做故障转移操作, 选出新的主节点,
原来的从节点会向新的主节点发起复制操作, 限制每次向新的主节点发起复制操作的从节点个数为 1
- sentinel parallel-syncs mymaster 1
- // 故障转移超时时间为 180000 毫秒
- sentinel failover-timeout mymaster 180000
- # 启动哨兵
- Redis-sentinel /etc/Redis-sentinel-26379.conf
- Redis-sentinel /etc/Redis-sentinel-26380.conf
- Redis-sentinel /etc/Redis-sentinel-26381.conf
查看哨兵信息
Redis-cli -p 哨兵 port info sentinel
Redis-cli info replication 查看 Redis 的复制授权信息
Redis-cli info 查看数据库信息
Redis 集群
待续
来源: http://www.bubuko.com/infodetail-3050334.html