redis
marytime
捷径虽好,但有时路远点也有它独特的优势
展开
-
redis跳转表学习与理解
学习跳转表,记录一些自己的理解。这篇文章介绍了跳转表http://www.cnblogs.com/xuqiang/archive/2011/05/22/2053516.html。这就是跳转表示意图。第1章 普通跳转表——节点插入节点插入代码如下:boolean insert(l,key,value) register list l; register keyType...原创 2019-01-17 11:56:47 · 328 阅读 · 0 评论 -
LRU原理和Redis实现——一个今日头条的面试题
原文:https://blog.csdn.net/hopeztm/article/details/79547052很久前参加过今日头条的面试,遇到一个题,目前半部分是如何实现 LRU,后半部分是 Redis 中如何实现 LRU。我的第一反应是操作系统课程里学过,应该是内存不够的场景下,淘汰旧内容的策略。LRU ... Least Recent Used,淘汰掉最不经常使用的。可以稍微多补...转载 2019-06-17 20:31:22 · 232 阅读 · 0 评论 -
Redis replication 揭秘
转自:http://russellluo.com/2018/07/redis-replication-demystified.html一、要解决的问题按照Redis 官方文档 - Replication的说法:Redis replication 是一种 master-slave 模式的复制机制,这种机制使得 slave 节点可以成为与 master 节点完全相同的副本。我们知...转载 2019-06-10 18:15:34 · 4674 阅读 · 0 评论 -
latency延迟分析处理
转自:https://www.kancloud.cn/digest/redis-code/199060每当提到延时统计的时候,一定想到的一个名词就是”性能测试“,没错,在Redis的redis_benchmark文件中,的确用到了延迟文件中的相关信息。在Redis中的官方解释此文件:/* The latency monitor allows to easily observe th...转载 2019-06-09 21:03:34 · 3763 阅读 · 0 评论 -
Redis主从复制的全量和增量同步介绍
作者:chenfeng转自:http://blog.itpub.net/15498/viewspace-2151660/全量同步:1.slave服务器连接到master服务器,发送SYNC命令 slave服务器通过 syncWithMaster() 函数来连接 Master 服务器(如果Master服务器需要密码登录的话,先登录),并且发送SYNC命令请求同步,接着打开 r...转载 2019-06-09 20:39:23 · 3490 阅读 · 0 评论 -
redis代码-rdbEncodeInteger——longlong转整数,按字节存longlong型数值
将longlong类型的value编码成一个整数编码。#define RDB_ENC_INT8 0 /* 8位有符号整数 8 bit signed integer */#define RDB_ENC_INT16 1 /* 16位有符号整数 16 bit signed integer */#define RDB_ENC_INT32 2 /* 32位...转载 2019-05-26 10:19:42 · 383 阅读 · 0 评论 -
rio写操作范例
static inline size_t rioWrite(rio *r, const void *buf, size_t len) { while (len) { // 写的字节长度,不能超过每次读或写的最大字节数max_processing_chunk size_t bytes_to_write = (r->max_processing_chun...转载 2019-05-25 10:48:50 · 413 阅读 · 0 评论 -
redis的命令处理
转自http://mingxinglai.com/cn/2016/04/redis-process-command/redis的命令处理流程代码写得非常好,值得我们借鉴学习。为啥要学习redis的命令处理redis需要处理不同的命令,对于每一个命令,具体到代码实现时,就是不同的函数。这种需求是如此的常见,以致于你应该见过或者写过很多类似下面这样的代码:if (cmd == ...转载 2019-05-25 10:44:50 · 271 阅读 · 0 评论 -
Redis优秀代码分享[1]-digits10
Redis优秀代码分享[1]-digits10转自https://zhuanlan.zhihu.com/p/27872593uint32_t digits10(uint64_t v) { if (v < 10) return 1; if (v < 100) return 2; if (v < 1000) return 3; if (...转载 2019-05-25 10:42:00 · 200 阅读 · 0 评论 -
Redis优秀代码分享[0]-ll2string
Redis优秀代码分享[0]-ll2string转自https://zhuanlan.zhihu.com/p/27795562话不多说,先上代码,代码位置:redis/src/util.cint ll2string(char* dst, size_t dstlen, long long svalue) { static const char digits[201] =...转载 2019-05-25 10:41:35 · 410 阅读 · 0 评论 -
Redis源码入门[1]-字符串sds
Redis源码入门[1]-字符串sds转自https://zhuanlan.zhihu.com/p/27933491sds,全称Simple Dynamic Strings,是Redis自定义的一个字符串类型。typedef char *sds;看到这你肯定内心觉得Redis在逗你,这不就是一个字符数组么,怎么就Simple Dynamic Strings了呢 !没错,我当...转载 2019-05-25 10:39:31 · 112 阅读 · 0 评论 -
Redis内存管理(freeMemoryIfNeeded)
目录redis对象类型空转时间计算volatile-ttl策略volatile-lru and allkeys-lru 策略Redis占用的内存会被限定在一个固定大小。在32bit系统中,redis占用的memory不超过32GB。因此需要内存管理,将长时间未用的键值对删除(即volatile-lru and allkeys-lru策略(近似lru));将临近过期的键值对...原创 2019-03-02 22:15:19 · 580 阅读 · 0 评论 -
Redis简单动态字符串SDS(相关问题记录)
Redis简单动态字符串SDS(相关问题记录),算不上完全原创,只是学习过程中所产生疑问的记录,答案都是大神们给的。redis的简单动态字符串SDS结构如下:struct sdshdr { int len; int free; char buf[]; };问题一:为什么用char buf[], 而不用char *buf?char ...原创 2019-03-02 00:21:40 · 131 阅读 · 0 评论 -
redis压缩列表(节点插入-----代码学习)
在压缩列表的数据结构设计中,一个节点在previous_entry_length字段保存了前一节点的长度,在encoding保存当前节点的长度,在content保存数据内容。函数学习static unsigned char *__ziplistInsert(unsigned char *zl, unsigned char *p, unsigned char *s, unsign...原创 2019-01-26 11:31:33 · 627 阅读 · 0 评论 -
redis整数集合升级扩容(代码学习)
redis整数集合有固定的数据类型,比如是整数集合是int32_t类型,新增一个int64_t类型的整数,就需要对整个集合进行升级。redis的程序值得学习的地方太多。一、升级升级分为两步:扩容 + 填数1.1 新增值的类型判断static uint8_t _intsetValueEncoding(int64_t v) { if (v < INT32_MIN...原创 2019-01-23 23:01:28 · 535 阅读 · 0 评论