博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Redis 持久化机制
阅读量:6341 次
发布时间:2019-06-22

本文共 691 字,大约阅读时间需要 2 分钟。

版权声明:本文首发 http://asing1elife.com ,转载请注明出处。 https://blog.csdn.net/asing1elife/article/details/82876657

对于如何将数据类型持久化存储,Redis 提供一下 4 种方式

更多精彩

  • 更多技术博客,请移步

定时快照 snapshot

实现

  1. 在 Redis 内存的一个定时器事件,每隔一段时间就检查数据是否符合定时快照触发的条件
  2. 若触发则创建一个子进程,默认与父进程共享地址空间,再通过子进程遍历整个内存进行存储操作

缺陷

  1. 只能存储一段时间内的内存信息,若系统重启则会丢失上次快照与重启间的数据

基于语句的追加文件 aof

实现

  1. 每条使 Redis 内存数据发生改变的的命令都会被存储到一个 log 文件中
  2. 最终该 log 文件中存放的就是 Redis 的持久化数据

缺陷

  1. 过多的 log 文件导致数据体积过大,当系统重启后再次加载数据时会比较慢
    • 数据加载慢并不是因为读取速度慢,而是因为 log 中的每条命令都会需要在 Redis 中再次执行
  2. 由于每条命令都要写入 log ,所以会导致 Redis 的性能下降

虚拟内存 vm - 已弃用

实现

  1. 用户空间数据换入换出

缺陷

  1. 代码复杂
  2. 重启慢

Diskstore

实现

  1. 弃用虚拟内存后采用的新方式,实际上是使用传统的 B-tree 格式存储数据

总结

  1. 采用合适的数据类型存储数据,并尽可能使用紧凑存储参数
  2. 当业务场景无需持久化时,关闭所有的持久化机制可获得更好的性能及最大的内存使用量
  3. 不要让 Redis 使用的物理内存超过服务器的 3/5
你可能感兴趣的文章
WinCE API
查看>>
SQL语言基础
查看>>
Linux常用基本命令[cp]
查看>>
CSS 相对|绝对(relative/absolute)定位系列(一)
查看>>
关于 Nginx 配置 WebSocket 400 问题
查看>>
Glide和Govendor安装和使用
查看>>
Java全角、半角字符的关系以及转换
查看>>
Dubbo和Zookeeper
查看>>
前端项目课程3 jquery1.8.3到1.11.1有了哪些新改变
查看>>
UOJ#179. 线性规划(线性规划)
查看>>
整合spring cloud云架构 - SSO单点登录之OAuth2.0登录认证(1)
查看>>
windows的服务中的登录身份本地系统账户、本地服务账户和网络服务账户修改
查看>>
JAVA中循环删除list中元素的方法总结
查看>>
redis 安装
查看>>
SQL some any all
查看>>
电子书下载:Programming Windows Identity Foundation
查看>>
有理想的程序员必须知道的15件事
查看>>
用于测试的字符串
查看>>
财付通和支付宝资料收集
查看>>
理解 IEnumerable 与 IEnumerator
查看>>