- 博客(15)
- 资源 (10)
- 收藏
- 关注
原创 Redis事务
事务同命令一样,都是Redis的最小执行单位,一个事务中的命令要么都执行,要么都不执行。一、Redis事务的实现 Redis通过multi、exec、watch等命令来实现事务功能,Redis中一个事务从开始到结束包含三个阶段:事务开始、命令入队、事务执行。其中multi命令标志着事务开始,exec命令标志着事务执行,期间所有命令都会存放到事务队列中。在redis.h/r
2017-11-29 18:41:19 867
原创 Redis发布与订阅功能
发布/订阅”功能包含两种角色:发布者和订阅者。Redis的发布与订阅功能由publish、subscribe、psubscribe等命令组成。通过执行publish命令可以发布消息;通过执行subscribe命令,客户端可以订阅一个或多个频道;通过执行psubscribe命令,客户端可以订阅一个或多个模式。一、发布与订阅频道 如图所示,频道的发布与订阅功能。客户端A、B、C都
2017-11-29 18:11:10 2139
原创 Redis的集群结构
Redis集群是Redis提供的分布式数据库方案,集群通过分片(sharding)进行数据共享,并提供复制和故障转移功能。一、节点 同其他分布式的集群一样,Redis集群也是由多个相互独立的节点组成的,通过将各个相互独立的节点连接起来,构成一个包含多个节点的集群。通过CLUSTER MEET 命令,将指定节点添加当前节点所在的集群:
2017-11-29 16:49:59 689
原创 Redis的监控功能
Redis通过引入一个或多个Sentinel实例组成的Sentinel系统以监视任意多个服务器,当主服务器进入下线状态时自动将从服务器升级为新的主服务器,然后由新服务器代替已下线的主服务器处理命令请求,达到提供高可用性的解决方案。一、监控功能 Sentinel本质上是一个运行在特殊模式下的Redis服务器,所以初始化时不会载入RDB文件或者AOF文件,而是创建连向被监视主服务
2017-11-29 16:10:59 1030
原创 Redis的复制功能
Redis中,通过slaveof命令或者设置slaveof选项,让一个服务器去复制另一个服务器,从而形成主从服务器关系,具有主从关系的服务器数据库状态一致。Redis的复制功能分两个步骤实现:同步(sync)和命令传播(command propagate)。同步操作是将从服务器数据库状态更新至主服务器数据库当前所处状态;命令传播则用于主服务器的数据库状态被修改导致主从服务器的数据库状态
2017-11-29 11:54:31 525
原创 Redis中的事件
Redis服务器是一个事件驱动程序,服务器需要处理两类事件:文件事件和时间事件。一、文件事件 Redis服务器通过套接字与客户端进行连接,文件事件就是服务器对套接字操作的抽象。 文件事件是由文件事件处理器处理的。文件事件处理器以单线程方式运行,使用I/O多路复用程序监听多个套接字(既实现了高性能的网络通信模型又可以很好地与Redis服务器中其他单线程方式运行
2017-11-28 16:30:11 800
原创 Redis数据持久化
由于Redis是内存数据库,一旦服务器进程退出,服务器中的数据库状态也会消失。为解决这个问题,Redis提供了RDB快照形式、AOF日志形式两种持久化方式,将内存中的数据保存到磁盘中,以免数据意外丢失。一、RDB持久化 RDB持久化就是将服务器某个时间点上的数据库状态以快照形式保存到一个二进制文件中,在Redis服务器重新启动时可以自动载入RDB文件,还原数据库状态。有两个R
2017-11-28 15:20:02 960
原创 Redis键的生存时间和过期时间
Redis作为内存数据库,和memcached一样提供了设置键的生存时间和过期时间的功能。通过expire命令或者pexpire命令实现秒级或者毫秒级的生存时间的设置功能:EXPIRE : 将键的生存时间设为 ttl 秒PEXPIRE :将键的生存时间设为 ttl 毫秒EXPIREAT :将键的过期时间设为 timestamp 所指定的秒数时间戳PEXPIREAT : 将
2017-11-28 11:25:46 17536 2
原创 Redis数据库
在上一节介绍了Redis的对象系统:String、List、Hash、Set、ZSet,这些对象是如何组成Redis数据库与用户所见的数据库映射的呢?一、 Redis服务器 在redis.h/redisServer结构中有关系数据库的两个属性:redisDb和dbnum,每个redisDb结构就代表着一个数据库,dbnum则表示Redis服务器创建的数据库个数(默认为16个)
2017-11-28 10:51:23 1078
原创 Redis对象系统
在上一节学习Redis中的六种基础数据结构,但在Redis中并没有直接使用以上的数据结构实现键值对数据库,而是基于这些数据结构构建了一个对象系统:字符串对象(String)、列表对象(List)、哈希对象(Hash)、集合对象(Set)和有序集合对象(ZSet)。在Redis中每个对象都由一个redisObject结构表示:/* * Redis 对象 */typedef struct r
2017-11-27 18:28:36 784
原创 Redis的六种数据结构
本节将对Redis底层的六种数据结构展开详述:简单动态字符串、链表、字典、跳跃表、整数集合、压缩列表。一、简单动态字符串(SDS) Redis基于C语言开发但并没有直接使用C语言传统的字符串,而是构建一种叫简单动态字符串(simple dynamic string,SDS)的抽象类型作为Redis默认的字符串表示。SDS不仅用来保存数据库中的字符串值,同时还用于实现缓冲区(b
2017-11-27 15:38:37 6448 1
原创 Kafka中的消息是否会丢失和重复消费
在之前的基础上,基本搞清楚了Kafka的机制及如何运用。这里思考一下:Kafka中的消息会不会丢失或重复消费呢?为什么呢? 要确定Kafka的消息是否丢失或重复,从两个方面分析入手:消息发送和消息消费 1、消息发送 Kafka消息发送有两种方式:同步(sync)和异步(async),默认是同步方式,可通过producer.type属性进行配置
2017-11-21 16:10:26 30209 3
原创 Kafka的高级消费者与低级消费者
在Kafka实战章节,我们写的例子都是Kafka的高级消费实例,可以看到在消息消费者的程序中,我们只需要指定zookeeper、及消费群组的groupId即可实现从消息队列中消费消息,屏蔽了大量的底层细节:如消息的偏移量等信息都不在程序中维护。Kafka的高级消费实例,满足以下几点规则:(1)同一个消费群组中,如果线程数大于Topic分区数,那么一些线程永远接收不到消息;(2)同一个消
2017-11-20 12:08:03 6802
原创 Kafka实战
从搭建Windows下的Kafka运行环境和搭建Linux下的Kafka运行环境可以看出,环境一旦搭建完成,执行以下逻辑程序是固定的顺序,与环境无关:启动Zookeeper启动Kafka创建Topic启动生产者Producer发消息启动消费者Consumer消费消息 因此,这里以Windows下的运行环境为例(windows环境搭建可以参见笔者之前的...
2017-11-03 11:51:27 1334 3
原创 Linux下搭建Kafka运行环境
在前面的章节讲述了Windows下Kafka的运行,以及Kafka知识点总结一、知识点总结二。这里通过搭建服务器,实践编程的角度,进一步理解Kafka原理。一、安装配置JDK 参见http://www.cnblogs.com/a2211009/p/4265225.html,笔者以第一种方式安装,便于后面通过 apt-get upgrade 方式方便获得jdk的升级//添加
2017-11-02 17:57:32 2436 1
中国计算机学会推荐国际刊物会议列表(数据库数据挖掘与内容检索)
2016-06-20
GroupLens_MovieLens数据集
2016-01-14
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人