Redis 源码分析
文章平均质量分 86
记录工作使用 redis。
0x13
coding...
展开
-
【Redis】内存淘汰处理
* 对象类型 REDIS_STRING(字符串)、REDIS_LIST (列表)、REDIS_HASH(哈希)、REDIS_SET(集合)、REDIS_ZSET(有序集合)*/在 redis 中为了节省空间以及提高性能没有使用链表来维护这个lru链表,而是在每次操作一个key时更新这个key的操作时间,按照操作时间排序来代替lru的链表维护操作所以是近视 lru 算法。首先 lru 算法需要维护一个链表,每次对一个key进行更新、方位、插入之后需要将这个key从链表的中间位置移动到头部。原创 2023-02-08 22:49:57 · 92 阅读 · 0 评论 -
【Redis】IO多路复用 epoll/select/kqueue/evport
9. key_step:key的“步长”,比如MSET的key_step是2,因为它的参数是key,val,key,val这样的形式。6. get_keys_proc:可选函数,当下面三个项不能指定哪些参数是key时使用。4. sflags:命令标志,标识命令的类型(read/write/admin…3. arity:命令的参数个数,如果是-N代表大于等于N。7. first_key_index:第一个是key的参数。8. last_key_index:最后一个是key的参数。1. name:命令的名称。原创 2023-02-08 22:41:30 · 15663 阅读 · 0 评论 -
【Redis】AOF持久化
定时任务调用 serverCron() 驱动 aof 持久化,持久化调用的入口函数是 aof.c flushAppendOnlyFile(),会判断缓冲区 server.aof_buf 中是否有内容,然后根据策略执行 fsync 写入磁盘。(1)处理key的操作后,将操作记录到 server.aof_buf (写缓存)之外还会记录到 aof_rewrite_buf_blocks(重写缓存),因为重写是遍历内存所有数据耗时较长用重写缓存来保存本次重写过程中新产生的数据。这是重写持久化入口函数。原创 2023-02-08 22:47:47 · 205 阅读 · 0 评论 -
【Redis】RDB持久化
通过SAVE或者BGSAVE操作可以显式调用RDB.SAVE创建RDB文件的速度会比BGSAVE快,SAVE可以集中资源来创建RDB文件,如果数据库正在上线当中.就要使用BGSAVE,如果数据库需要维护,可以使用SAVE命令.【log】server.c redisSetCpuAffinity() 绑定进程和cpu,当前进程:42949672976,配置的cpu:(null)【log】rdb.c rdbSave() 开始rdb持久化,filename=dump.rdb。RDB(后台)基本的执行过程是这样的。原创 2023-02-08 22:47:09 · 233 阅读 · 0 评论 -
【Redis】处理客户端指令
9. key_step:key的“步长”,比如MSET的key_step是2,因为它的参数是key,val,key,val这样的形式。【log】networking.c addReply() 设置响应,响应在内存中的地址时 c->buf+c->sentlen。【log】networking.c acceptTcpHandler() 处理客户端tcp连接。redis-server处理命令时要执行的函数。【log】networking.c readQueryFromClient() 请求处理。原创 2023-02-08 22:44:34 · 73 阅读 · 0 评论