关于redis:Redis持久化内存配置以及缓存问题的简单介绍

54次阅读

共计 1845 个字符,预计需要花费 5 分钟才能阅读完成。

对于 Redis 配置阐明

Redis 长久化的阐明

redis 默认条件下反对数据的长久化操作,当 redis 中有数据时会定期将数据保留到磁盘中,当 redis 服务器重启时会依据配置文件读取指定的长久化文件,实现内存数据的复原。

长久化形式

RDB 模式

特点:
1.RDB 模式是 redis 的默认的长久化策略。
2.RDB 模式记录的是 redis 内存数据的快照,最新的快照会笼罩之前的内容,所有 RDB 长久化文件占用空间更小,长久化的效率更高。
3.RDB 模式因为定期长久化,所以可能导致数据的失落。

命令:

  1. save 要求立刻马上长久化 同步的操作 其余的 redis 操作会陷入阻塞的状态.
  2. bgsave 开启后盾运行 异步的操作 因为是异步操作, 所以无奈保障 rdb 文件肯定是最新的须要期待.

配置:
1. 长久化文件名称

2. 长久化文件地位
dir./ 相对路径的写法。
dir/usr/local/src/redis 绝对路径的写法。

3.RDB 模式长久化策略

AOF 模式

特点:
1.AOF 模式默认条件下是敞开的,须要手动开启。

2.AOF 模式是异步的操作,记录的是用户的操作的过程,能够避免用户的数据失落。
3. 因为 AOF 模式记录的是程序的运行状态,所以长久化文件绝对较大,复原数据的工夫长,须要人为的优化长久化文件。
配置:

总结:
1. 如果不容许数据失落,应用 AOF 模式。
2. 如果谋求效率,容许大量数据失落,采纳 RDB 模式。
3. 如果纪要保障效率,又要保证数据,则应该配置 redis 的集群,主机应用 RDB 模式,从机应用 AOF 模式。

对于 Redis 内存策略

对于内存策略的阐明

Redis 数据的存储都在内存中. 如果始终向内存中存储数据 必然会导致内存数据的溢出.
解决形式:

  1. 尽可能为保留在 redis 中的数据增加超时工夫.
  2. 利用算法优化旧的数据.

LRU 算法

特点: 最好用的内存优化算法.
LRU 是 Least Recently Used 的缩写,即 最近起码应用 ,是一种罕用的数据置换算法,抉择最近最久未应用的数据予以淘汰。该算法赋予每个数据一个拜访字段,用来记录一个数据自上次被拜访以来所经验的工夫 t,当须淘汰一个数据时,抉择现有数据中其 t 值最大的,即最近起码应用的数据予以淘汰。
维度: 工夫 T

LFU 算法

LFU(least frequently used (LFU) page-replacement algorithm)。即最不常常应用页置换算法 ,要求在页置换时置换援用计数最小的页,因为常常应用的页应该有一个较大的援用次数。然而有些页在开始时应用次数很多,但当前就不再应用,这类页将会长工夫留在内存中,因而能够将引 用计数寄存器定时右移一位 ,造成指数衰减的均匀应用次数。
维度: 应用次数

RANDOM 算法

即随机删除数据。

TTL 算法

把设定了超时工夫的数据将要移除的提前删除的算法。

Redis 内存数据优化

1.volatile-lru 设定了超时工夫的数据采纳 lru 算法。
2.allkeys-lru 所有的数据采纳 LRU 算法。
3.volatile-lfu 设定了超时工夫的数据采纳 lfu 算法删除。
4.allkeys-lfu 所有数据采纳 lfu 算法删除。
5.volatile-random 设定超时工夫的数据采纳随机算法。
6.allkeys-random 所有数据的随机算法。
7.volatile-ttl 设定超时工夫的数据的 TTL 算法。
8.noeviction 如果内存溢出了 则报错返回. 不做任何操作. 默认值。

对于 Redis 缓存问题

问题形容: 如果海量用户同时申请 而这时 redis 服务器呈现问题 则可能导致整个零碎解体.
运行速度:

  1. tomcat 服务器 150-250 之间 JVM 调优 1000/ 秒
  2. NGINX 3- 5 万 / 秒
  3. REDIS 读 11.2 万 / 秒 写 8.6 万 / 秒 均匀 10 万 / 秒

缓存穿透

问题形容: 因为用户 高并发 环境下拜访 数据库中不存在的数据时 , 容易导致缓存穿透.
解决方案: 设定 IP 限流的操作 nginx 中 或者微软服务机制 API 网关实现.

缓存击穿

问题形容: 因为用户 高并发 环境下, 因为某个数据之前存在于内存中, 然而因为非凡起因 (数据超时 / 数据意外删除) 导致 redis 缓存生效. 而使大量的用户的申请间接拜访数据库。
解决方案:
1. 设定超时工夫时 不要设定雷同的工夫。
2. 设定多级缓存。

缓存雪崩

问题形容: 因为 高并发 条件下 有 大量的数据生效 . 导致 redis 的命中率太低. 而使得用户间接拜访数据库(服务器) 导致解体, 称之为缓存雪崩.
解决方案:
1. 不要设定雷同的超时工夫 随机数
2. 设定多级缓存.
3. 进步 redis 缓存的命中率 调整 redis 内存优化策略 采纳 LRU 等算法.

正文完
 0