redis-server 在启动时需要很长时间才能将数据集加载到内存中

redis-server 在启动时需要很长时间才能将数据集加载到内存中

我的 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 FileAOF。我认为这些配置导致加载时间如此之长。

是否可以使用设置来避免启动时加载时间过长?

答案1

Redis 是一个磁盘支持的全内存数据库,因此,要么减小初始加载的数据库大小,要么为 redis 提供更快的磁盘;这就是您所有的选择。这与您的配置是否使用 aof 无关:在初始加载时,redis 必须读取所有数据,无论其所在的文件数量有多少。

相关内容