拥有redis标签的文章
redis

redis源码笔记-ae.h

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 2589

redis

redis源码笔记 - bio

作者在bio.c的头注释中对设计进行了详细的介绍/*BackgroundI/OserviceforRedis.这个文件是redis后台IO服务的实现**Thisfileimplementsoperationsthatweneedtoperforminthebackground.*Currentlythereisonlyasingleoperation,thatisabackgroundclose(2)*systemcall.Thisisneededaswh

系统 2019-08-12 01:32:36 2567

redis

Redis的sds

Redis源码中的sds,是一个动态字符串库(Adynamicstringlibrary).结构如下:structsdshdr{intlen;intfree;charbuf[];};len是字符串长度,free是缓存区中的剩余大小,其中的内存分配当然用zmalloc。typedefchar*sds;sds类型的指针退sizeof(sdshdr)个字节就是sdshdr。这个库接口比较丰富,包括增长(sdsMakeRoom,sdsgrowzero,sdscat

系统 2019-08-12 01:53:31 2558

redis

Redis主从服务器

配置主从服务器Redis主从服务器的搭建很简单,只要少许配置即可,为了演示的方便,我们就在一台服务器上配置:前提是你已经有了一台Redis服务器,如果没有可以参考我以前的文章安装。下面看看如何配置从服务器:假设主服务器的配置文件是:/etc/redis.conf,我们复制一份作为从服务器的配置文件:cp/etc/redis.conf/etc/redis_slave.conf并作修改:#vi/etc/redis_slave.confport6380dbfil

系统 2019-08-12 01:53:18 2558

redis

基于Redis的在线用户列表解决方案

前言:由于项目需求,需要在集群环境下实现在线用户列表的功能,并依靠在线列表实现用户单一登陆(同一账户只能一处登陆)功能:在单机环境下,在线列表的实现方案可以采用SessionListener来完成,当有Session创建和销毁的时候做相应的操作即可完成功能及将相应的Session的引用存放于内存中,由于持有了所有的Session的引用,故可以方便的实现用户单一登陆的功能(比如在第二次登陆的时候使之前登陆的账户所在的Session失效)。而在集群环境下,由于

系统 2019-08-12 01:55:16 2543

redis

redis源码笔记 - redis-cli.c

这份代码是redis的client接口,其和server端的交互使用了deps目录下的hiredisc库,同时,在这部分代码中,应用了linenoise库完成类似history命令查询、自动补全等终端控制功能。1#include"fmacros.h"//用于mac下的兼容性处理2#include"version.h"//版本信息头文件,当前版本是2.4.1034#include5#include6#include

系统 2019-08-12 01:32:36 2542

redis

Mac 系统安装redis服务

1.首先去http://www.redis.io/下载最新的redis文件,现在最新的是redis-2.8.192.进行解压缩tar-zxvfredis-2.8.19.tar.gz3.移动重新命名为redismvredis-2.8.19../redis4.进入src目录下面编译redissudomake编译成功后,会有一个提示It'sagoodideatorun'maketest'5.编译testsudomaketest编译test出现了一个错误,make

系统 2019-08-12 01:52:11 2540

redis

redis系列之Redis应用场景

1取最新N个数据的操作比如典型的取你网站的最新文章,通过下面方式,我们可以将最新的5000条评论的ID放在Redis的List集合中,并将超出集合部分从数据库获取1)使用LPUSHlatest.comments命令,向list集合中插入数据插入完成后再用LTRIMlatest.comments05000命令使其永远只保存最近5000个ID然后我们在客户端获取某一页评论时可以用下面的逻辑(伪代码)FUNCTIONget_latest_comments

系统 2019-08-12 01:51:25 2527

redis

Redis rio

Redisrio的代码很少,基本上包了一个虚基类:struct_rio{void(*update_cksum)(struct_rio*,constvoid*buf,size_tlen);/*Thecurrentchecksum*/uint64_tcksum;/*Backend-specificvars.*/union{struct{sdsptr;off_tpos;}buffer;struct{FILE*fp;off_tbuffered;/*Byteswri

系统 2019-08-12 01:53:32 2526

redis

Redis 3.0集群搭建/配置/FAQ

·声明1,已官网中文教程为基础,边看边学,结合环境现状搭建。2,哥对Ruby不热爱、不熟悉、不感冒,所述内容如有疑义请谅解。3,3.0官说集群还在测试中,其实用用也还算马马虎虎,对外集群API真心少,望有识之士能够出力。·准备材料VM9,CentOS6.4_x86_64(2.6+),SecureCRT,CentOS-6.4-x86_64-bin-DVD1.isoredis官网:redis-3.0.0-beta1.tar.gzruby官网:rubygems-

系统 2019-08-12 01:32:49 2523

redis

redis和memcache的对比

1.Memcached简介Memcached是以LiveJurnal旗下DangaInteractive公司的BardFitzpatric为首开发的高性能分布式内存缓存服务器。其本质上就是一个内存key-value数据库,但是不支持数据的持久化,服务器关闭之后数据全部丢失。Memcached使用C语言开发,在大多数像Linux、BSD和Solaris等POSIX系统上,只要安装了libevent即可使用。在Windows下,它也有一个可用的非官方版本(ht

系统 2019-08-12 09:27:39 2507

redis

Redis指令文档

连接控制QUIT关闭连接AUTH(仅限启用时)简单的密码验证适合全体类型的命令EXISTSkey判断一个键是否存在;存在返回1;否则返回0;DELkey删除某个key,或是一系列key;DELkey1key2key3key4TYPEkey返回某个key元素的数据类型(none:不存在,string:字符,list,set,zset,hash)KEYSpattern返回匹配的key列表(KEYSfoo*:查找foo开头的keys)RANDOMKEY随机获得一

系统 2019-08-12 01:53:21 2502

redis

Redis 集群实现

Nosql,作为程序员在当下不了解点儿,还真不行,出去聊起来别人就会说你土。那么就聊聊其中一个比较火的redis。redis单机版没得说,但是一直没有集群版,有也是山寨的。前段时间对redis的实现进行了一些学习,明天就要发布redis集群的稳定版,作为纪念以及学习,发一下redis集群实现的细节,英文好的就看原文吧。redis集群实现一个高性能、线性可扩展的1000节点的集群。Redis集群没有最重要或者说中心节点,这个版本最主要的一个目标是设计一个线性

系统 2019-08-12 01:52:21 2484

redis

redis源码笔记-adlist

adlist是redis自己是实现的一个通用的双向链表。------------------------------------------------adlist.h---------------------------------------------------#ifndef__ADLIST_H__#define__ADLIST_H__/*Node,List,andIteratoraretheonlydatastructuresusedcurren

系统 2019-08-12 01:32:58 2479

redis

Redis slowlog

和mongo的slowlog一样,redis中对于操作时间较长(默认为10秒)的命令也会记录下来,不过它将它们保存在redisServer结构中的slowlog这个链表中,新进来的log排在链表头部,这个链表的长度可以配置,超过长度(默认为128)则将链表尾部元素踢掉。链表中的元素是slowlogEntry://Thisstructuredefinesanentryinsidetheslowloglist.typedefstructslowlogEntry

系统 2019-08-12 01:52:07 2471