`
DiaoCow
  • 浏览: 244366 次
  • 性别: Icon_minigender_1
  • 来自: 南京
社区版块
存档分类
最新评论
文章列表
《Redis源码学习笔记》文章列表 由于图片较大,缩放较为模糊,请双击打开查看原图 ^_^ 在主从复制过程中,我们提到过RDB文件,作为Redis持久化方式之一,RDB把数据库某一时刻的内容,也就是快照,以二进制的方式记录到文件,并且在下次启动的时候可以用来初始化Redis; RDB最重要的两个过程是rdbSave和rdbLoad,下面我就这两个过程分别叙述; rdbSave 在具体看rdbSave过程之前,我们先看下RDB文件格式: 我们可以简单思考下,RDB文件协议为什么会那样设计? 1. RDB文件以"REDIS"开头是为了区分普通文件,这样redis在 ...
《Redis源码学习笔记》文章列表 由于图片较大,缩放较为模糊,请双击打开查看原图 ^_^ Redis提供两种持久化方式,RDB和AOF;与RDB不同,AOF可以完整的记录整个数据库,而不像RDB只是数据库某一时刻的快照; 那么AOF模式为什么可以完整的记录整个数据库呢? 原理:在AOF模式下,Redis会把执行过的每一条更新命令记录下来,保存到AOF文件中;当Redis需要恢复数据库数据时,只需要从之前保存的AOF文件中依次读取命令,执行即可 eg. 我们执行了以下命令: redis 127.0.0.1:6379> set name diaocow OK redis 12 ...
《Redis源码学习笔记》文章列表 Redis可以为数据库中的每一个键关联一个过期时间,当到达指定时间后Redis就会把该键从数据库中删除,eg: redis 127.0.0.1:6379> setex name 5 diaocow # 为键name设置5秒的过期时间 OK redis 127.0.0.1:6379> 5 ...
《Redis源码学习笔记》文章列表 由于图片较大,缩放较为模糊,请双击打开查看原图 ^_^ 主从复制简单来说就是把一台redis数据库中的数据同步到另一台redis数据库,并且按照数据流向,数据的发送者我们称作master,数据的接受 ...
《Redis源码学习笔记》文章列表 Redis中的事务,提供了一种“将多个命令打包并且一次执行”的方式; 当用户输入MULTI命令时,就打开了客户端REDIS_MULTI选项,客户端从“非事务状态”切换到“事务状态” 之后客户端执行的所有命令都不会被Redis立即执行,而是放到客户端的“命令队列”里去(服务器返回QUEUED字样,表示命令已经入队),当客户端发出EXEC命令(表示客户端需要执行事务),这时候Redis从客户端的“命令队列”里依次取出命令执行,eg: redis 127.0.0.1:6379> multi # 客户端进入事务状态 OK redis 127.0. ...
《Redis源码学习笔记》文章列表 Redis的SUBSCRIBE命令,可以让客户端订阅任意数量的频道,每当有新消息发送到某个频道时,Redis就会把这消息发送给所有订阅该频道的客户端;如下图:客户端Client_1,Client_2,Client_3都订阅了频道channel,当有消息PUBLISH到频道channel时,这三个客户端都将收到消息: 原理:RedisServer内部维护了一个pubsub_channels字典,其中字典的键就是被订阅的频道,而键值就是订阅该频道的客户端列表; 这样,当一个客户端执行PUBLISH channel_name命令时,Redis就可以根据 ...
《Redis源码学习笔记》文章列表 Redis没有使用第三方事件库来处理socket(譬如Libevent),而是自己实现了一个非常精巧的事件库(加上注释不到600行代码),这使得我们可以更加专注于Redis本身代码的阅读,而不必陷于三方库的学 ...
《Redis源码学习笔记》文章列表 由于图片较大,缩放较为模糊,请双击打开查看原图 ^_^ 要看懂redis代码,其中重要的一步就是要看懂它里面所使用的数据结构,而在这不算少的数据结构中,最重要的就是字典,它几乎就是redis实现各种功能的骨架,所以理解好字典至关重要! redis作为一个nosql数据库,所有的key-value都是存储在一个字典中,而字典则是用哈希表实现的;关于哈希表原理,随便上网查一下都能找到一大堆资料,因此这里我也不想做过多赘述,直接开门见山,看下在redis中哈希表是什么样的: 上图所示结构对应代码如下: // 字典 typedef struct di ...
1. 《Redis源码学习笔记》数据结构-字典 2. 《Redis源码学习笔记》事件库 3. 《Redis源码学习笔记》事务 4. 《Redis源码学习笔记》发布/订阅 5. 《Redis源码学习笔记》主从复制 6. 《Redis源码学习笔记》键过期 7. 《Redis源码学习笔记》R ...
自己是个python新手,之前买了本<<python核心编程>>,但看了一半实在看不下去了(内容过于啰嗦,而且在关键点的地方又浅尝辄止),所以希望通过阅读一些简单的开源项目来快速提高python水平,最终让我发现了webpy这个好东西! 那么webpy是什么呢? 阅读它的源码我们又能学到什么呢? 简单说webpy就是一个开源的web应用框架(官方首页:http://webpy.org/) 它的源代码非常整洁精干,学习它一方面可以让我们快速了解python语法(遇到看不懂的语法就去google),另一方面可以学习到python高级特性的使用(譬如反射,装饰器),而且在 ...
看完了该章,觉得最重要的是需要了解以下几个方面: a.stat结构 b.进程权限及作用 c.文件相关属性(访问权限,文件时间等等) d.unix文件系统(inode和block关系) 现在我就以流水账^_^的形式对上述几个方面做个总结: -------------- ...
对于unix系统而言,一切皆“文件”,所以我们就可以使用一套基本的IO函数,来对所有的“文件”进行读写操作!现在我们来看下文件操作的几个底层IO 1.open函数用来打开或创建一个文件,其函数原型如下: int open(const char *pathn ...
之前说了rebar编译的核心部分(rebar_base_compile:run/4方法),现在我们就完整的看下Erlang编译流程(不准备细致的分析每一行代码,只罗列其中较为重要的部分) 编译的入口方法是: rebar_erlc_compiler:compile/2 其中doterl_compile负责编译我们写的Erlang源代码文件,我们来看下它的相关代码 注意观察第208行代码,这就是我们上一节说的核心编译部分(串行编译和并行编译),其中: fun(S, C) ->       internal_erl_compile(C, S, OutDir1, ErlOpts) ...
最近看霸爷的微博(http://weibo.com/tchuba)提到,rebar(https://github.com/basho/rebar)是学习Erlang很好的材料,因此作为Erlang新手,自己也把源码下载下来看了下,确实发现代码写的非常优雅工整,里面的每个方法(函数)写的都很短小 ...
ets是什么? ets是Erlang Term Storage的缩写,它是一个基于内存的KV Table,支持大数据量存储以及高效查询. ets有4种类型的table: settable中的每一个Value(Tuple)都是唯一,并且一个Key只能对应一个Valueordered_set同set,唯一不同的是table ...
Global site tag (gtag.js) - Google Analytics