【Redis】Redis进阶

一、Redis.conf详解

  1. 基本配置信息在这里插入图片描述
  2. INCLUDES(导入配置文件)在这里插入图片描述
  3. NetWork (网络)
绑定的ip:		bind 127.0.0.1     

保护模式:		protected-mode yes  

绑定的端口号:	port 6379  
  1. General(通用)
后台运行,默认no,需要设为yes:			 daemonize no  

后台运行需要指定pid文件:    	 pidfile /var/run/redis_6379.pid

默认数据库个数: 				 databases 16

是否总是显示logo:			 always-show-logo yes

日志级别:
# Specify the server verbosity level.
# This can be one of:
# debug (a lot of information, useful for development/testing)    测试开发阶段
# verbose (many rarely useful info, but not a mess like the debug level)   
# notice (moderately verbose, what you want in production probably)   重要通知,生产环境
# warning (only very important / critical messages are logged)  关键信息
loglevel notice  # 日志的文件位置名
  1. SNAPSHOTTING(快照)
    持久化操作
    在这里插入图片描述
# 900s内,1个key进行了修改,我们进行持久化操作
save 900 1

# 300内,10个key进行了修改,我们进行持久化操作
save 300 10

# 60s内,10000个key进行了修改,我们进行持久化操作
save 60 10000

# 持久化出错,是否继续工作
stop-writes-on-bgsave-error yes

# 是否压缩rdb(持久化文件)文件
rdbcompression yes

#保存rdb文件,错误校验
rdbchecksum yes

# rdb持久化存储文件
dbfilename dump.rdb

# rdb文件保存目录
dir ./
  1. REPLICATION(主从复制)
    在这里插入图片描述
  2. SECURITY(安全)
# 设置密码 默认没有密码
requirepass 1234
命令设置密码:
CONFIG SET requirepass 1234
命令获取密码:
CONFIG GET requirepass
密码登陆:
AUTH 1234 

在这里插入图片描述

  1. CLIENTS(限制)
# 最大客户端连接数
maxclients 10000

# 最大内存容量
maxmemory <bytes>

# 内存到达上线的处理策略
maxmemory-policy  noeviction
				1、volatile-lru:只对设置了过期时间的key进行LRU(默认值) 
				2、allkeys-lru : 删除lru算法的key   
				3、volatile-random:随机删除即将过期key   
				4、allkeys-random:随机删除   
				5、volatile-ttl : 删除即将过期的   
				6、noeviction : 永不过期,返回错误
  1. APPEND ONLY MODE (模式)
# 默认不开启aof模式,默认rdb模式,大多数情况是够用的
appendonly no

# 持久化文件名称
appendfilename "appendonly.aof"

# appendfsync always  # 修改一次执行一次
appendfsync everysec  # 每秒执行一次,sync可能会丢失
# appendfsync no 	  # 自己同步

二、持久化

RDB

  • rbd存储文件:dbfilename dump.rdb在这里插入图片描述
    如果这个目录下存在.rdb文件,启动会自动恢复其中的数据
    127.0.0.1:6379> CONFIG GET dir

  • 优点:

    1. 适合大规模数据恢复
    2. 对数据完整性要求不高
  • 缺点:

    1. 需要一定时间间隔,如果redis意外关闭,最后一次的修改无法保存
    2. fork进程会占用内存控件

AOF

将所有执行的命令全部记录

  • 手动修改为 :appendonly yes (默认no)重启会自动创建
    在这里插入图片描述
  • 优点
    1. 每次修改都会同步,完整性好
    2. 实时同步
  • 缺点
    1. 数据文件来说,aof大于rdb,恢复速度很慢

三、发布订阅

  • 订阅

SUBSCRIBE [频道]

  • 发布

PUBLISH [频道] [message]

  • 实时监听发布的数据

四、主从复制

  • 一主二从策略
    1. 指定跟随的主机:slaveof [主机端口号码]
    2. 查看主从配置:info replication
      在这里插入图片描述
  • 配置slave
  1. 依次执行
    cp redis.conf redis80.conf
    cp redis.conf redis81.conf
  2. 将redis80.conf和redis81文件中的,prot、log、pid、rdb,文件修改为新主机的prot(如需配置文件中设置机,修改replication的,如下图)
    在这里插入图片描述
  • 数据复制原理
    slave启动成功后会向master发送一个sync同步指令。
    master接收到指令,就在后台将所有的数据文件传送给slave,一次同步。
  1. 全量复制:在slave服务接收到数据库文件后,将其加载到内存中。
  2. 增量复制:master执行一条存储的命令依次传送给slvae,完成同步。

五、缓存穿透缓存雪崩

  • 缓存穿透:key对应的数据在数据源并不存在,每次针对此key的请求从缓存获取不到,请求都会到数据源,从而可能压垮数据源。比如用一个不存在的用户id获取用户信息,不论缓存还是数据库都没有,若黑客利用此漏洞进行攻击可能压垮数据库。
  • 缓存击穿:key对应的数据存在,但在redis中过期,此时若有大量并发请求过来,这些请求发现缓存过期一般都会从后端DB加载数据并回设到缓存,这个时候大并发的请求可能会瞬间把后端DB压垮。
  • 缓存雪崩:当缓存服务器重启或者大量缓存集中在某一个时间段失效,这样在失效的时候,也会给后端系统(比如DB)带来很大压力。

猜你喜欢

转载自blog.csdn.net/m0_46537958/article/details/108543355