- 博客(16)
- 资源 (4)
- 收藏
- 关注
原创 redis数据库之主从复制
redis除了基本功能外,还提供了主从复制功能。一个redis服务可以有多个slave服务,而这个slave服务又可以有slave服务。
2013-08-28 11:03:26 3269 1
原创 redis数据库之rdb持久化
redis是一种内存数据库,也就是redis的数据在正常工作的情况下都是存储在内存中。但并不是说redis只能把数据存储在内存中,redis提供了两种数据持久化机制:rdb和aof。rdb持久化有三种方式被启动:用户向redis发送save或者bgsave命令。save和bgsave的不同就在于save会阻塞redis服务器,而bgsave不会。这样bgsave就在不影响redis服务器正常工作的
2013-08-20 11:06:02 2912 1
原创 nginx脚本引擎
前面讲了nginx的变量机制,今天来讲讲nginx的脚本引擎。我们以一个比较简单的例子来讲述nginx的脚本引擎。例如,我们自己定以一个变量:set $file t_a;这个set指令就会调用ngx_http_rewrite_set函数,下面来看下ngx_http_rewrite_set:static char *ngx_http_rewrite_set(ngx_conf_t *cf,
2013-08-14 23:17:04 1761
原创 nginx变量机制
在设置nginx配置文件的时候,配置文件中会出现$file等以$开头的字符串。这些以$开头的字符串在nginx中就是所谓的变量。nginx的变量分为nginx自定义的变量以及用户自定义的变量。nginx自定义的变量有很多,每个模块也可以定义自己的变量,例如ngx_http_core_variables这个就包含了很多nginx自定义的变量:static ngx_http_variable_t
2013-08-13 23:08:38 2153
原创 redis数据库之订阅和发布
订阅和发布的介绍以及原理在redis设计与实现以及讲述清楚,这里就不啰嗦了。我们的任务主要还是根据原理来分析源码。先来看下订阅和发布会用到的结构体:struct redisServer {...... dict *pubsub_channels; /* Map channels to list of subscribed clients */ list *pubsub_pa
2013-08-13 10:49:41 2003 1
原创 nginx超时事件的处理
几乎每个比较大型的系统都会有自己的一套超时事件的处理方式,nginx也不例外。nginx出于高性能的考虑,使用红黑树来管理超时的事件。这里红黑树的原理在网络中有很多文档去介绍,这里就不讲述红黑树的原理了。这篇博客值讲述nginx是怎么把事件与红黑树联系到一起的。大家都知道nginx处理事件有一个结构体:typedef struct ngx_event_s ngx_event_tstruct
2013-08-12 22:47:01 2302
原创 redis数据库之事务
redis事务的原理介绍在redis设计与实现这本书中已经讲述的非常清楚,这里就不浪费更多的时间去讲述了。这篇博客的目的主要还是结合源码来讲述redis事务的实现。如果大家对redis有点熟悉,都知道redis客户端和服务器之间的通信都是通过命令+key+值来进行通信的(内部协议的格式在以后的博客中讲述)。redis的事务也是通过命令来实现的。MULTI 事务的开始EXEC
2013-08-12 11:46:09 1679 1
原创 nginx事件模块之IO多路复用的选择
nginx是基于事件驱动的,也就是说nginx内部都是通过事件的发生来驱动的,如果没有事件,nginx就是阻塞在epoll_wait,select,sigsuspend等这样的系统调用上。各种操作系统对事件的处理及管理都是不同的。而且每种操作系统的IO多路复用的实现方式也是各不相同。而nginx是一种跨平台的高性能的web server,那它是怎样把各种操作系统的IO多路复用集合在一起,又是怎样让
2013-08-11 22:51:10 2300
原创 ipv6协议报文格式
一、ipv6的基本格式ipv6报文格式从简单性来看,比ipv4较简单,而且ipv6的基本头部的长度是固定的。相较与ipv4,ipv6去掉了一些头部,把这些头部全部弄到了后面的扩展投不中。ipv6的报文格式如下:version:4bits 版本号 ipv6为6Traffic Class: 8 bits,传输类别,可用于源节点或转寄路由器标识和区分IPV6包中的不同类
2013-08-11 10:49:50 20712
原创 ipv6协议学习----概述及地址
1、ipv6特点:解决了ipv4地址少的问题提高网络的整体吞吐量,改善服务质量,安全性更好保证,支持即插即用,支持移动性,更好实现多播功能ipv6采用128位地址长度,几乎可以不受限制地提供地址ipv6则通过内部功能利用IP Security提供数据保护。ipv6提供了安全扩展报头, 配置:访问控制列表(ACL)用于控制IPV6流量的状态化过滤或防火墙设置单播反向路径转
2013-08-11 10:42:08 1460
转载 TCP协议疑难问题集锦
原文出自:http://blog.csdn.net/dog250/article/details/66124961.网络协议设计ISO提出了OSI分层网络模型,这种分层模型是理论上的,TCP/IP最终实现了一个分层的协议模型,每一个层次对应一组网络协议完成一组特定的功能,该组网络协议被其下的层次复用和解复用。这就是分层模型的本质,最终所有的逻辑被编码到线缆或者电磁波。
2013-08-10 11:44:32 1280
原创 redis数据结构之对象
redis是一种nosql数据库,redis操作数据库都是通过相关命令来进行的。而且由于redis内存实现很多底层的数据结构,数据库存储的值也是这些数据结构。redis 每个命令都是对应相应的数据结构实现的。例如:LPUSH 和LLEN 只能用于列表键,而SADD 和SRANDMEMBER 只能用于集合键。从上面可以看出来,Redis 必须让每个键都带有类型信息,使得程序可以检查键的类型,并为它选
2013-08-09 17:37:29 2257 2
原创 redis数据结构之压缩列表
压缩列表用于存储长度受限的字符串和整数。废话不多说,直接上redis压缩列表的内存结构示意图:从图中可以看出,redis压缩列表由表示压缩列表占总内存的字节数的zlbytes,表示到达ziplist 表尾节点的偏移量的zltail,表示ziplist 中节点的数量的zllen,各个节点以及用于标记ziplist的末端的zlend。注意:zllen并不是一直表示节点的数量,只有zll
2013-08-09 13:33:35 2654 1
原创 redis数据结构之整数集合
redis的整数集合实质上是动态的数组。reids的整数集合是可以根据整数的值,自动选择用什么长度来存储的。例如:如果插入的值可以用int16_t类型来保存,那所有的元素都可以用int16_t类型来保存。所以可以看出保存的类型应该有这几种:#define INTSET_ENC_INT16 (sizeof(int16_t))#define INTSET_ENC_INT32 (sizeof(
2013-08-08 17:23:17 2148 1
原创 redis数据结构之字符串
redis字符串相对比标准c的字串是二进制安全的,也就是说如果redis的字符串中包含'\0'字符的话,还是能计算出相应字符串的长度。下面来看下redis字符串的定义:typedef char *sds;struct sdshdr { // buf 已占长度 int len; // buf 剩余可用的长度 int free; // 实际存放字符
2013-08-08 10:38:51 2386 1
原创 redis源码分析----序言
一直在redis的源码,但是很少形成笔记,理解感觉不是很深,所以决定把自己看过的源码形成文字,加深自己的理解。也希望能给想学习redis的童鞋一点帮组,如果在博文中有错误,希望大家能指出来,谢谢。
2013-08-08 10:12:01 2308 1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人