美文网首页Java程序员
Redis中内存溢出问题和持久化方法

Redis中内存溢出问题和持久化方法

作者: 一个小素 | 来源:发表于2019-09-27 13:36 被阅读0次

一、内存溢出问题

解决办法

1. 设置key的过期时间 2. 按需求使用8种数据淘汰策略

  1. volatile-lru(Least Recently Used):从已设置过期时间的数据集中挑选最近最少使用的数据淘汰

  2. volatile-lfu(Least Frequently Used):从已设置过期时间的数据集中挑选一段时间内使用频率最少的数据淘汰

  3. volatile-ttl(Time To Live):从已设置过期时间的数据集中挑选将要过期的数据淘汰

  4. volatile-random:从已设置过期时间的数据集中随机选择数据淘汰

  5. allkeys-lru:从数据集中挑选最近最少使用的数据淘汰

  6. allkeys-lfu:从所有Keys中挑选一段时间内使用频率最低的数据淘汰

  7. allkeys-random:从数据集中随机选择数据淘汰

  8. no-envicition(驱逐):禁止驱逐数据,针对写操作,返回错误信息(不采用任何淘汰策略,默认即此配置)

image

二、持久化方法

方式一:RDB 简介

  • RDB:Redis Database(默认持久化机制,默认文件名dump.rdb)

  • 有两个功能函数rdbSave(生成RDB文件)和rdbLoad(从文件加载到内存)

优点

  1. 快照保存数据极快,还原数据极快

  2. 适用于灾难备份

缺点

  1. 小内存及其不适合使用

  2. 符合快照条件才会进行快照,意外宕机会丢失最后一次快照后的所有修改

快照条件*

  1. Redis服务器正常关闭:./bin/redis-cli shutdown

  2. 配置文件中设置的条件

  • save 900 1 //每900秒(15分钟)至少1个key发生变化,产生快照

  • save 300 10 //每300秒(5分钟)至少10个key发生变化,产生快照

  • save 60 10000 //每60秒(1分钟)至少10000个key发生变化,产生快照

方式二:AOF 原理简介

  1. redis会将每一个收到的命令都通过write函数追加到文件中(默认是appendonly.aof), 当redis重启时会通过重新执行文件中保存的“写命令”来在内存中重建整个redis数据库中的内容
image

2. 每当执行服务器(定时)任务或者函数时flushAppendOnlyFile 函数都会被调用, 这个函数执行以下两个工作:

  • WRITE:根据条件,将 aof_buf 中的缓存写入到 AOF 文件

  • SAVE:根据条件,调用 fsync 或 fdatasync 函数,将 AOF 文件保存到磁盘中

优点

持久化比RDB更好,不会丢失任何的修改

缺点

  • 持久化文件会变的越来越大

  • 重复命令很多(例如:调用100次 “incr dcl" 命令,则文件中必须保存100条“incr dcl"命令记录,但是其中的99条记录都是重复的)

相关文章

  • Redis中内存溢出问题和持久化方法

    一、内存溢出问题 解决办法 1. 设置key的过期时间 2. 按需求使用8种数据淘汰策略 volatile-lru...

  • redis笔记(四)redis持久化

    redis持久化 Redis持久化机制:redis是一个支持持久化的内存数据库,也就是说redis需要经常将内存中...

  • 三 redis的持久化分析

    目标 分析redis持久化方法及注意事项 持久化方法 rdb RDB持久化是指在指定的时间间隔内将内存中的数据集快...

  • Redis常见面试题

    Redis常见面试题 Redis持久化机制 Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同...

  • redis mongodb持久化的方式

    redis持久化方式(两种) RDB持久化 redis提供了RDB持久化的功能,这个功能可以将redis在内存中的...

  • redis之持久化

    什么是 redis 持久化?持久化方式和优缺点 redis 持久化就是把内存中的数据写到磁盘里,防止服务器宕机后内...

  • Redis与Memcached区别

    Redis优势 redis具有持久化机制,定期将内存中的数据持久化到硬盘。 redis具备binlog功能,所有操...

  • Redis

    Redis 持久化机制 Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数...

  • 读者让我总结一波 redis 面试题,现在肝出来了

    Redis 持久化机制 Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保证数...

  • 2020-09-05

    1、 Redis持久化机制 Redis是一个支持持久化的内存数据库,通过持久化机制把内存中的数据同步到硬盘文件来保...

网友评论

    本文标题:Redis中内存溢出问题和持久化方法

    本文链接:https://www.haomeiwen.com/subject/lygductx.html