Mysql 索引 Posted on 2019-04-22 | 引言理解Mysql的索引参考极客时间mysql45讲之第4讲,5讲,9讲,10讲,11讲,18讲 不同的索引||哈希索引|有序数组|树||——-|——-|—-||增 |最快 | 慢 | 快||查 | 最快 | 快 | 快||范围查 | 慢 | ... Read more »
Mysql redo binlog 主从及其延迟 Posted on 2019-04-22 | 引言理解Mysql的redo log,binlog,主从及其延迟参考极客时间mysql45讲之第2讲,12讲,15讲,23讲,24讲,25讲,26讲,27讲,28讲 redolog与binlogredolog 固定大小,循环写入 redolog相比直接在磁盘中写入修改的好处是将随机写转换为顺序写,并 ... Read more »
Mysql 隔离级别、锁、MVCC示例 Posted on 2019-04-20 | 引言通过构造示例,理解Mysql的隔离级别及其锁和MVCC的实现参考极客时间mysql45讲之第3讲,7讲和8讲,19讲,20讲 事务隔离级别 RU 读未提交 RC 读已提交 RR 可重复读 S 顺序读 123表结构create table T(c int) engine=InnoDB;inse ... Read more »
Redis module开发 Posted on 2019-04-17 | module的作用redis通过对外提供一套API和一些数据类型, 可以供开发者开发自己的模块并且加载到redis中.通过API可以直接操作redis中的数据,也可以通过调用redis命令来操作数据(类似lua script).通过编写模块可以注册自己的命令到redis中. 编写一个module我们 ... Read more »
Sqlite Write-Ahead Logging Posted on 2019-04-16 | 这篇文章译自Sqlite官方文档,介绍另一种保证Sqlite原子性的机制,Write-Ahead logging Sqlite WAL原文链接:https://www.sqlite.org/wal.html 1.概览Sqlite中默认保证原子性的机制是rollback journal,从3.7. ... Read more »
Redis的一个历史bug及其后续改进 Posted on 2019-04-15 | ziplist简介Redis使用ziplist是为了节省内存.以zset为例,当zset元素个数少并且每个元素也比较小的时候,如果直接使用skiplist(可以理解为多层的双向链表),每个节点的前后指针这些元数据占用空间的比例可能达到50%以上.而ziplist是分配在堆上的一块连续内存,通过一定的 ... Read more »
Sqlite如何实现ACID中的原子性 Posted on 2019-04-13 | 这个文章序列关注Sqlite的原子性实现.首先翻译一篇官方文章,介绍Sqlite的 rollback journal,然后结合一些问题通过源码分析一下具体实现.后续几篇关注Sqlite3.7.0之后的另一种保证原子性的实现 WAL(write ahead log).注意Sqlite以静态或者动态库 ... Read more »
Redis中查找大key Posted on 2019-02-13 | redis-cli提供的方法注意以下所有试验基于redis 5.0.3版本 redis-cli 提供一个bigkeys参数,可以扫描redis中的大key 1--bigkeys Sample Redis keys looking for big keys. 执行之后输出如下所示: ... Read more »
Redis的resp协议 Posted on 2019-01-31 | resp协议redis客户端和服务端交互使用的是redis作者制定的一个协议,叫resp(REdis Serialization Protocol)。 具体分如下几个层次 基于tcp 请求响应模式,但在两种情况下不再是简单的请求和响应模式(下文介绍) 支持五种类型的数据,分别是简单字符串,错误,整 ... Read more »
codis proxy处理流程 Posted on 2019-01-10 | proxy启动cmd/proxy/main.go文件 解析配置文件之后重点是proxy.New(config)函数 该函数中,首先会创建一个Proxy结构体,如下: 1234567891011type Proxy struct { mu sync.Mutex ... confi ... Read more »