redis
jaybroker
这个作者很懒,什么都没留下…
展开
-
为什么redis不共享包含字符串的对象
摘录自 :redis的设计与实现。以便没有看的同学能找到,方便自己,方便他人。根本原因:复杂度过高,消耗的CPU时间太多。 当服务器考虑将一个共享对象设置为键的值对象时,程序需要先检查给定的共享对象和键想创建的目标对象是否完全相同,只有两者完全相同,程序才会将共享对象设置为键的值对象。但是!!!!!,如果一个共享对象保存的值越复杂,那么在验证两者(即共享对象和目标对象)是否完原创 2017-02-24 18:36:33 · 611 阅读 · 0 评论 -
AOF后台重写也会造成阻塞
Redis为了解决AOF后台重写造成的数据不一致问题,设置了AOF重写缓冲区。即使设置了no-appendfsync-on-rewrite yes也会造成短暂的主进程阻塞。原因就在于子进程完成AOF重写之后,会发送一个信号给主进程,而父进程会在这个时候调用信号处理函数,主要是将新的AOF文件替换旧的AOF文件,那么在这段时间内, 主进程是阻塞的。原创 2017-03-08 10:24:26 · 1735 阅读 · 0 评论 -
redis embstr编码
redis使用redIsObject来表示是string、hash、list、set、zset五中数据类型,具体结构如下typedefstruct redisObject { unsigned type:4; unsigned encoding:4;/* lru time (relative to server.lruclock) */unsigned lru:REDIS_原创 2017-02-19 21:51:05 · 3324 阅读 · 0 评论 -
redis 函数表参数分析
最近在改造redis,有必要熟悉一下redis一部分命令的执行过程。先从熟悉命令表开始吧。参考GitHub上的源码解析,自己再熟悉一下。命令表如下:struct redisCommand redisCommandTable[] = { {"get",getCommand,2,"r",0,NULL,1,1,1,0,0}, {"set",setCommand,-3,"w原创 2018-01-17 16:19:41 · 363 阅读 · 0 评论