我的 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 必须读取所有数据,无论其所在的文件数量有多少。