版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82876657
对于如何将数据类型持久化存储,Redis 提供一下 4 种方式
更多精彩
- 更多技术博客,请移步 asing1elife’s blog
定时快照 snapshot
实现
- 在 Redis 内存的一个定时器事件,每隔一段时间就检查数据是否符合定时快照触发的条件
- 若触发则创建一个子进程,默认与父进程共享地址空间,再通过子进程遍历整个内存进行存储操作
缺陷
- 只能存储一段时间内的内存信息,若系统重启则会丢失上次快照与重启间的数据
基于语句的追加文件 aof
实现
- 每条使 Redis 内存数据发生改变的的命令都会被存储到一个 log 文件中
- 最终该 log 文件中存放的就是 Redis 的持久化数据
缺陷
- 过多的 log 文件导致数据体积过大,当系统重启后再次加载数据时会比较慢
- 数据加载慢并不是因为读取速度慢,而是因为 log 中的每条命令都会需要在 Redis 中再次执行
- 由于每条命令都要写入 log ,所以会导致 Redis 的性能下降
虚拟内存 vm - 已弃用
实现
- 用户空间数据换入换出
缺陷
- 代码复杂
- 重启慢
Diskstore
实现
- 弃用虚拟内存后采用的新方式,实际上是使用传统的 B-tree 格式存储数据
总结
- 采用合适的数据类型存储数据,并尽可能使用紧凑存储参数
- 当业务场景无需持久化时,关闭所有的持久化机制可获得更好的性能及最大的内存使用量
- 不要让 Redis 使用的物理内存超过服务器的 3/5