redis
2022-06-12 11:45:41 0 举报
redis 结构图
作者其他创作
大纲/内容
fork()
dictType *type
*privdata
ht[2]
rehashidx
iterators
sds 内存结构
timeEventNextId
*aftersleep
NULL
OPCODE[F7]
moduleType id
OPCODE_UINT
OPCODE_EOF
EOF
epoll_create
DB_INFO
len
0-ptr
...
n-ptr
value-ptr?
REDIS
*timeProc
alloc
bgsaveCommand
*timeEventHead
refcount
steamid
*prev
CheckSum
rax
*beforesleep
dictht
aeCreateEventLoop
dictEntry
initServer
KEY_VALUE PAIRS
ht[0]
aeCreateFileEvent
4
\\0
encoding-type
data
backlen
id
[header iscompr=0][abc][a-ptr][b-ptr][c-ptr](value-ptr?)
raxNode
AUX_FIELDS
serverCron
*
null
(k1 v1)
*key
V
dictEntry *next
第三次申请aeTimeEvent
第二次申请aeTimeEvent
命令 :
*next
rax *rax
length
streamID last_id
rax *cgroups
*head
numele
numnodes
aeEventLoop
save
aeApiCreate(eventLoop)
maxfd
flags
rdb 文件存储格式
aeCreateTimeEvent
rdbSaveToSlavesSockets
0
1
2
3
ms
seq
[header iscompr=1][xyz][z-ptr](value-ptr?)
main()
RDB_VERSION
raxNode *head
aeTimeEvent
rename
saveCommand
rdbSave
(k4 v4)
9
iskey
isnull
iscompr
size
data[]
stop
(k... v...)
OPCODE[FA]
[len]redis-ver
[len]5.0.14
[len]redis-bits
[len]64
[len]ctime
[len]1650346364
[len]used-mem
[len][value]
[len]repl-stream-db
[len]repl-id
[len]repl-offset
[len]aof-preamble
FF
主流程执行
*finalizerProc
OPCODE[FE]
dbnum
OPCODE[FB]
dictEntry size
expires dictEntry size
OPCODE[FC]
expiretime
OPCODE[F8]
LRU
OPCODE[F9]
lfu
[ObjectType]
[len]
key
value
用户自定义扩展模块,暂时不考虑,有多少模块重复多少次
*timeEventHead 初始化为 null
dictht
redis dict 结构示意图,根据扩容条件:(d->ht[0].used >= d->ht[0].size && (dict_can_resize || d->ht[0].used/d->ht[0].size > dict_force_resize_ratio)),当dict_can_resize为1时,此时整个字典扩容条件
*fired
*clientData
flushallCommand
replicaof
dictEntry **table
sizemask
used
dict
第一次申请aeTimeEvent
TotalBytes
NumEle
entry1
entry2
......
entryN
0xFF
startBgsaveForReplication
eventloop 结构体分配 内存
diskless sync
rdbSaveBackground
*apidata
buf[]
(k2 v2)
shutdown
(k3 v3)
size|padding
MAGIC
*events
rdbSaveRio
bgsave
stream
when
server.el = aeCreateEventLoop(server.maxclients+CONFIG_FDSET_INCR)
flushall
dictEntry *
aeApiAddEvent
rdbSaveRioWithEOFMark
ModuleAux
命令对应rdb代码调用关系:
prepareForShutdown
ht[1]
CHECKSUM
setsize
定时任务【配置文件中的save】
0 条评论
下一页