1. 前言
Redis是现阶段使用非常广泛的一个高性能的key-value数据库。日前因遇到需要Redis的双机灾备方案,在实操阶段将整个流程整理如下。
Redis与其他key-value数据库相比有以下特点:
- Redis支持数据数据化,可以将内存中的数据保存到磁盘中,重启的时候可以再次加载使用;
- Redis不仅仅支持key-value类型数据,同时还支持list,set,zset,hash等数据结构的存储;
- Redis支持数据的备份,即master-slave模式的备份。
2. 基础环境
操作系统版本:Centos 7.9
操作系统主机名:region01
操作系统IP:192.168.158.11
Redis版本:redis-5.0.9
操作系统需要可以联网,以下操作均在可连接互联网的情况下操作。
3. 编译安装
3.1 下载Redis对应版本的源码包
在进行安装以前,需要提前下载redis-5.0.9的源码包。如果操作系统可以联网,可直接按照下述步骤操作。 如果操作系统不能联网,请自行下载redis源码包,并上传到操作系统中。
# 请提前安装wget、gcc及其他依赖
[root@region01 soft]# yum -y install wget gcc make tcl
[root@region01 soft]# wget http://download.redis.io/releases/redis-5.0.9.tar.gz
# 此命令会将源码包下载到服务器当前路径下,我这的路径是:/data/soft
# 下载完成后,确认redis源码包已存在
[root@region01 soft]# ll -h redis-5.0.9.tar.gz
3.2 解压并编译安装Redis
# 解压下载的源码包redis-5.0.9.tar.gz
[root@region01 soft]# tar -zvxf redis-5.0.9.tar.gz
# 查看解压后的内容并进入解压后目录
[root@region01 soft]# ll -h
[root@region01 soft]# cd redis-5.0.9
# 编译安装redis-5.0.9,指定redis编译后目录在/usr/local/redis
[root@region01 redis-5.0.9]# make && make PREFIX=/usr/local/redis install
# 设置软连接到环境变量(注意路径需要使用绝对路径)
[root@region01 redis-5.0.9]# ln -sf /usr/local/redis/bin/* /usr/local/bin/
3.3 编辑Redis配置文件,启动Redis-server服务
在启动Redis-server以前,需要先行边界redis.conf文件,来进行一些基础的配置。
# 创建/etc/redis目录
[root@region01 redis-5.0.9]# mkdir -p /etc/redis
# 在/etc/redis目录下配置redis.conf文件(redis服务的配置文件)。
# 具体配置项可参照/data/soft/redis-5.0.9/redis.conf。
# 其中重点关注以下参数:
# dir 表示数据持久化路径
# logfile 表示日志文件路径
# bind 可访问此redis服务的ip,可直接写成bind 0.0.0.0
# daemonize 表示是否后台启动
# requirepass 表示redis服务的密码
# appendonly 表示是否开启AOF持久化
# 以下为当前例子的redis.conf可直接粘贴使用
[root@region01 redis]# cat /etc/redis/redis.conf
# 以下为redis.conf具体内容
port 6379
bind 0.0.0.0
daemonize yes
databases 16
requirepass "78e13a"
always-show-logo yes
save 900 1
save 300 10
save 60 10000
dbfilename dump.rdb
dir /data/redis/data
appendonly yes
logfile "/data/redis/logs/redis.log"
protected-mode no
appendfilename "appendonly.aof"
# replicaof <masterip> <masterport>
masterauth 78e13a
replica-priority 100
# replica-announce-ip 5.5.5.5
# replica-announce-port 26379
timeout 0
tcp-keepalive 300
supervised no
pidfile /var/run/redis_6379.pid
loglevel notice
replica-lazy-flush no
stop-writes-on-bgsave-error yes
rdbcompression yes
rdbchecksum yes
replica-serve-stale-data yes
replica-read-only yes
repl-diskless-sync no
repl-diskless-sync-delay 5
# repl-ping-replica-period 10
# repl-timeout 60
repl-disable-tcp-nodelay no
# repl-backlog-ttl 3600
# min-replicas-to-write 1
# min-replicas-max-lag 10
# maxclients 10000
# maxmemory <bytes>
# maxmemory-policy noeviction
# replica-ignore-maxmemory yes
lazyfree-lazy-eviction no
lazyfree-lazy-expire no
lazyfree-lazy-server-del no
appendfsync everysec
no-appendfsync-on-rewrite no
auto-aof-rewrite-percentage 100
auto-aof-rewrite-min-size 64mb
aof-load-truncated yes
aof-use-rdb-preamble yes
lua-time-limit 5000
slowlog-log-slower-than 100000
slowlog-max-len 128
latency-monitor-threshold 0
hash-max-ziplist-entries 512
hash-max-ziplist-value 64
list-max-ziplist-size -2
list-compress-depth 0
set-max-intset-entries 512
zset-max-ziplist-entries 128
zset-max-ziplist-value 64
hll-sparse-max-bytes 3000
stream-node-max-bytes 4096
stream-node-max-entries 100
activerehashing yes
client-output-buffer-limit normal 0 0 0
client-output-buffer-limit replica 256mb 64mb 60
client-output-buffer-limit pubsub 32mb 8mb 60
# proto-max-bulk-len 512mb
hz 10
dynamic-hz yes
aof-rewrite-incremental-fsync yes
rdb-save-incremental-fsync yes
3.4 启动redis服务
指定redis.conf配置文件,直接后台启动redis-server。
注意此处使用的redis密码为: 78e13a
# 启动脚本
[root@region01 redis]# redis-server /etc/redis/redis.conf
# 通过6379端口,查看服务是否启动
[root@region01 redis]# ss -tnlp|grep 6379
显示如上图表示redis服务启动成功
3.5 向systemctl管理工具注册redis服务
平常见到的启停服务都是通过systemctl工具进行启停的,那redis服务能否通过相同的方法启停呢?答案是肯定的。
可直接按照以下步骤,完成Redis的注册。
# 编辑systemctl服务配置文件
[root@region01 utils]# vim /usr/lib/systemd/system/redis.service
# 以下均为redis.service内容
[Unit]
Description=Redis
After=network.target
[Service]
Type=forking
PIDFile=/var/run/redis_6379.pid
# `请据实修改redis-server及redis.conf路径`
ExecStart=/usr/local/bin/redis-server /etc/redis/redis.conf
ExecReload=/bin/kill -s HUP $MAINPID
ExecStop=/bin/kill -s QUIT $MAINPID
PrivateTmp=true
[Install]
WantedBy=multi-user.target
# 重载systemctl服务
[root@region01 utils]# systemctl daemon-reload
# 检查redis是否可用systemctl管理
# 确认redis服务未启动
[root@region01 utils]# ss -tnlp|grep 6379
# 使用systemctl启动redis服务
[root@region01 utils]# systemctl start redis
# 使用systemctl查看redis服务状态
[root@region01 utils]# systemctl status redis
# 确认redis服务已启动
[root@region01 utils]# ss -tnlp|grep 6379
# 如果上述命令运行结果如下图,则证明redis注册成功。
3.6 Redis常用命令
下面是例举的一些Redis常用的命令
# 服务器进入redis服务:
# -h 表示redis服务IP
# -p 表示redis服务端口
[root@region01 ~]# redis-cli -h 192.168.158.11 -p 6379
# 进入redis,常用命令如下:
# auth password 进行身份认证
192.168.158.11:6379> auth 78e13a
OK
# keys * 显示redis里所有的key
192.168.158.11:6379> keys *
1) "test3"
2) "test1"
3) "test2"
4) "test0"
# select 切换数据库
192.168.158.11:6379> select 9
OK
# flushall 清除所有数据库数据
# flushdb 只清楚当前数据库数据
192.168.158.11:6379[9]> flushall
OK
192.168.158.11:6379[9]> keys *
(empty list or set)
# set 设置key-value对
192.168.158.11:6379[9]> set test_now nosql
OK
# get 查看key对应的value
192.168.158.11:6379[9]> get test_now
"nosql"
# exit 退出redis
192.168.158.11:6379[9]> exit
|