Redis的配置文件
-
Redis配置文件unit单位不区分大小写(1MB与1mb相同的效果)
-
能够include其他文件,然后组成新的配置文件,Redis支持通过include指令引入其他配置文件 ,Redis的include是简单的文件内容合并(相当于Java中的import功能)
3.网络模块的配置:bind 127.0.0.1 #绑定的IP
protected-mode yes #是否开启保护模式(默认开启)
port 6379 #端口号(默认6379)
4.通用模块的配置
daemonize yes #开启守护进程,以守护进程的方式运行,默认是no,我们需要手动开启
#守护进程就是能够后台继续运行程序,以至于我们离开redis后,它能够继续正常运行
loglevel notice #日志级别
#日志一共四个级别分别是
debug(许多信息,生产和测试时使用)
verbose(大量信息)
notice(少量信息,上线时用)
warning(极少量信息)
logfile "" #日志文件位置,空的话默认直接输出
datebases 16 #数据库数量,默认16个数据库
5.快照模块的配置(rdb文件的配置)
快照就是在规定的时间内,执行了多少次,则会持久化到.rdb 文件或者.rof文件 (默认使用rdb文件进行保存)
redis是内存数据库,如果没有持久化,则数据断电及失
#如果900s内,至少有1 key进行了修改,则进行持久化保存,可以自定义设置
save 900 1
dbfilename dump.rdb #设置rdb文件的文件名
rebchecksum yes # 保存rdb文件时,进行错误的检查校验
dir ./ #rdb文件的保存路径(./代表在当前目录下)
6.Security(安全)模块的配置
reids中默认不设置密码,但是我们可以通过配置文件或者是命令台来设置密码
下面是命令台形式设置密码
config get requirepass #得到密码
config set requirepass "123456" #设置密码为123456
设置密码后如果想要对redis发送命令执行相应的操作就需要先登录,否则会报错
命令台中进行登录如下:
auth 123456
7.客户端的限制
maxclients 10000 #设置redis连接客户端的最大数量
maxmemory-policy noeviction #设置内存达到上限之后的策略,常用的6种策略如下
1. noeviction(默认策略)
机制:内存达到上限后,不淘汰任何数据
结果:所有写请求(SET、LPUSH等)返回错误,读请求正常
适用:不允许任何数据丢失的业务,如用户会话数据
2. allkeys-lru(最常用)
机制:在所有键中,淘汰最近最少使用的键
特点:保留最近访问过的热数据
适用:大部分业务场景,访问有明显热点(如用户Token、商品缓存)
3. volatile-lru
机制:仅在设置了过期时间的键中,淘汰最近最少使用的键
特点:未设过期时间的键永远不被淘汰
适用:混合存储(永久数据+缓存数据)的场景
4. allkeys-random
机制:在所有键中,随机淘汰任意键
特点:简单粗暴,无访问频率考量
适用:数据访问非常均匀,无明显热点的场景
5. volatile-random
机制:仅在设置了过期时间的键中,随机淘汰任意键
适用:缓存数据分布均匀,且不希望淘汰永久数据的场景
6. volatile-ttl
机制:在设置了过期时间的键中,淘汰剩余生存时间最短的键
特点:优先淘汰即将过期的数据
适用:希望让数据自然过期,但过期速度跟不上写入速度时
8.Append Only File模式配置(aof配置)(先简单的了解,下面有详细的)
appendonly no #默认不开启aof,默认使用rdb持久化文件进行保存
appendfilename "appendonly.aof" #持久化文件的名字,如果使用rdb文件进行保存的话,那文件后缀就是.rdb
appendfsync everysec #每秒进行一次同步保存
#appendfsync always 每次修改aof文件,都会进行同步保存,消耗性能
#appendfsync no 不进行同步
auto-aof-rewrite-percentage 100 #当AOF文件大小相比上一次重写后的文件大小增长比例达到100%时,Redis会自动触发AOF重写
auto-aof-rewrite-min-size 64mb #aof文件达到64之后,会再生成一个新的aof文件
Redis持久化
redis是内存数据库,如果没有持久化,则数据断电及失,以下是两种redis的持久化文件
RDB文件
1.rdb文件的原理:
RDB持久化通过创建子进程 ,利用操作系统的写时复制(Copy-on-Write)机制,在完全不影响主进程 处理客户端请求的情况下,对某一时刻的内存数据生成完整的二进制快照文件并写入磁盘。
2.rdb文件的触发规则:
(1)当满足save条件 时会触发,会生成rdb文件(save 900 1 # 900秒内至少1次修改)
(2)关闭redis 时会触发(如执行shutdown命令)
(3)执行flushall 命令时会触发
(4)主从复制触发:节点执行全量同步时,主节点会自动生成 RDB 文件传输给从节点
3.rdb文件的默认名是dump.rdb(在配置文件种设置,上面的快照配置中有)
4.如何恢复rdb文件
只需要将rdb文件放到redis的启动目录下就可以了,这样redis在启动时会自动检查,然后就能恢复rdb文件中的数据了
config get dir #得到启动目录的路径
"dir"
"/user/local/bin" #启动目录的路径,将rdb文件放到此目录下即可
5.rdb文件的优点:
适合大规模数据的存储和恢复(因为他是创建一个子进程进行相应的恢复和存储,完全不影响主进程)
6.rdb文件的缺点:
(1)对数据的完整性要求不能高(因为他是每过一段时间,才能进行的保存,如果期间宕机了,那么数据就丢失了)
(2)创建子进程的时候会占用一些内存空间
AOF文件(APPEND ONLY FILE)
1.AOF的原理:Redis主进程在执行完每条写命令后,实时将其追加到内存缓冲区 ,然后根据配置的策略 (如每秒)将缓冲区内容写入磁盘的AOF文件;当Redis重启时,会逐条重新执行AOF文件中记录的所有命令来恢复数据。
2.aof默认是不开启的 ,需要到配置文件中手动开启(配置文件中改成这样appendonly yes)
3.rdb文件的默认名是appendonly.aof(在配置文件种设置,上面的aof配置中有)
4.如果我们保存的aof文件出现了错误,我们是启动不了我们的redis的,
我们可以使用我们的redis-check-aof --fix appendonly.aof这条命令先对aof文件进行修复,然后再重新启动我们的redis
5.aof同步策略: (上面的配置文件)
(1)每次修改都同步保存(数据完整率最高但是效率最低)
(2)每过一秒进行保存(可能会丢失这一秒的数据)
(3)从不同步保存(效率最高)