Redis
文章平均质量分 81
iteye_878
这个作者很懒,什么都没留下…
展开
-
redis初步
0. 介绍redis是一个高性能的key-value数据库。redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部分场合可以对关系数据库起到很好的补充作用。以下知名网站使用了redis[list][*]stackoverflow[*]Twitter[*]Flickr[*]Github[*]新浪微博[/list]可参考[url]...原创 2014-06-16 23:19:30 · 90 阅读 · 0 评论 -
redis源码阅读笔记(13)——事务
1. 高层视角解读redis的事务实现是比较简单的,支持CAS操作,watch命令可以锁定某个key,在事务执行时如果检测到watch的key被修改,事务失败。事务成功执行后,会unwatch掉所有观察的keys。可以参考《Redis设计与实现》里的[url=http://origin.redisbook.com/en/latest/feature/transaction.html]事务[...原创 2014-07-22 15:40:14 · 91 阅读 · 0 评论 -
redis源码阅读笔记(12)——发布与订阅
1. 发布/订阅发布/订阅(Publish/subscribe 或pub/sub)是一种消息范式,消息的发送者(发布者)不是计划发送其消息给特定的接收者(订阅者)。而是发布的消息分为不同的类别,而不需要知道什么样的订阅者订阅。订阅者对一个或多个类别表达兴趣,于是只接收感兴趣的消息,而不需要知道什么样的发布者发布的消息。这种发布者和订阅者的解耦可以允许更好的可扩展性和更为动态的网络拓扑....原创 2014-07-21 16:33:16 · 93 阅读 · 0 评论 -
redis源码阅读笔记(11)——服务器与客户端
1.高层视角可首先阅读《Redis设计与实现》中的[url=http://origin.redisbook.com/en/latest/internal/redis.html]服务器与客户端[/url]原文已经相当详细了,可以代码结合文章细细品读。2. 服务器启动过程1)初始化服务器全局状态。 initServerConfig()2)Sentinel功能初始化 i...原创 2014-07-21 16:14:21 · 131 阅读 · 0 评论 -
redis源码阅读笔记(10)——事件
1. Reactor模式[url=http://en.wikipedia.org/wiki/Reactor_pattern]Reactor模式[/url](反应器模式)是一个事件处理模式,用来处理并发的服务请求,将一个或多个客户的服务请求分离(demultiplex),然后分发(dispatch)给处理器(request handler)。Reactor模式如图所示[img]http:...原创 2014-07-20 14:40:51 · 83 阅读 · 0 评论 -
redis源码阅读笔记(9)——RDB,AOF持久化
1. 持久化Redis提供了两种持久化数据到硬盘的方式。RDB:数据库里所有记录的一个快照AOF(append only file):原汁原味地记录了每次操作命令的历史记录,相当于一个log如果还没了解过持久化功能的话,请先阅读Redis官网上的[url=http://www.redis.cn/topics/persistence.html]persistence手册中文翻译版...原创 2014-07-18 16:12:54 · 169 阅读 · 0 评论 -
redis源码阅读笔记(8)——数据库
1. 高层视角解读Redis设计与实现中的[url=http://origin.redisbook.com/en/latest/internal/db.html]数据库[/url]章节Redis是一个键值对数据库,所以它的数据库本身也是一个字典(俗称 key space): 字典的键是一个字符串对象。 字典的值则可以是包括字符串、列表、哈希表、集合或有序集在内的任意...原创 2014-07-18 11:27:57 · 89 阅读 · 0 评论 -
redis源码阅读笔记(7)——对象
本篇我们研究redis里的对象。1. 概述redis有5种对象类型[list][*]字符串[*]列表[*]哈希[*]集合[*]有序集合[/list]它们的底层数据结构都是由前面6篇文章提到的所实现的。请先参考如下文章,并结合源码阅读体会。[url]http://www.redisbook.com/en/latest/toc.html[/url...原创 2014-07-12 23:19:55 · 95 阅读 · 0 评论 -
redis源码阅读笔记(6)——ziplist
1.高层视角解读压缩列表(ziplist)是为了尽可能地节约内存而设计的特殊编码双端链表,是列表键和哈希键的底层实现之一。当一个列表键或者哈希键只包含少量项, 并且每个项要么就是小整数值, 要么就是长度比较短的字符串, 那么 Redis 就会使用压缩列表来做底层实现。请先看这篇文章[url]http://www.redisbook.com/en/latest/toc.htm...原创 2014-07-12 01:13:52 · 104 阅读 · 0 评论 -
redis源码阅读笔记(5)——intset
1.高层视角解读整数集合(intset)是集合键的底层实现之一: 当一个集合只包含整数值元素, 并且这个集合的元素数量不多时, Redis 就会使用整数集合作为集合键的底层实现。Intset 不支持降级操作。请先看这篇文章[url]http://www.redisbook.com/en/latest/toc.html[/url] 里的第6章——整数集合redis中的in...原创 2014-07-08 16:23:29 · 94 阅读 · 0 评论 -
redis源码阅读笔记(4)——skiplist
0.跳表基础知识跳表(skiplist)是一种有序数据结构, 它通过在每个节点中维持多个指向其他节点的指针, 从而达到快速访问节点的目的。跳跃表支持平均 O(log N) 最坏 O(N) 复杂度的节点查找, 还可以通过顺序性操作来批量处理节点。在大部分情况下,跳跃表的效率可以和平衡树相媲美,并且因为跳跃表的实现比平衡树要来得更为简单,所以有不少程序都使用跳跃表来代替平衡树。一个...原创 2014-07-08 15:08:52 · 99 阅读 · 0 评论 -
redis源码阅读笔记(3)——dict
1.高层视角解读字典, 又称符号表(symbol table)、关联数组(associative array)或者映射(map), 是一种用于保存键值对(key-value pair)的抽象数据结构。请先看关于字典的一组文章[url]http://www.redisbook.com/en/latest/toc.html[/url]里面的第4章——字典。字典的数据结构如图所示。[...原创 2014-07-08 13:26:22 · 114 阅读 · 0 评论 -
redis源码阅读笔记(2)——adlist
adlist(A doubly linked list)是Redis里实现的一个双向链表。1.高层视角解读请先看这篇文章[url=http://www.redisbook.com/en/latest/preview/adlist/implementation.html]链表和链表节点的实现[/url]链表的数据结构如图所示:[img]http://origin.redisb...原创 2014-07-07 15:54:57 · 179 阅读 · 0 评论 -
redis源码阅读笔记(1)——sds
最近突然一时兴起,开始看redis的源代码实现。《redis源码阅读笔记》系列将记录下我阅读redis源码的一些笔记和心得。第一篇我们从最简单的sds(Simple Dynamic String,简单动态字符串)开始啦。网上已经有一些很好的代码解析的文章了,所以我们可以参考一下1.高层视角解读[url=http://www.redisbook.com/en/latest/p...原创 2014-07-06 01:03:01 · 180 阅读 · 0 评论 -
用spring-data-redis实现类似twitter的网站
1. [url=http://projects.spring.io/spring-data-redis/]spring-data-redis[/url]简介封装了一下redis的客户端,使得使用起来更方便。优点是把客户端连接放到一个连接池里,从而提高性能。还有就是可以不同的客户端之间实现切换,而不用改一行代码(Spring惯用的一个手法)。本文写作时最新版是1.3,目前支持下面4种...原创 2014-06-20 14:09:26 · 128 阅读 · 0 评论 -
jedis/nosql-unit初步
1. redis的客户端概述redis的客户端实在太多了,比memcached还要多。列表参见[url]http://redis.io/clients[/url]2. [url=https://github.com/xetorthio/jedis/]jedis[/url]是一个java客户端。2.1 和maven的集成,目前最新版是2.5.1[code="xml"]...原创 2014-06-17 16:36:18 · 157 阅读 · 0 评论 -
redis官方文档中文版_Partitioning : 怎么样将你的数据分布在多个redis instance上?
本文转载自[url]http://skynetdoc.com/?p=119[/url]本人顺便修正了一些文字上的复制粘贴小错误,以及更新了一些文字以和英文版保持一致。Partitioning 能够将你的数据发布在多个redis node(node和instance一个意思)上,因此每一个node仅仅保存了你keys的一个subset。这个文档的第一部分将会给你介绍Partiti...原创 2014-07-30 17:26:56 · 189 阅读 · 0 评论