- 博客(10)
- 资源 (4)
- 收藏
- 关注
原创 Redis源码分析之事务
Redis是通过MULTI、DISCARD、EXEC、WATCH四个命令来实现事务的。事务提供了一种将多个命令打包,然后一次性并顺序的执行所有命令的机制,并且事务在执行中不会主动中断,服务器只有在事务执行完后,才会继续执行其他客户端的请求。下面是一个事务的例子:redis> MULTIOKredis> SET book-name "Mastering C++ in 2
2013-05-14 21:40:07 946
原创 Redis之存储结构
Redis的存储结构,本来准备自己写写的,后来发现自己写的还没现有的一些类似博客写的好,现在给出一个很好的blog,有兴趣的朋友可以去看看。http://www.redisbook.com/en/latest/
2013-05-14 21:20:43 1070
原创 Redis源码分析之双端链表
链表是一种很常用的序列数据结构,大部分C程序都会自己实现一个链表。当然Redis也自己实现了一套双端链表。关于链表的一般使用,不做介绍。双端链表的应用1.Redis数据存储类型:列表的底层实现之一2.Redis自身功能的构建2.1 事务模块使用链表按顺序保存输入的命令2.2 服务模块用链表保存多个客户端2.3 事件模块使用链表保存时间事件2.4 等等。。。
2013-05-08 22:09:53 1290
原创 redis源码分析之简单动态字符串sds
Sds(Simple Dynamic String.简单动态字符串)是Redis底层所使用的字符串,它被用在几乎所有的redis模块中。Sds在Redis中的用途主要有两个:1.用于创建 stringObject 对象2.在Redis内部作为char *的替代品。1.实现字符串对象Redis是一个键值对数据库,(key-value DataBase),数据库的值
2013-05-07 22:07:50 1591
原创 redis源码分析之redis内存管理
redis是一个key-value的数据库,基于内存的,所以其内存管理是非常重要的,redis内存管理部分非常简单,主要在zmalloc.h和zmalloc.c两个文件中。zmalloc.h定义了一系列的内存管理接口,zmalloc.c实现了这些结构。看redis的内存管理源码之前,先看看redis内存组织结构。prefix-sizememory siz
2013-04-10 22:49:18 1602
原创 redis网络层学习
今天晚上把redis网络层的几个文件单独拉出来,写了一个小的test,检验了下自己对于redis网络层的理解,简单的写了一个echo程序。server接受客户端的连接请求,收到客户端的消息后,直接返回给客户端,就相当于echo的回行显示。下面就redis的网络层进行说明1.redis主要网络层主要是一下几个文件,ae.c 、ae_epoll.c、anet.c 这3个文件。
2013-03-05 22:34:21 2242
原创 redis C接口hiredis 简单函数使用介绍
hiredis是redis数据库的C接口,目前只能在linux下使用,几个基本的函数就可以操作redis数据库了。 函数原型:redisContext *redisConnect(const char *ip, int port) 说明:该函数用来连接redis数据库,参数为数据库的ip地址和端口,一般redis数据库的端口为6379该函数返回一个结构体redisContext。
2012-10-23 22:00:55 21431 6
原创 redis C接口hiredis初次使用
redis是一个k-v NoSql内存数据库,初次使用redis的C接口库,hiredis遇到了不少麻烦。 我使用的redis-2.2.2 首先安装redis 解压缩redis-2.2.2.tar.gz tar -xzvf redis-2.2.2.tar.gz cd redis-2.2.2. make 这样redis就安装完
2012-10-23 21:23:05 4877
原创 linux下非阻塞网络编程-select
select系统调用是用来让我们的程序监视多个文件句柄(file descriptor)的状态变化的。程序会停在select这里等待,直到被监视的文件句柄有某一个或多个发生了状态改变。文件句柄在linux下很多,linux下函数返回是一个文件句柄被创建的都是。其实文件句柄就是一个整数,比如socket的函数声明int socket(int domain, int type, int protoco
2012-07-25 18:09:15 1260
原创 初次使用protobuf
本人初次使用了protobuf 进行了一个很小的测试程序,之前一直编译无法通过,后来发现是由于编译的时候没有加上链接库,切记以后编译的时候要加上 -lprotobuf
2012-07-22 10:29:40 845
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人