摘要: 1.数据库 Redis的所有数据库都保存在redisServer.db数组中,数据库主要是由两个字典组成:dict字典,负责保存键值对;expires,负责保存键的过期时间 Redis使用惰性删除和定期删除两种方式处理过期键:惰性删除是指在碰到了过期键才将其删除,定期删除是指每隔一段时间主动查找并删 阅读全文
posted @ 2017-04-11 10:42 buaa小松 阅读(171) 评论(0) 推荐(0) 编辑
摘要: 类型与编码: typedef struct redisObject { unsigned type:4;//类型 unsigned encoding:4;//编码 void *ptr;//指向底层实现数据结构的指针 } robj; 1.字符串对象 编码: int,整数值,而且这个整数值可以用long 阅读全文
posted @ 2017-04-11 10:39 buaa小松 阅读(455) 评论(0) 推荐(0) 编辑
摘要: 1.简单动态字符串(simple dynamic string, SDS) 定义: struct sdshdr { int len;//记录buf中使用的字节数量 int free;//记录buf中未使用的字节数量 char buf[];//字节数组,用于保存字符串 //buf字节数组以’\0’结束 阅读全文
posted @ 2017-04-11 10:36 buaa小松 阅读(545) 评论(0) 推荐(0) 编辑
摘要: 1.订阅(subscribe)与发布(publish) 用户订阅某一个频道,频道发布新的信息时,会将信息告知用户 2.数据安全 1) 快照持久化(时间点转储,实质是数据副本) 操作:SAVA、BGSAVE(后台子进程SAVE) 功能:服务器会保存最近一次完成创建的快照的数据,注意,在创建快照的过程中 阅读全文
posted @ 2017-04-11 10:33 buaa小松 阅读(139) 评论(0) 推荐(0) 编辑
摘要: 1) 字符串 SET设置值,GET获取值,DEL删除值 INCR key-name将键存储的值加上1 DECR key-name将键存储的值减去1 INCRBY key-name amount将键存储的值加上整数amount DECRBY key-name amount将键存储的值减去整数amoun 阅读全文
posted @ 2017-04-11 10:28 buaa小松 阅读(168) 评论(0) 推荐(1) 编辑
摘要: 非关系型数据库,存储的数据类型:字符串(STRING)、列表(LIST)、集合(SET)、散列表(HASH)、有序集合(ZSET) 持久化:时间点转储(point-in-time-dump)(快照)、只追加(append-only)文件(AOF) 主从复制特性:主服务器连接若干从服务器,主服务器会将 阅读全文
posted @ 2017-04-11 10:26 buaa小松 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 1、 集群部署 kafka集群的瓶颈主要在网络和磁盘上;kafka依赖于zookeeper,zookeeper集群的节点采用奇数个,3个节点允许一个节点失败,5个节点允许2个节点失败。 图 1 kafka流程图 2、 zookeeper在kafka中所起的作用 (1)记录kafka的节点(broke 阅读全文
posted @ 2017-04-11 10:22 buaa小松 阅读(536) 评论(0) 推荐(0) 编辑
摘要: 1、 Kafka核心组件 (1)replication(副本)、partition(分区) 一个topic可以有多个副本,副本的数量决定了有多少个broker存放写入的数据;副本是以partition为单位的,存放副本即是备份若干个partition,但是只有一个partition被选为Leader 阅读全文
posted @ 2017-04-11 10:20 buaa小松 阅读(647) 评论(0) 推荐(0) 编辑
摘要: kafka是一个分布式,基于subscribe-publish的消息系统 特性:高吞吐量、低延迟、可扩展性、持久性(消息持久化到本地磁盘)、可靠性、容错性(n个副本,允许n-1个节点失败)、高并发(支持数千个客户端同时读写) 设计思想: (1) Consumer group:多个consumer可以 阅读全文
posted @ 2017-04-11 10:19 buaa小松 阅读(346) 评论(0) 推荐(0) 编辑
摘要: 背景 1) 单线程模型,所有的IO操作都在一个NIO线程上完成 存在性能和可靠性上的问题 2) 多线程模型,有一组NIO线程处理IO操作 有一个专门的NIO线程-Acceptor线程用于监听服务端,接收客户端的TCP连接请求; 有一个NIO线程池,负责消息的读取、发送、编码、解码; 一个NIO线程能 阅读全文
posted @ 2017-04-11 10:16 buaa小松 阅读(21217) 评论(0) 推荐(0) 编辑