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

Python 프로그램이 메모리 로드 작업을 완료하기 전에 데이터베이스를 쿼리하려고 하면 redis-server예외:가 발생합니다 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"
...

이러한 설정(특히 appendonly yes)은 데이터베이스에서 사용되는 지속성 유형이 ( Append Only File) 임을 나타내는 것으로 보입니다 AOF. 이러한 설정으로 인해 로딩 시간이 길어지는 것 같습니다.

시작 시 로딩 시간이 길어지는 것을 방지하는 데 사용할 수 있는 설정이 있습니까?

답변1

이는 redis-server 프로세스가 추가 전용 파일을 사용하도록 구성되어 있고 BGREWRITEAOF명령을 전송하지 않았기 때문일 가능성이 높습니다.

redis.io 웹사이트의 Redis 매뉴얼에는 네 가지 지속성(데이터 복구) 구성에 대한 좋은 설명이 있습니다. https://redis.io/docs/manual/persistence/. 파일만 첨부하는 것도 옵션 중 하나입니다.

이것은 아니다나쁜옵션을 선택하면 약간의 유지 관리가 필요합니다. 그렇지 않으면 아시다시피 프로세스가 느리게 시작됩니다. 옵션과 장단점을 알아보고 사용 패턴에 가장 적합한 옵션을 선택하세요.

관련 정보