11/6日Redis笔记
cat redis.conf 发现内容太多,进行搜索过滤
cat redis.conf | grep -v "#" |grep -v "^$">redis-6379.conf 把注释和空格去掉,然后创建文件并复制到redis-6379.conf 这个文件,然后开始配置文件,
端口号port6379不变,daemonize yes守护进程开启(redis 将服务不会运行一次就结束,将会一直运行),配置日志文件logfile "6379.log"和目录dir /root/redis-6.0.9/data
(目录的设置方式是你在Redis文件夹创建data目录的路径,使用pwd查看路径)
启动Redis server,src/redis-server redis-6379.conf
,查看后台进程是否启动
ps -ef |g在·rep redis-
然后在创建一个conf文件夹mkdir conf
mv redis-6379.conf conf
src/redis-server conf/redis-6379.conf
配置多端口 Redis服务器
cp redis-6379.conf redis-6380.conf
复制成功后在里面修改 6380的端口和6380的日志文件
手动启动6380端口的服务,在后台验证下是否启动成功
启动客户端,验证是否成功
可以去查看日志,第一步,进入data目录,第二步,查看一下有日志,第三步,查看6380端口的日志
Redis 持久化
简介
把当前进程的数据生成快照保存在硬盘的整个过程。
原因
进行持久化的主要用途是为了防止意外发生而造成数据丢失的情况发生,确保数据的安全性。
RDB和AOF的区别
RDB(快照):把当前数据进行保存快照形式,存储数据的结果,储存格式简单
AOF(日志):把当前数据操作过程进行保存,储存操作过程,储存格式复杂
RDB启动方式
使用save命令
之前和之后的数据变化,执行命令之后可以查询到多了一个rdb快照文件
在数据库里面增加数据之后可以看到rdb的文件大小在变大
进入conf目录,编辑端口号6379的conf,添加
dbfilename dump-6379.rdb(本地数据库文件名)
rdbcompression yes(设置本地数据库压缩数据,默认为yes,也可以改为no,但会是文件体积增大)
rdbchecksum yes(设置是否进行RDB文件格式效验,这种效验方式在写入文件和读取文件的过程中同时进行,默认是开启的状态,如果关闭的话,可以减少时间性能,但是储存文件的数据可能纯在损坏的风险)
之后再kill端口号6379的服务进程。重新手动启动Redis服务
添加数据,并保存,然后再进入data目录查看,发现多了一个dump-6379的rdb数据,
之后又添加数据,发现再次查看rdb的时候,可以看到又多了一个数据
save指令工作原理
save指令会阻塞Redis服务器,因为Redis服务器工作是按照单线程任务执行的,所有指令都在一个队列里执行,知道整个持久化过程完成,可能造成长时间的阻塞。
数据恢复演示过程
首先查看进程,然后杀死进程,在重新启动进程,之后再打开客服端,就可以查询数据了(key).
为了解决单线程阻塞,影响效率
使用bgsave,可以在后台执行操作,对save阻塞进行的优化。
eg:先添加一个数据,然后在执行bgsave命令,查看日志,可以在后台看到success提示。
bgsave指令工作原理
1.发送bgsave指令
2.调用fork函数生成子线程
3.创建.rdb文件
4.返回Background saving terminated with success。