
redis
文章平均质量分 83
yvhqbat
whuster
展开
-
数据结构与对象
第 1 步:阅读数据结构实现 刚开始阅读 Redis 源码的时候, 最好从数据结构的相关文件开始读起, 因为这些文件和 Redis 中的其他部分耦合最少, 并且这些文件所实现的数据结构在大部分算法书上都可以了解到, 所以从这些文件开始读是最轻松的、难度也是最低的。下表列出了 Redis 源码中, 各个数据结构的实现文件:文件 内容 sds.h 和 sds.c Redis 的动态字符串实现。原创 2016-05-24 17:08:13 · 548 阅读 · 0 评论 -
redis面试题总结
转自: http://blog.youkuaiyun.com/zdp072/article/details/50991116 http://www.100mian.com/mianshi/dba/37381.html1. 使用redis有哪些好处?(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) (2) 支持丰富数据类型,支持string转载 2016-06-13 15:38:33 · 15691 阅读 · 3 评论 -
redis集群
集群是redis提供的分布式数据库方案,通过分片(sharding)来进行数据共享,并提供复制和故障转移功能。1. 节点 一个redis集群由多个节点(node)组成。 一个节点就是一个运行在集群模式下的redis服务器,redis服务器咋启动时根据cluster-enabled配置选项是否为yes来决定是否开启服务器的集群模式。CLUSTER MEET命令:连接各个节点。向一个节点n原创 2016-06-02 11:26:49 · 785 阅读 · 0 评论 -
redis哨兵(sentinel)系统
sentinel(哨兵)是redis的高可用性(high availability)解决方案:由一个或多个sentinel实例组成的Sentinel系统,监视任意多个主服务器及这些主服务器下的从服务器,并在被监视的主服务器进入下线状态时,自动将下线主服务器属下的某个从服务器升级为新的主服务器,代替已下线的主服务器继续处理命令请求。 下图是Sentinel系统监视服务器的例子: 1. 启原创 2016-06-02 11:23:14 · 2054 阅读 · 0 评论 -
主从服务器(复制)
redis中,用户可以通过执行SLAVEOF 命令或设置slaveof选项,让一个服务器复制另一个服务器。主服务器(master):被复制的服务器。从服务器(slave):对主服务器进行复制的服务器。主从服务器双方数据库状态一致。127.0.0.1:12345> SLAVEOF 127.0.0.1 63791. 旧版复制功能的实现 redis的复制功能分为两个操作: 1. 同步(sy原创 2016-05-29 15:44:29 · 2245 阅读 · 0 评论 -
监视器
MONITOR命令:客户端将自己变成一个监视器,实时接收并打印服务器当前处理的命令请求的相关信息。redis> MONITOROK//... 每当一个客户端向服务器发送一条命令时,服务器①处理这条命令②将这条命令请求的信息发送给所有监视器。 1. 客户端成为监视器服务器状态redisServer->monitors链表属性 MONITOR命令可以让一个客户端变为监视器,其伪代码的原创 2016-06-01 12:47:55 · 362 阅读 · 0 评论 -
慢查询日志
redis的慢查询日志:用于记录执行时间超过给定时长的命令请求,用户可以通过慢查询日志来监视和优化查询速度。两个服务器配置选项: slowlog-log-slower-than 选项:指定执行时间超过多少微妙的命令请求会被记录到日志上。slowlog-max-len 选项:指定服务器最多保存多少条慢查询日志。redis> CONFIG SET slowlog-log-slower-than原创 2016-05-31 17:36:42 · 282 阅读 · 0 评论 -
事务
事务:提供一种将多个命令请求打包,然后一次性、按顺序地执行多个命令的机制,并且在事务执行期间,服务器不会中断事务而改去执行其他客户端的命令请求,它将事务中的所有命令都执行完毕,然后才会处理其他客户端的命令请求。1. 事务的实现三个阶段:1.1 MULTI命令:事务的开始执行该命令的客户端从非事务状态切换至事务状态,在客户端状态的flags属性中打开REDIS_MULTI标识完成.127.0.0.1原创 2016-05-30 13:03:46 · 325 阅读 · 0 评论 -
发布与订阅
redis的发布与订阅功能由PUBLISH、SUBSCRIBE、PSUBSCRIBE命令组成。1. 频道的订阅与退订(1)SUBSCRIBE命令:客户端可以订阅一个或多个频道,从而成为这些频道的订阅者(subscriber):每当有其他客户端向被订阅的频道发送消息(message)时,频道的所有订阅者都会收到这条消息。127.0.0.1:6379> SUBSCRIBE "news.it"Read原创 2016-05-29 16:53:55 · 732 阅读 · 0 评论 -
redis事件
redis服务器是一个事件驱动程序,服务器需要处理两类事件:文件事件,时间事件。1. 文件事件转载于:http://redisbook.com/preview/event/file_event.html redis服务器通过套接字与客户端进行连接,而文件事件就是服务器对套接字操作的抽象。文件事件结构:ae.h/aeFileEvent/* File event structure * *原创 2016-05-29 11:26:22 · 700 阅读 · 0 评论 -
服务器
redis服务器负责与多个客户端建立网络连接,处理客户端发送的命令请求,在数据库中保存客户端执行命令所才参数的数据,并通过资源管理来维持服务器自身的运转。1. 命令请求的执行过程以SET命令为例:redis> SET key valueredis> OK1.1 发送命令请求1.2读取命令请求当客户端与服务器之间的连接套接字因为客户端的写入而变的可读时,服务器将调用命令请求处理器来执行如下操作:原创 2016-05-27 11:18:35 · 5284 阅读 · 0 评论 -
《Redis设计与实现》资源总结
转自: 《Redis 设计与实现》一书全面而完整地讲解了 Redis 的内部运行机制, 对 Redis 的大多数单机功能以及所有多机功能的实现原理进行了介绍, 展示了这些功能的核心数据结构以及关键的算法思想。 书本网站:http://redisbook.com/带注释的源码 为了帮助有需要的读者进一步了解 Redis 的实现细节, 本书附带了一份包含详细中文注释的 Redis 3.0 版本源码原创 2016-05-24 15:59:44 · 882 阅读 · 0 评论 -
客户端
redis服务器是一个典型的一对多服务器程序,通过I/O多路复用技术实现的文件事件处理器,redis服务器使用单线程单进程的方式来处理命令请求,并于多个客户端进行网络通信。1. 客户端状态及属性redis.h/redisClient结构,保存了客户端当前的状态信息,以及执行相关功能时需要用到的数据结构,/* With multiplexing we need to take per-client s原创 2016-05-27 11:41:20 · 433 阅读 · 0 评论 -
数据库
1、服务器中的数据库redis数据库将所有数据库保存在redis.h/redisServer结构的redisDb *db 数组中。db数组的每一项都是一个redis.h/redisDb结构,每个redisDb结构代表一个数据库.struct redisServer { //... // 数据库 redisDb *db; //服务器的数据库数量 int dbnum;原创 2016-05-25 17:32:57 · 405 阅读 · 0 评论 -
对象
Redis 用到的所有主要数据结构:简单动态字符串(SDS)、双端链表、字典、压缩列表、整数集合, 等等。Redis 并没有直接使用这些数据结构来实现 键值对数据库, 而是基于这些数据结构创建了一个对象系统,包含字符串对象、列表对象、哈希对象、集合对象和有序集合对象这五种类型的对象, 每种对象都用到了至少一种我们前面所介绍的数据结构。除此之外, Redis 的对象系统还实现了基于引用计数技术的内存回原创 2016-05-25 16:55:30 · 448 阅读 · 0 评论 -
ubuntu下安装redis
Ubuntu 下安装 在 Ubuntu 系统安装 Redi 可以使用以下命令:$sudo apt-get update$sudo apt-get install redis-server启动 Redis$ redis-server查看 redis 是否启动?$ redis-cli以上命令将打开以下终端:redis 127.0.0.1:6379>127.0.0.1 是本机 IP ,6379 是 r转载 2016-05-25 15:36:56 · 308 阅读 · 0 评论 -
redis内存编码数据结构(整数集合、压缩列表)
1、整数集合整数集合(intset)是 Redis 用于保存整数值的集合抽象数据结构, 它可以保存类型为 int16_t 、 int32_t 或者 int64_t 的整数值, 并且保证集合中不会出现重复元素。typedef struct intset { // 编码方式 uint32_t encoding; /* contents 数组并不保存任何 int8_t 类型的值 ——原创 2016-05-24 20:24:10 · 628 阅读 · 0 评论 -
redis项目问题
1. 你说你了解redis,能简单描述一下redis吗?能画出它的架构图吗?答:redis是开源的。 Redis 是一个内存中的key-value存储系统。可用作数据库、缓存和消息的中间件。 支持多种类型的数据结构,如字符串,链表,散列表,集合,有序集合等。 为了保证效率,数据都是缓存在内存中;同时,redis会周期性的对更新的数据进行RDB持久化或者AOF持久化操作,并在此基础上实现了mas原创 2016-06-12 10:42:41 · 1033 阅读 · 0 评论