aof_functions
AOF Functions
![]() Redis Server Course |
![]() Redis Technical Support |
![]() Redis Enterprise Server |
---|
AOF Functions
이 문서는 Redis-7.2.7(ent810)을 기준으로 작성했습니다.
Aof.c Functions
- aofInfo *aofInfoCreate(void) return zcalloc(sizeof(aofInfo)); // Create an empty aofInfo.
- void aofInfoFree(aofInfo *ai) sdsfree(ai->file_name); zfree(ai); // aofInfo 구조체(ai가 가리키는)와 내장된 file_name을 해제합니다.
- aofInfo *aofInfoDup(aofInfo *orig) // Deep copy an aofInfo.
- sds aofInfoFormat(sds buf, aofInfo *ai) // 'aofInfo'를 문자열로 포맷하면 매니페스트에 한 줄이 생성됩니다.
- void aofListFree(void *item) // AOF 목록 요소를 해제
- void *aofListDup(void *item) return aofInfoDup(item); // AOF 목록 요소를 복제
- aofManifest *aofManifestCreate(void) // 'aofLoadManifestFromDisk'에서 호출될 빈 'aofManifest'를 만듭니다.
- void aofManifestFree(aofManifest *am) // aofManifest 구조(am이 가리키는)와 내장된 멤버를 해제합니다.
- sds getAofManifestFileName(void) return sdscatprintf(sdsempty(), "%s%s", server.aof_filename, MANIFEST_NAME_SUFFIX);
- sds getTempAofManifestFileName(void) return sdscatprintf(sdsempty(), "%s%s%s", TEMP_FILE_NAME_PREFIX, server.aof_filename, MANIFEST_NAME_SUFFIX);
- sds getAofManifestAsString(aofManifest *am)
- void aofLoadManifestFromDisk(void)
- aofManifest *aofLoadManifestFromFile(sds am_filepath) // 'aofLoadManifestFromDisk', 'redis-check-aof' 도구에서 사용되는 일반 매니페스트 로딩 함수입니다.
- aofManifest *aofManifestDup(aofManifest *orig) // 'aofManifest'를 새로 만들고 orig를 복사해서 리턴한다.
- void aofManifestFreeAndUpdate(aofManifest *am) // 'server.aof_manifest' 포인터를 'am'으로 변경
- sds getNewBaseFileNameAndMarkPreAsHistory(aofManifest *am) // BASE 파일 명명 규칙: 'server.aof_filename'.seq.base.format
- sds getNewIncrAofName(aofManifest *am) // INCR AOF 명명 규칙: 'server.aof filename'.seq.incr.aof
- sds getTempIncrAofName(void) // Get temp INCR type AOF name.
- sds getLastIncrAofName(aofManifest *am) // Get the last INCR AOF name or create a new one.
- void markRewrittenIncrAofAsHistory(aofManifest *am) // backgroundRewriteDoneHandler()에서 호출합니다.
- int writeAofManifestFile(sds buf) // 포맷된 매니페스트 문자열을 디스크에 씁니다.
- int persistAofManifest(aofManifest *am) // 'am'이 가리키는 'aofManifest' 정보를 디스크에 저장합니다.
- void aofUpgradePrepare(aofManifest *am) // loadAppendOnlyFiles()에서 호출됩니다.
- int aofDelHistoryFiles(void) // 'history_aof_list'를 순회하며 삭제 작업을 바이오 스레드에 제출합니다.
- void aofDelTempIncrAofFile(void) // 'AOFRW'가 실패했을 때 임시 'INCR AOF'를 정리(삭제)하는 데 사용됩니다.
- void aofOpenIfNeededOnServerStart(void) // redis 시작 시 loadDataFromDisk() 이후에 호출됩니다.
- int aofFileExist(char *filename) // 파일이 있는지 확인
- int openNewIncrAofForAppend(void) // rewriteAppendOnlyFileBackground()에서 호출됩니다.
- int aofRewriteLimited(void) // 백그라운드 AOFRW(AOF rewrite) 실행을 제한할지 여부입니다.
리턴값 '1': 'AOFRW' 실행 불가, '0': 'AOFRW' 실행 가능
serverCron()에서 aof file size가 커졌을 때 또는 스케줄되어 있을 때
이 함수를 호출해서 rewriteAppendOnlyFileBackground()을 실행해도 되는지 확인한다. - int aofFsyncInProgress(void) // 현재 BIO 스레드에서 AOf fsync가 진행 중인 경우 true를 반환합니다. flushAppendOnlyFile()에서 사용합니다.
- void aof_background_fsync(int fd) // 다른 스레드에서 지정된 파일 설명자(AOF 파일의 설명자)에 대해 fsync()를 수행하는 백그라운드 작업을 시작합니다.
- void aof_background_fsync_and_close(int fd) // aof_background_fsync를 기반으로 fd를 닫습니다.
- void killAppendOnlyChild(void) // AOFRW 자식 프로세스가 존재하는 경우 이를 종료합니다. stopAppendOnly(), startAppendOnly()에서 사용합니다.
- void stopAppendOnly(void) // 사용자가 CONFIG 명령을 사용하여 런타임에 "appendonly yes"에서 "appendonly no"로 전환할 때 호출됩니다.
- int startAppendOnly(void) // 사용자가 CONFIG 명령을 사용하여 런타임에 "appendonly no"에서 "appendonly yes"로 전환할 때 호출됩니다.
- ssize_t aofWrite(int fd, const char *buf, size_t len) // 이것은 짧은 쓰기 작업이나 시스템 호출이 중단될 경우 재시도하기 위한 쓰기 시스템 호출 래퍼입니다.
- void flushAppendOnlyFile(int force) // AOF 버퍼를 디스크에 씁니다.
- sds catAppendOnlyGenericCommand(sds dst, int argc, robj **argv) // feedAppendOnlyFile()에서 사용합니다.
- sds genAofTimestampAnnotationIfNeeded(int force) // AOF에 대한 타임스탬프 주석을 생성합니다.
- void feedAppendOnlyFile(int dictid, robj **argv, int argc) // 명령을 aof 파일에 씁니다.
- struct client *createAOFClient(void) // AOF 로드용 클라이언트 생성
- int loadSingleAppendOnlyFile(char *filename) // AOF 파일을 로드합니다.
// 📍 명령 실행 수 로그를 남긴다(명령 하나에 여러 키가 입력될 수 있으므로 키 개수는 정확하지 않음)
// loadAppendOnlyFiles()에서 사용합니다. - int loadAppendOnlyFiles(aofManifest *am) // AOF 파일 로드
// server.c loadDataFromDisk()에서 사용합니다.
• rioWrite* 함수는 rewrite* 함수 내부에서 사용한다.
- int rioWriteBulkObject(rio *r, robj *obj) // rewriteAppendOnlyFileRio() 등 여러 곳에서 사용. rioWriteBulkLongLong(), sdsEncodedObject()를 사용.
- static int rioWriteHashIteratorCursor(rio *r, hashTypeIterator *hi, int what) // rewriteHashObject()에서 사용, 성공:non-zero, 실패:0
- int rioWriteBulkStreamID(rio *r,streamID *id) // rewriteStreamObject()에서 사용
- int rioWriteStreamPendingEntry(rio *r, robj *key, const char *groupname, size_t groupname_len, streamConsumer *consumer, unsigned char *rawid, streamNACK *nack) // rewriteStreamObject()에서 사용
- int rioWriteStreamEmptyConsumer(rio *r, robj *key, const char *groupname, size_t groupname_len, streamConsumer *consumer) // rewriteStreamObject()에서 사용
- int rewriteListObject(rio *r, robj *key, robj *o) // List 쓰기, 성공:1, 실패:0
- int rewriteSetObject(rio *r, robj *key, robj *o) // Set 쓰기, 성공:1, 실패:0
- int rewriteSortedSetObject(rio *r, robj *key, robj *o) // ZSet 쓰기, 성공:1, 실패:0
- int rewriteHashObject(rio *r, robj *key, robj *o) // Hash 쓰기, 성공:1, 실패:0
- int rewriteStreamObject(rio *r, robj *key, robj *o) // // Stream 쓰기, 성공:1, 실패:0
- int rewriteModuleObject(rio *r, robj *key, robj *o, int dbid) // 모듈(module) 쓰기, 성공:1, 실패:0
- static int rewriteFunctions(rio *aof) // 함수(function) 쓰기, 성공:1, 실패:0
- int rewriteAppendOnlyFileRio(rio *aof) // 서버의 모든 데이터를 AOF(text) 파일에 저장한다. 0 ~ server.dbnum.
- int rewriteAppendOnlyFile(char *filename) // 'server.aof_use_rdb_preamble'이면 rdbSaveRio()를 호출하고, // 아니면 rewriteAppendOnlyFileRio()를 호출해서 데이터를 저장한다.
- int rewriteAppendOnlyFileBackground(void) // aof.c bgrewriteaofCommand(), startAppendOnly()에서 사용.
// server.c serverCron()에서 아래 3가지 경우에 실행한다.
1) AOF rewrite가 스케줄되어 있으면 실행.
2) AOF 파일 사이즈가 커지면 실행.
3) server.aof_rewrite_spec_time 지정한 시각에 실행. ent에서 추가. - void bgrewriteaofCommand(client *c) // 'BGREWRITEAOF' 명령 실행
- void aofRemoveTempFile(pid_t childpid) // backgroundRewriteDoneHandler() cleanup: 에서 사용, killAppendOnlyChild()에서 사용.
- off_t getAppendOnlyFileSize(sds filename, int *status) // AOF 파일 크기. getBaseAndIncrAppendOnlyFilesSize() 등에서 사용.
- off_t getBaseAndIncrAppendOnlyFilesSize(aofManifest *am, int *status) // 매니페스트에서 참조하는 모든 AOF 파일의 크기를 가져옵니다(history 제외).
// loadAppendOnlyFiles()에서 사용 - void backgroundRewriteDoneHandler(int exitcode, int bysignal) // serverc checkChildrenDone()에서 사용. serverCron() -> checkChildrenDone()
<< AOF Timestamp | RDB SAVE >> |
---|
Email
返事がかかってなれば、メールでお知らせします。