您好,欢迎来到年旅网。
搜索
您的当前位置:首页Redis 过期删除策略、内存回收策略、单线程理解

Redis 过期删除策略、内存回收策略、单线程理解

来源:年旅网

不知从何开始Redis的内存淘汰策略也开始被人问及,卷!真的是太卷了。难不成要我们去阅读Redis源码吗,其实问题的答案,在Redis中的配置文件中全有,不需要你阅读源码、这个东西就是个老八股,估计问这个东西是想考察你们做的项目体量大不大。一般用 lru 就行。

内存回收策略

maxmemory-policy noeviction

至于内存策略有哪几种,文档中也写出来了,但是用洋文写的,下面用国语翻译一下。

当Redis使用内存超过了配置文件中设置的最大内存、或者大于物理机内存,将会触发内存回收策略

过期删除策略

这玩意我在配置文件中翻了一圈没找到对应的配置,那就肯定是要看redis源码了。我很爱看源码。但是看了下redis安装文件中的src文件,这玩意尼玛好像是用C语言写的,就好像很多人喜欢问 Synchronized 锁升级,但是这玩意的源码需要进行反编译查看,而且不是用 Java写的,叫我们怎么看呢。但是没关系,这些我都总结好了。

  • 惰性删除:访问某个key的时候,先检测key是否过期,过期了直接删除,返回null,没过期返回具体值。至于源码文件,在 src 目录下面有个 db.c 文件,里面有个 expireIfNeeded 函数,就 是 Redis 每次对 key 进行操作前都会调用 expireIfNeeded 函数,判断key是否过期,过期了就删除key、没过期就不删;
  • 定期删除:每隔一定时间,取出部分key,筛出其中的过期key然后删除。具体源码自行翻阅 src目录中的 .c 文件
  • 定时删除:这个也很好理解,过期key到了过期时间自动删除。具体源码自行翻阅 src目录中的 .c 文件

RDB文件路径配置

修改 redis.conf 中的如下配置即可

# RDB文件名称
dbfilename dump.rdb
# RDB文件存放路径
dir /Users/zhangzixing/Desktop/redis持久化文件

主动生成RDB文件命令

没怎么用过这些命令,浅浅的记录一下~~~
阻塞Redis所有请求,直至RDB文件生成完成,不建议使用

SAVE

开启子线程,非阻塞生成RDB文件

BGSAVE

本机启动Redis

这个读者可以跳过,我经常忘记我电脑上Redis的安装路径,这里做个记录~

redis-server /usr/local/redis-6.0.10/etc/redis.conf
config set requirepass 123456

Redis 单线程个人理解

由于 Redis 的内存数据库,CPU不会成为Redis性能的瓶颈,内存执行指令速度非常快,是单个线程去执行指令,但是别忘了,Redis 还需要对 RDB、AOF 文件进行 IO 操作,IO 操作是多线程执行的。

因篇幅问题不能全部显示,请点此查看更多更全内容

Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1

违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com

本站由北京市万商天勤律师事务所王兴未律师提供法律服务