redis源码笔记-刘浩de技术博客-博客园redis源码笔记记录发现的一个hiredis的bug摘要:hiredis是redis官方提供的c客户端库。在读代码的过程中,发现了一个bug,记录一下。hiredis里定义了一个上下文结构(structredisContext),代码如下(deps/hiredis/hiredis.h):https://github.com/antirez/hiredis/blob/master/hiredis.h157/*Co
系统 2019-08-12 01:33:33 2389
对于目标机是大端字节序的机器,进行字节码的转换,提供了16byte、32byte、64byte字节的转换。在intset\ziplist\zipmap三种数据结构中使用,使得不同字节序机器生成的rdb文件格式都是统一的(小端字节序),便于兼容。代码实在是太简单了,贴上来,不多说了。endian.h1#ifndef__ENDIAN_H2#define__ENDIAN_H34voidmemrev16(void*p);5voidmemrev32(void*p);
系统 2019-08-12 01:32:38 2383
from:soclassictobenotedhere.Inthislight,hereisacomparisonofCassandra,Mongodb,CouchDB,Redis,Riak,Membase,Neo4jandHBase:CouchDB(V1.1.1)Writtenin:ErlangMainpoint:DBconsistency,easeofuseLicense:ApacheProtocol:HTTP/RESTBi-directional(!
系统 2019-08-29 23:36:32 2337
Redis的主从复制功能非常强大,一个master可以拥有多个slave,而一个slave又可以拥有多个slave,如此下去,形成了强大的多级服务器集群架构。下面我演示下怎样在多台服务器上进行Redis数据主从复制。这里我假设有两台服务器,一台是Windows操作系统(局域网IP:192.168.3.82),一台是Linux操作系统(局域网IP:192.168.3.90),在两个操作系统都安装redis,Windows操作系统使用cygwin工具进行安装,
系统 2019-08-12 01:51:37 2318
数据持久化通俗讲就是把数据保存到磁盘上,保证不会因为断电等因素丢失数据。redis需要经常将内存中的数据同步到磁盘来保证持久化。redis支持两种持久化方式,一种是Snapshotting(快照)也是默认方式,另一种是Append-onlyfile(缩写aof)的方式。先介绍下这两种dump方式再讲讲自己遇到的一些现象和想法,前面的内容是从网上整理出来的。Snapshotting快照是默认的持久化方式。这种方式是就是将内存中数据以快照的方式写入到二进制文件
系统 2019-08-12 01:53:18 2297
Redisintset也非常简单。它是一个有序整数集合,实际上是一个有序数组,查找时二分查找,添加时可能需要内存挪动。唯一不同的是,它的整数类型是变动的,可以支持int16,int32,int64三种,当然用越小的单位越省内存。只有当当前的整数类型存不下更大的整数时,才让整数类型变大。看结构就了解了:typedefstructintset{uint32_tencoding;uint32_tlength;int8_tcontents[];}intset;en
系统 2019-08-12 01:54:22 2294
aof是redis提供的一种数据持久化机制,通过将每一条命令dump下来,保持数据和内存中的数据一致。1#include"redis.h"2#include"bio.h"34#include5#include6#include7#include8#include9#include10#include
系统 2019-08-12 01:32:34 2292
0,在网上找redis源码分析的文档看,发现一些很好的博客:感谢这些大牛认真的工作先记下,回头仔细看:http://www.hoterran.info/redis_protocolhttp://qing.weibo.com/tj/6acf143f330005qm.htmlhttp://dongxicheng.org/nosql/redis-code-basic-points/http://www.cnblogs.com/liping13599168/arc
系统 2019-08-12 01:55:45 2286
importjava.util.HashMap;importjava.util.List;importjava.util.Map;importjava.util.Set;importredis.clients.jedis.Jedis;/***@authorwangzhijun*@date2013-04-01*/publicclassRedisTest{/***@paramargs*/publicstaticvoidmain(String[]args){//
系统 2019-08-12 01:55:25 2286
这篇介绍redis最后一个基础数据结构——hash表。可以毫不夸张的说,hash表是redis一切存储的基础,也是redis得以快如飞的基础。注:其实还有个intset,不过intset是在持久化dump到硬盘时为节省空间设计的,和我们这里谈的不一样。dict的设计呢,简单的说是一个双表,“一主一从”,不定时rehash,建议大家在读代码前能够对这个设计有所了解。Anyway,随便搜一搜,很多文章的。dict.h1#ifndef__DICT_H2#defi
系统 2019-08-12 01:32:41 2270
ZINTERSTORE—Redis命令参考ZINTERSTOREdestinationnumkeyskey[key...][WEIGHTSweight[weight...]][AGGREGATESUM|MIN|MAX]计算给定的一个或多个有序集的交集,其中给定key的数量必须以numkeys参数指定,并将该交集(结果集)储存到destination。默认情况下,结果集中某个成员的score值是所有给定集下该成员score值之和.关于WEIGHTS和AGGR
系统 2019-08-12 01:54:47 2250
早就听说redis性能卓越,不过难以使用,但看了HackerNews的报道后,还是被它的难度吓倒了。原文标题:From1.5GBto50MB:TheStoryofMyRedisDatabase,链接在这里:http://davidcel.is/blog/2013/03/20/the-story-of-my-redis-database/文章的内容简单的来说(英文水平不够,有错莫怪),刚开始,由于设计不好,redis的内存使用达到了1.5GB,服务器出现崩溃
系统 2019-08-12 01:55:41 2243
一、简介REmoteDIctionaryServer(Redis),redis是一个基于内存的单机key/value系统,类似memcached,但支持value为多种形式,包括:字符串(string)、链表(list)、集合(set)、有序集合(sortedset)和hashtable二、特点1优点与memcache和MySQL等类似产品比较,Redis有以下几个优点:(1)非常丰富的数据结构,且这些数据结构的常见操作均是原子性的;(2)高速读写。Mem
系统 2019-08-12 01:51:26 2238
ae框架是redis作者开发的事件处理框架,其目的和libevent项目类似。redis本着最小依赖原则,自己实现了一套,而且速度更快。ae只有不到500行代码,但据说libevent有3万加的代码,实现这一个功能所付出的代码量已经超过了redis所有的代码量。ae.h1#ifndef__AE_H__2#define__AE_H__3//同时支持的连接数,其实这个还是可以设的更大一些4#defineAE_SETSIZE(1024*10)/*Maxnumbe
系统 2019-08-12 01:32:38 2222
redis资源比较零散,引用nosqlfan上的文章,方便大家需要时翻阅。大家看完所有的,如果整理出文章的,麻烦知会一下,方便学习。1.Redis是什么?十五分钟介绍Redis数据结构Redis系统性介绍一个很棒的Redis介绍PPT强烈推荐!非同一般的Redis介绍Redis之七种武器锋利的Redisredis适用场景与实现【翻译】Redis协议2.Redis内部实现Redis源码分析系列文章Redis运行流程源码解析Redis2.6Lua脚本功能实现分
系统 2019-08-12 01:52:19 2215