![redis-server 在启动时需要很长时间才能将数据集加载到内存中](https://linux22.com/image/781176/redis-server%20%E5%9C%A8%E5%90%AF%E5%8A%A8%E6%97%B6%E9%9C%80%E8%A6%81%E5%BE%88%E9%95%BF%E6%97%B6%E9%97%B4%E6%89%8D%E8%83%BD%E5%B0%86%E6%95%B0%E6%8D%AE%E9%9B%86%E5%8A%A0%E8%BD%BD%E5%88%B0%E5%86%85%E5%AD%98%E4%B8%AD.png)
我的 Linux 发行版使用该redis
数据库。启动时redis-server
需要大约 80 秒来加载数据集。以下是显示我所写内容的日志:
redis-server[249]: 249:M 17 Oct 2022 16:29:55.173 * DB loaded from append only file: 79.442 seconds
redis-server
如果 Python 程序在完成内存加载操作之前尝试查询数据库,则会引发异常: redis.exceptions.BusyLoadingError
。
异常消息错误为:Redis is loading the dataset in memory
并且符合我所描述的上下文。
redis-server
因为我现在使用的是 的默认配置,所以我不知道 使用的持久性类型到底是什么redis-server
。该文件redis.conf
很长,因此,在这里,我报告我认为最重要的设置:
...
################################ SNAPSHOTTING ################################
#
# Save the DB on disk:
#
# save <seconds> <changes>
#
# Will save the DB if both the given number of seconds and the given
# number of write operations against the DB occurred.
# OE: tune for a small embedded system with a limited # of keys.
save 120 1
save 60 100
save 30 1000
############################## APPEND ONLY MODE ###############################
# OE: changed default to enable this
appendonly yes
# The name of the append only file (default: "appendonly.aof")
appendfilename "appendonly.aof"
...
这些设置似乎表明数据库正在使用持久性类型:(Append Only File
)AOF
。我认为这些配置导致加载时间如此之长。
是否可以使用设置来避免启动时加载时间过长?
答案1
Redis 是一个磁盘支持的全内存数据库,因此,要么减小初始加载的数据库大小,要么为 redis 提供更快的磁盘;这就是您所有的选择。这与您的配置是否使用 aof 无关:在初始加载时,redis 必须读取所有数据,无论其所在的文件数量有多少。