Sorry, your browser cannot access this site
This page requires browser support (enable) JavaScript
Learn more >

背景

最近在面试字节后端,面试官对 八股进行了深入的拷打,问了 Redis 的过期删除时间有什么机制,并延伸了当 redis 没有设置过期时间,且已知写redis知道redis写满,会发生什么?当时回答的是会启动换入换出操作,面试官好像不太满意。面试复盘实验一下,看看这种情况到底会发生什么。

Redis 安装(Linux环境)

step1:下载指定redis的版本包

1
wget https://download.redis.io/releases/redis-4.0.9.tar.gz

step2:解压到指定目录下

1
tar -zvxf redis-6.0.5.tar.gz -C /home/zqy/桌面/redis

step3:make 编译

1
make

image-20250423182849383

step4:安装

1
make PREFIX=/home/zqy/桌面/redis install

image-20250423183105016

step4:版本检查

1
redis-cli --version

image-20250423183201912

step5:启动redis

1
2
3
4
5
cd src
./redis-server

若默认的6379端口被占用,可以指定其他空闲端口
./redis-server --port 6380

image-20250423183339333

Redis参数配置(maxmemory)

进入redis的安装目录,启动./redis-server后,执行./redis-cli客户端,查看内存使用情况

1
2
3
./redis-server
./redis-cli
info memory

image-20250423201629683

maxmemory:0 并不是redis的最大内存大小是0字节,0表示redis的最大内存大小没有限制,当为其它正数 x时,表示redis的最大内存大小为 x 字节。

也可以通过命令获取maxmemory,

1
config get maxmemory

image-20250423203307562

在使用 redis 前最好对 maxmemory 进行初始值的设置,否则 redis 可能持续占用内存,直到 系统 OOM 终止。使用 set 命令进行配置

1
CONFIG SET maxmemory 1GB  # 例如设置为 1GB

image-20250423203350604

注意:使用config set maxmemory 1GB 的方式只能是临时对 maxmemory 进行设置,要想让修改永久有效,需要修改 redis.conf 文件。

情景一:redis内存100MB,不设置过期时间,不设置缓存淘汰策略

查看redis的缓存策略

1
CONFIG GET maxmemory-policy

返回 “noeviction”表示,内存满时拒绝写入新数据

image-20250423204322855

1

评论