Redis进阶学习

Redis的配置文件

  1. Redis配置文件unit单位不区分大小写(1MB与1mb相同的效果)

  2. 能够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)从不同步保存(效率最高)

相关推荐
前路不黑暗@2 小时前
Java项目:Java脚手架项目的统一模块的封装(四)
java·开发语言·spring boot·笔记·学习·spring cloud·maven
卓怡学长2 小时前
m225在线房屋租赁和电子签约系统的设计与实现
java·数据库·spring·tomcat·maven·intellij-idea
tod1133 小时前
Redis 数据类型与 C++ 客户端实践指南(redis-plus-plus)
前端·c++·redis·bootstrap·html
一生有你20203 小时前
powerdesigner使用逆向工程生成物理模型
数据库
简佐义的博客3 小时前
单细胞+空间转录组+ChIP-seq:这篇Nature研究在分析思路、方法学选择以及证据链构建方面均具有极高的学习价值
学习
zcn1263 小时前
时间条件高效用法
数据库·sql优化改写
前路不黑暗@3 小时前
Java项目:Java脚手架项目的通用组件的封装(五)
java·开发语言·spring boot·学习·spring cloud·bootstrap·maven
zcn1263 小时前
消除无关列
数据库·sql优化改写
哈库纳玛塔塔3 小时前
dbVisitor 利用 queryForPairs 让键值查询一步到位
java·数据库·python