Redis中的lru算法实现 Posted on 2018-12-21 | lru是什么lru(least recently used)是一种缓存置换算法。即在缓存有限的情况下,如果有新的数据需要加载进缓存,则需要将最不可能被继续访问的缓存剔除掉。因为缓存是否可能被访问到没法做预测,所以基于如下假设实现该算法: 如果一个key经常被访问,那么该key的idle time应该 ... Read more »
Redis 懒删除(lazy free)简史 Posted on 2018-12-15 | Redis是单进程单线程模式吗下图为Redis5.0启动之后的效果。LWP为线程ID,NLWP为线程数量。可以看到,5.0的redis server共有四个线程,一个主线程48684,三个bio(background IO,后台io任务)线程,三个后台线程分别执行不同的io任务,我们重点考察删除一个 ... Read more »
NGINX HTTP2 处理流程 Posted on 2018-12-11 | 本文通过一个小例子串一遍nginx处理http2的流程。主要涉及到http2的协议以及nginx的处理流程。 http2简介http2比较http1.1主要有如下五个方面的不同: 二进制协议 http1.1请求行和请求头部都是纯文本编码,即可以直接按ascii字符解释,而http2是有自己的编码格 ... Read more »
NGINX 4xx 5xx 状态码构造 Posted on 2018-09-18 | nginx配置123456789101112131415161718192021222324252627282930313233343536373839worker_processes 1;events { worker_connections 1024;}http & ... Read more »
Redis有序集合指令学习 Posted on 2018-07-11 | ZADDZADD key [NX|XX] [CH] [INCR]score member [score member …] 将元素及对应分值添加到一个有序集合中 NX:不更新已经存在的key,只增加新元素 XX:只更新已经存在的key,不增加新元素 CH:abbr:changed.不指定时只返回新增 ... Read more »
Redis scan命令原理 Posted on 2018-06-22 | scan类型命令1234567SCAN cursor [MATCH pattern] [COUNT count]SSCAN KEY cursor [MATCH pattern] [COUNT count]HSCAN KEY cursor [MATCH pattern] [COUNT count]Z ... Read more »
Redis单机版本框架 Posted on 2018-06-07 | Redis主流程伪代码1234567891011def main(): init_server() while server_is_not_shutdown(): time = aeSearchNearestTimer() beforeSleep() aeApi ... Read more »