了解RDB和AOF这两种持久化方式的应用和区别

redis配置和安装

安装

$ wget http://download.redis.io/releases/redis-4.0.14.tar.gz
$ tar xzf redis-4.0.14.tar.gz
$ mv redis-4.0.14 redis
$ make

修改环境变量

vim /etc/profile 
export PATH=/data/redis/src:$PATH
source /etc/profile 

基本配置文件

mkdir -p /opt/modules/redis/conf/6379/
cat > /opt/modules/redis/conf/6379/redis.conf<<EOF
daemonize yes
port 6379
logfile /opt/modules/redis/conf/6379/redis.log
dir /opt/modules/redis/conf/6379
dbfilename dump.rdb
EOF


# 配置文件说明
redis.conf
是否后台运行:
daemonize yes
默认端口:
port 6379
日志文件位置
logfile /var/log/redis.log
持久化文件存储位置
dir /data/6379
RDB持久化数据文件:
dbfilename dump.rdb

启动测试

redis-server /opt/modules/redis/conf/6379/redis.conf
redis-cli

redis安全配置说明

允许远程连接

redis默认开启了保护模式,只允许本地回环地址登录并访问数据库。需要远程分为需要配置文件中加入

protected-mode no (yes保护模式,是否只允许本地访问)

绑定指定ip并设置密码

# Bind :指定IP进行监听
vim /opt/modules/redis/conf/6379/redis.conf
bind 192.168.3.66  127.0.0.1

# 增加requirepass  {password}
vim /opt/modules/redis/conf/6379/redis.conf
requirepass 123456

进行验证


[root@node1 6379]# redis-cli -a 123456
127.0.0.1:6379> set name a 1
OK
# 方法二:
[root@node1 6379]# redis-cli
127.0.0.1:6379> auth 123456
OK
127.0.0.1:6379> set a 2
[root@node1 6379]# redis-cli -a 123 -h 10.0.0.51 -p 6379
192.168.3.66:6379> set b 3
OK

redis不重启修改配置,一般先在线修改,然后修改配置文件,下次重启后生效。

CONFIG GET *
CONFIG GET requirepass
CONFIG GET r*
CONFIG SET requirepass 666666

redis持久化

redis支持两种持久化功能 RDBAOF

RDB 持久化

指定的时间间隔内生成数据进行快照,比如在1点做了个快照,2点在做一个快照,会把上次的数据覆盖。是基于时间点的快照。

  • 优点:速度快,适合于用做备份,主从复制是基于RDB持久化功能实现的。
  • 缺点:会有数据丢失

: 因为RDB是基于时间间隔的,看业务需求,如果容忍度大的话,可以丢失一部分数据的话,就可以采用RDB,否则就采用AOF。

参数设置

# 配置文件添加一下配置
dir /opt/modules/redis/conf/6379
dbfilename dump.rdb
# 上面两行已经在基础配置文件中设置过只添加下面即可
save 900 1
save 300 10
save 60 10000

# 配置说明:
# 900秒(累计15分钟)内有1个变更的话就save一下
# 300秒(5分钟)内有10个更改
# 60秒内有10000个更改

AOF持久化

记录服务器执行的所有写命令,并在服务器启动时,通过重新执行这些命令来还原数据。
AOF文件中的命令是以文本格式来保存,新命令会被追加到文件的末尾。

  • 优点:可以最大程度保证数据不丢
  • 缺点:日志记录量级比较大

配置

# 配置文件写入
appendonly yes
appendfsync always

# 配置说明
# appendonly 是否打开aof日志功能
# appendfsync 
# 1.always 每次修改都会记录aof 
# 2.everysec 每秒写1次,可以容忍都是1秒的数据选择该项
# 3.no 写入工作交给操作系统,由操作系统判断缓冲区大小,统一写入到aof

区别

RDB:基于快照的持久化,速度更快,一般用作备份,主从复制依赖于rdb持久化功能。

AOF:类似于mysql的binlog,追加形式记录redis操作日志的文件,记录的是真是的数据,而不是像RDB那样的快照。