RDB和AOF持久化
1. RDB
RDB:类似于快照的形式,当前内存里的状态持久化到硬盘里
优点:压缩格式/恢复速度快
缺点:不是实时的,可能会丢失数据,操作比较重
配置,配置文件
添加
save 900 1
save 300 10
save 60 10000
dbfilename redis.rdb
dir /data/redis_6379/
完整的配置文件
#以守护进程的方式启动
daemonize yes
#绑定主机的ip
bind 127.0.0.1 192.168.80.51
#端口
port 6379
#pid和log文件的存放位置
pidfile /opt/redis_6379/pid/redis_6379.pid
logfile /opt/redis_6379/logs/redis_6379.log
#RDB持久化的配置,文件名称,含义,900秒一个改变就bgsave,300秒10个,60秒10000个,任意的一个
#条件满足就自动的保存,执行shutdown的时候会先bgsave在shutdown
save 900 1
save 300 10
save 60 10000
dbfilename redis.rdb
#本地的数据库的目录
dir /data/redis_6379/
重启
redis-cli shutdown
redis-server /opt/redis_6379/conf/redis_6379.conf
模拟数据
vim sj.sh
#!/bin/bash
for i in {1..1000}
do
redis-cli -h db01 set k_${i} v_${i}
echo "ok"
done
手动的执行,bgsave
db01:6379> BGSAVE
Background saving started
我们shutdown自动会保存
db01:6379> shutdown
结论
1.没有配置save参数时,shutdown不会持久化保存
2.没有配置save参数时,可以手动执行bgsave触发持久化
3.在配置了save参数后,shutdown,kill,pkill都会自动触发bgsave
4.恢复的时候,rdb文件名要和配置文件里写的一样。
5.RDB高版本兼容低版本,低版本不兼容高版本
2. AOF
AOF:类似于mysql的binlog,可以设置为每秒/每次操作以追加的形式持久化
优点:安全,最多损失1秒的数据,可读
缺点:文件比较大,恢复速度慢
配置
appendonly yes
appendfilename "redis.aof"
appendfsync everysec
#以守护进程的方式启动
daemonize yes
#绑定主机的ip
bind 127.0.0.1 192.168.80.51
#端口
port 6379
#pid和log文件的存放位置
pidfile /opt/redis_6379/pid/redis_6379.pid
logfile /opt/redis_6379/logs/redis_6379.log
#本地的数据库的目录
dir /data/redis_6379/
#开启aof
appendonly yes
#文件保存的名称
appendfilename "redis.aof"
#每秒写一次
appendfsync everysec
重启:
redis-cli shutdown
redis-server /opt/redis_6379/conf/redis_6379.conf
当aof与rdb同时存在的时候,重启redis会先读取aof文件保存的为准
aof的重写机制
假若我们插入多个数据,最后我们么删除的一些
那么aof只会记录最后的结果,中间的过程不会记录多余的
减少记录的内容,恢复的时候会更加的快速
3. 用户认证
配置文件添加
requirepass yq
重启
redis-cli shutdown
redis-server /opt/redis_6379/conf/redis_6379.conf
登录
第一种:AUTH yq
[root@db01 opt]# redis-cli
127.0.0.1:6379>
127.0.0.1:6379>
127.0.0.1:6379> keys *
(error) NOAUTH Authentication required.
127.0.0.1:6379> AUTH yq
OK
127.0.0.1:6379> get k_1
"v_1"
127.0.0.1:6379>
第二种 redis-cli -a yq
[root@db01 opt]# redis-cli -a yq
Warning: Using a password with '-a' or '-u' option on the command line interface may not be safe.
127.0.0.1:6379>
密码简单?
1.redis一般都部署在内网环境,默认是比较安全的环境
2.有同学担心密码写在配置文件里,开发不允许登陆到Linux服务器上,但是可以连接到redis,设个密码安全些