Hello,Redis
NoSQL正试图打破关系数据型数据库一统天下的局面。Redis也是NoSQL的一种尝试。Redis是什么?其网站上如是说:
A persistent key-value database with built-in net interface written in ANSI-C for Posix systems
Redis最值得拿出来说事的优点就是“快”!Github就用了Redis为自己加速。
我们选择下载稳定的发布版:
http://code.google.com/p/redis/downloads/list
也可以直接获取源码:
http://github.com/antirez/redis
现在的redis与一般的C开源项目相比,非常简单,只有很少的一些文件。它的构建过程也不像其它的项目那些,需要先配置再构建。它只有一个简单的makefile,构建它,只要make一下即可。当然,正如其声称的那样,目前redis只是为Posix系统而打造,所以,如果想在Windows上构建,也许Cygwin是个选择。
先来做一下简单的体验,启动redis的服务器端:
> ./redis-server
redis本身还附带了一个命令行的客户端,用它就可以对redis本身进行测试:
> ./redis-cli set key value
OK
> ./redis-cli get key
value
在上面的这个会话里面,我们通过设置的一个键值对(key和value),然后,用键值取回其对应的值,非常简单。除了最简单的键值对,Redis还支持list、set和有序的set。下面的会话是对list的操作:
> ./redis-cli lpush list 1
OK
> ./redis-cli lpush list 2
OK
> ./redis-cli lrange list 0 -1
1. 2
2. 1
> ./redis-cli rpush list 3
OK
> ./redis-cli lrange list 0 -1
1. 2
2. 1
3. 3
这里的lpush命令在list的头部添加元素,rpush命令在list的尾部添加元素,而lrange用来查询list里面的元素。
上面我们用的命令行对Redis进行操作,实际上,Redis本身就是具备网络接口的数据库,它有着自己的协议,一种简单的文本协议。这个协议本身并不复杂,只要实现了这个协议就可以与Redis进行互联互通了,所以,Redis有着不同语言的客户端实现,而上面用到的命令行也是用同样的协议实现的。
通过以最普通的telnet直连Redis,我们稍微了解一下这个协议。
> telnet localhost 6379
这里的6379是Redis的缺省端口,下面是一段简单的会话:
SET key 5
value
+OK
GET key
$5
value
QUIT
这段会话等同上面命令行的第一段会话。SET是命令字,key是键值,5是随后值的长度,value就是值的内容,这就是我们发送的内容,+OK是服务器端给出的应答,告诉我们操作成功。然后,我们获取key对应的值,GET是命令字,key是键值,之后是服务器给出的应答,$5是值的长度,value是值的内容。最后的QUIT是断开连接的命令字。
如此简单的Redis,不妨把它当做了解NoSQL的起步台阶。