分布式缓存
爱艺欣聊编程
超级大码农
展开
-
《Redis设计与实现》学习笔记-服务端
Redis服务器负责与多个客户端建立连接,处理客户端请求,保存各个数据库状态。通过使用由I/O多路复用技术实现的事件处理器,Redis服务器采用单线程单进程处理客户端命令请求。Redis通过redisServer结构来记录服务端的各种状态。命令请求执行过程1、客户端发送命令请求,客户端将命令请求转换成协议格式。2、服务端读取命令请求,将命令请求缓存在客户端输入缓冲区中,对输入缓冲区中的原创 2015-03-19 23:18:16 · 855 阅读 · 0 评论 -
基于Netty的Redis客户端-Nedis
最近温习了一遍Redis命令,忧伤的是很多东西已交还给老师,正好赶上antirez大神在愚人节发布了Redis 3.0,Redis终于有了支持集群的正式版本,于是心血来潮决定自己实现一个Redis客户端来抚慰我这颗忧伤的心灵。Jedis已经足够强大,它的网络连接是基于阻塞式IO,实现非常简单易懂,但是OIO和NIO相比性能上有劣势,于是决定通过NIO来实现和Redis服务器的网络连接,现在原创 2015-04-16 21:57:56 · 5484 阅读 · 3 评论 -
《Redis设计与实现》学习笔记-客户端
Redis通过一个redisClient结构体来保存客户端当前的状态信息和执行相关功能时需要用到的数据结构,包括:套接字描述符名字flags属性输入缓冲区输出缓冲区当前要执行的命令与命令参数身份验证标识时间套接字描述符 fd属性保存客户端正在使用的套接字描述符。如果客户端是伪客户端该属性值为-1,如果是普通客户端它是一个大于-1的整数。redis在加载AOF文件或执行Lua原创 2015-03-18 23:18:10 · 1063 阅读 · 0 评论 -
《Redis设计与实现》学习笔记-Lua脚本
Redis从2.6开始支持Lua脚本,和事务的功能类似,可以通过Lua脚本原子的执行多个Redis命令。Redis提供了EVAL和EVALSHA命令执行lua脚本。创建并修改Lua坏境Redis在服务器内嵌了一个Lua坏境,并进行了一系列的修改,从而确保这个Lua坏境可以满足Redis服务器的需要,通过下列步骤创建并修改Lua坏境:创建一个基础Lua坏境,通过调用Lua的C API原创 2015-03-21 21:55:29 · 1043 阅读 · 0 评论 -
《Redis设计与实现》学习笔记-集群
Redis也可通过集群来实现分布式,通过分片进行数据共享,并提供复制和故障转移。当前Redis版本的集群功能还没有正式发布,目前只是一个不稳定的分支,据说快要正式发布了。添加集群节点服务器节点通过执行CLUSTER MEET 命令把指定的服务器添加到当前集群中,通过CLUSTER NODES来查询当前集群中的所有节点信息,当cluster-enabled配置选项设成yes时,说明该服务器原创 2015-03-21 20:43:26 · 1388 阅读 · 0 评论 -
《Redis设计与实现》学习笔记-发布订阅与事务
发布与订阅Redis通过发布订阅提供一对多甚至是多对多的节点消息通信,发布订阅由PUBLISH、SUBSCRIBE、PSUBSCRIBE、PUBSUB等命令组成。SUBSCRIBE命令:订阅某频道,在redisServer结构中通过pubsub_channels字典属性保存当前服务器所有频道的订阅关系,字典键时频道名称,字典值是一个链表,记录了所有订阅这个频道的客户端。UNSUBSCR原创 2015-03-21 21:39:40 · 811 阅读 · 0 评论 -
《Redis设计与实现》学习笔记-单机数据库
一个Redis服务器实例在单机运行时可以添加多个数据库来保存键值对,Redis在实现中通过一个redisDb结构体来描述数据库,该结构体中有一个字典类型的字段来保存数据库中所有的键值对,redisServer结构体来描述服务器实例,该结构体中有一个dbnum字段来保存数据库数量,一个redisDb数组字段来保存服务器中的所有数据库。struct redisServer{ ...原创 2015-03-17 22:09:49 · 817 阅读 · 0 评论 -
《Redis设计与实现》学习笔记-Sentinel(哨岗、哨兵)
Sentinel是Redis的高可用性解决方案,由一个或多个Sentinel实例组成Sentinel系统,可以用来监视任意多个主服务器和主服务器下的所有从服务器,当监视到主服务器下线之后会自动将下线主服务器下的从服务器升级为新的主服务器,由新主服务器代替已下线主服务器处理命令请求。Sentinel是一个特殊的Redis服务器实例,Redis由一个或多个Sentinel实例构成Sentinel系原创 2015-03-20 23:59:10 · 1384 阅读 · 0 评论 -
《Redis设计与实现》学习笔记-持久化机制
同memcached(对不起,又躺枪了)等完全基于内存的缓存相比,Redis是提供了持久化功能的,这也是为什么在某些条件下Redis可以用来做存储而不仅仅是缓存,节点down机之后可以通过持久化的数据还原某个时间点的状态。Redis提供了两种持久化机制RDB和AOF,准确的讲应该是三种,Redis提供了虚拟内存机制,但是据说性能非常不靠谱,嗯,是据说,我并没有深入研究过。RDB持久化RDB原创 2015-03-17 22:59:38 · 771 阅读 · 0 评论 -
《Redis设计与实现》学习笔记-主从复制
为了提供整个缓存的可用性,可以给主服务器添加备用服务器,即从服务器。通过SLAVEOF命令把当前服务器设置成某台服务器的从服务器。老版本同步过程旧版本(2.8之前)主从服务器数据同步过程如下:从服务器向主服务器发送SYNC命令。主服务器接收到SYNC命令后调用BGSAVE命令生成一个RDB文件,在此过程中客户端对主服务器的修改命令存放在一个缓冲区中。主服务器把生成的RDB文件发原创 2015-03-19 23:41:25 · 785 阅读 · 0 评论 -
《Redis设计与实现》学习笔记-基础数据结构
和memcached相比,redis提供更丰富的数据结构原创 2015-03-16 22:02:56 · 952 阅读 · 0 评论