从redis 1.0 到redis 3.0,打造一个可以key-value生物数据的redis分支

  1. 序言

Redis 作者是意大利的Salvatore Sanfilippo(antirez),antirez是他的艺名。现在他已经被VMWare招安去安心做redis。不知道他是喜欢意大利歌女Alessia Merz还是十分讨厌,反正他把redis的默认端口设置为了6379,是手机按键上MERZ对应的号码。把端口号设置成美女的名字充满了性意向,也反映了程序员这个群体的空虚寂寞冷。

核心技术部分被隐藏,以便保护开发者权益

图中就是Alessia Merz

Redis的作者在2009年三月六日,星期五,在自己发表了一篇博客,在这篇博客里提到了他的redis。此时的redis 连0.1的版本都不是,只是一个beta 4的版本。

三月的时候作者才弄了一个logo
我们将要从最底下的那个版本讲起。

这就是第一版的redis logo
这个版本的redis logo 实在不怎么好看。

“我想这是我第一次在这个博客上谈到redis,但希望不是最后一次。
Redis 将是我明年hacking sessions 的主要目标,但愿这个能够实现。

Redis 到底是干什么的呢?它是key-value数据库。但它和memcachedb(memcached的一个持久化版本)以及其他类似数据库有一些不同。例如许多key-value数据库都可以这样操作:

SET mykey foobar
GET mykey
DEL mykey

这使的这一类不需要加锁的计算更加容易,比如set-if-not-exists操作等等。Redis的特色是不但可以有字符串类型的数据,还可以存储List Set等数据结构。

LPUSH user_100_messages "Indeed, you are right!"
LPUSH user_100_messages " .... "
LRANGE user_100_messages 0 10

前两个操作是将元素放入链表中,最后一个操作是显示这个链表中的前10个元素。同样还可以对Sets 进行类似的增删改查操作,以及几个集合求并集等。“

这是摘录并翻译自作者博客中一段话。可以清楚地看到redis的目标是成为一个数据结构服务器,给程序员提供最大的方便,弥补关系型数据库的不足,而这样的数据库的源代码对于初入行的程序员还是多年的老水手都有借鉴的地方。

对于初入行的程序员最大的好处在于如何把校园里学到的数据结构变成一个优秀的轮子,把自己的理论知识近乎无缝地落到实践中。然而直接看完美的源代码并不能学到什么,只有经历了一个轮子创造过程中的坑才能学好编码。

所以就想到把redis 1.0 到redis 3.0 的变迁过程中自以为有点参考意义的更新,修改bug修正记录下来,来抛砖引玉。

作者自己博客的第一次提到他的redis
redis google code

  1. 第一章 测试一下redis作者第一个beta版本

因为redis的版本都只能在linux上运行,所以需要linux环境,如果是Mac 或者linux系统可以略过下边的内容,如果是windows可以参考一下。

首先我们需要获得一个虚拟机。笔者使用的是VMware workstation 12player ,是VMware的桌面免费版本,简洁而又很好用。

vmware官网
这里写图片描述

下载完成后
还需要下载linux,笔者选用了ubuntu的最新版本,Ubuntu 14.04.1 LTS。

ubuntu下载地址
这里写图片描述
选择用于开发者这个版本。

先安装vmware,安装后打开如下图。
这里写图片描述

再创建虚拟机,选择将虚拟机存储为单个文件,因为就实验用一下,依个人喜好。
这里写图片描述

这里写图片描述

这里写图片描述
ubuntu14运行起来想流畅些,内存要多给些。
这里写图片描述

安装好ubuntu,打开terminal,使用wget命令下载redis beta1的源文件,这个链接需要翻墙。

http://redis.googlecode.com/files/redis-beta-1.tar.gz

redis的旧版本都在google code上的
http://code.google.com/p/redis/

这里写图片描述

tar -xvf redis-beta-1.tar.gz 

来解压缩。
然后输入 make 命令进行编译,然后你就拥有redis了就这么简单。
这里写图片描述
输入

./redis-server

就可以运行了
这里写图片描述
这里写图片描述

然后再打开一个终端窗口。然后到刚才编译redis的目录下

make test

这里写图片描述

结果中有一个error,这个bug会在接下来的过程中讲解一下,然后修正它。

当然这是自动测试的脚本,是调用了test-redis.tcl这个tcl脚本。
我们也可以用telnet 连接到redis上

telnet locahost 6379

然后输入

lrange mylist 0 10

会得到刚才make test 插入的链表里的值。
这里写图片描述

待续,接下来会写一些redis的基本使用和redis的架构详解。

猜你喜欢

转载自blog.csdn.net/walkbob/article/details/50152161