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高版本兼容低版本,低版本不兼容高版本
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只会记录最后的结果,中间的过程不会记录多余的 减少记录的内容,恢复的时候会更加的快速
配置文件添加
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,设个密码安全些