技术开发 频道

NoSQL起步台阶:简单的Redis

  【IT168 技术】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的起步台阶。

0
相关文章