首页 技术 正文
技术 2022年11月8日
0 收藏 696 点赞 1,226 浏览 1517 个字

1、概述

Redis的持久化机制有两种:RDB 和 AOF ,这两种机制有什么区别?正式环境应该采用哪种机制?

我们的服务器内存资源是有限的,如果内存被Redis的缓存占满了怎么办?这就要看Redis的内存管理策略是怎么配置的了。

今天我们就来聊一下上面提出的这两个问题。

2、Redis的持久化机制

2.1 RDB

1、什么是RDB?

RDB 全称 Redis DataBase,是 Redis 默认的持久化机制。

RDB机制的原理是:每隔一段时间把Redis在内存中的数据写到磁盘,手动停止Redis服务时,也会往磁盘上写,当Redis再次启动时,会从磁盘上读取到数据,恢复到内存中。

2、RDB的好处

  • 会定时对数据进行全量备份
  • 恢复数据简单,支持远程传输
  • 可以保证备份数据的完整性
  • 恢复数据速度块

3、RDB的坏处

  • 由于是有时间间隔的备份,因此当服务异常时数据可能会丢失一部分
  • 备份时对CPU的负担较大

4、RDB在配置文件中的相关配置

1)文件名及文件保存路径的配置

2)设置同步硬盘的时间

save “”  代表不同步到磁盘,数据只在内存存储

save 300 100  代表有100个键发生变更,每300秒同步磁盘

3)其他配置

stop-writes-on-bgsave-error yes   // 设置为yes,则在写入磁盘的的过程中出错,会停止写操作

rdbcompression yes    //  设置为yes,则rdb文件在写的过程中会进行压缩,对CPU有一定损耗

rdbchecksum yes   // 设置为yes,会对rdb进行校验,对性能有一定损耗

2.2 AOF

1、什么是AOF

AOF 全称 Append Only File,默认是关闭的。

AOF是以日志的形式记录Redis的写操作,读操作不会记录。以追加的方式存储文件,恢复时会将日志文件中的写操作重新执行一遍。

2、AOF的好处

  • 以秒级进行备份,更能保证数据的完整性
  • 如果磁盘满了,可以执行redis-check-aof工具解决
  • 当日志文件太大,会自动进行优化压缩
  • 日志中的写操作,可以手动修改,恢复起来更灵活

3、AOF的坏处

  • 日志文件比RDB文件大
  • 每秒都会与磁盘有IO操作,影响性能

4、AOF在配置文件中的相关配置

1)开启AOF,设置文件名

2)设置同步策略

# appendfsync always    // 有一条写操作就同步一次(性能差)
appendfsync everysec   // 每秒同步一次(推荐)
# appendfsync no          // 不同步

3)重写策略

auto-aof-rewrite-percentage 100    // AOF文件是上次大小的100%(建议调小)
auto-aof-rewrite-min-size 64mb      // AOF文件大小达到64MB(建议调大)

以上两个配置建议修改,根据实际情况调整。

2.3 RDB 、AOF 如何选择

如果只是把Redis当缓存来用,不介意数据的丢失,建议使用RDB方式,如果对数据的完整性比较在意,建议使用AOF方式。

3、Redis的内存管理机制

我们的服务器内存资源是有限的,如果内存被Redis的缓存占满了,我们应该如何处理呢?

通过调整配置文件中的 maxmemory 和 maxmemory-policy

maxmemory 是指定内存达到多大时,执行内存优化,默认单位是byte

maxmemory-policy 是执行的优化策略:

  • noeviction  Redis的默认配置,不清理过期的缓存,没有内存则返回错误
  • allkeys-lru  推荐配置,清除最少用的旧缓存

4、综述

今天聊了一下Redis的持久化机制和内存管理机制,希望能对大家有所帮助。

希望大家多多评论交流,共同成长。

关注追风人聊Java,每天更新Java干货。

相关推荐
python开发_常用的python模块及安装方法
adodb:我们领导推荐的数据库连接组件bsddb3:BerkeleyDB的连接组件Cheetah-1.0:我比较喜欢这个版本的cheeta…
日期:2022-11-24 点赞:878 阅读:9,495
Educational Codeforces Round 11 C. Hard Process 二分
C. Hard Process题目连接:http://www.codeforces.com/contest/660/problem/CDes…
日期:2022-11-24 点赞:807 阅读:5,909
下载Ubuntn 17.04 内核源代码
zengkefu@server1:/usr/src$ uname -aLinux server1 4.10.0-19-generic #21…
日期:2022-11-24 点赞:569 阅读:6,741
可用Active Desktop Calendar V7.86 注册码序列号
可用Active Desktop Calendar V7.86 注册码序列号Name: www.greendown.cn Code: &nb…
日期:2022-11-24 点赞:733 阅读:6,496
Android调用系统相机、自定义相机、处理大图片
Android调用系统相机和自定义相机实例本博文主要是介绍了android上使用相机进行拍照并显示的两种方式,并且由于涉及到要把拍到的照片显…
日期:2022-11-24 点赞:512 阅读:8,134
Struts的使用
一、Struts2的获取  Struts的官方网站为:http://struts.apache.org/  下载完Struts2的jar包,…
日期:2022-11-24 点赞:671 阅读:5,298