Redis
Redis下载:http://redis.io/download
Redis的介绍
数据库主要类型有对象数据库,关系数据库,键值数据库等等,对象数据库太超前了,现阶段不提也罢;关系数据库就是平常说的MySQL,PostgreSQL这些熟的不能再熟的东西,至于键值数据库则是本文要着重说的,其代表主要有MemcacheDB,Tokyo Cabinet等等。
Redis本质上也是一种键值数据库的,但它在保持键值数据库简单快捷特点的同时,又吸收了部分关系数据库的优点。从而使它的位置处于关系数据库和键值数据库之间。Redis不仅能保存Strings类型的数据,还能保存Lists类型(有序)和Sets类型(无序)的数据,而且还能完成排序(SORT)等高级功能,在实现INCR,SETNX等功能的时候,保证了其操作的原子性,除此以外,还支持主从复制等功能。
详细描述参见官方手册,同时,官方提供了一个名为Retwis的项目的源代码,可以对照着官方介绍学习,注意其中关于Data Layout的描述,其他没什么。
项目实践中,多以关系数据库为主,不过合理的使用Redis这样的键值数据库,往往能扬长避短,比如说实现一个类似消息队列的功能,对MySQL来说,除非使用Q4M,否则很难满足高并发请求,不过对Redis来说,通过内建的Lists支持,消息队列就是小菜一碟。
由于某些原因,我希望我的项目中使用redis,于是开始学习如何使用这个东西。首先要得到它,我是从它的官网上面下载的可以用wget直接下载,我一般是会把软件安装代码放在/dist/dist下面:cd /dist/dist
wget http://redis.googlecode.com/files/redis-2.2.7.tar.gz
打开它:
tar zxf redis-2.2.7.tar.gz
cd redis-2.2.7
查看了一下安装文档,它的安装很简单,就make一下就可以了。
make
make test
如果不放心的话可以做一下测试make test
接下来就是使用了,由于它是一个数据库,就像MYSQL,那它就应该有服务端和客户端,先打开服务端:
cd src
./redis-server > /dev/null &
加上“>/dev/null &”的意思是让它在后台执行,不输出信息如果不是的话就会有每5秒输入一次的信息,像这样的:
[5265] 23 May 15:34:29 – DB 0: 4 keys (0 volatile) in 8 slots HT.
[5265] 23 May 15:34:29 – 0 clients connected (0 slaves), 790832 bytes in use
[5265] 23 May 15:34:34 – DB 0: 4 keys (0 volatile) in 8 slots HT.
[5265] 23 May 15:34:34 – 0 clients connected (0 slaves), 790832 bytes in use
[5265] 23 May 15:34:39 – DB 0: 4 keys (0 volatile) in 8 slots HT.
[5265] 23 May 15:34:39 – 0 clients connected (0 slaves), 790832 bytes in use
这样就把服务端打开了。
接下来我们用客户端去连接
./redis-cli
由于它是一个key-value的数据库,所以每条数据都是一个键名一个键值
redis> set foo bar
OK
redis> get foo
"bar"
redis> incr mycounter
(integer) 1
redis> incr mycounter
(integer) 2
redis>quit
最后是退出,不需要加任何的符号,输入quit回车就退出了。我们来看一下redis使用的是哪一个端口:netstat -tnlp可以看到它使用的是
tcp 0 0 0.0.0.0:6379 0.0.0.0:* LISTEN 5265/redis-server
6379这个端口,我们还可以用telnet来验证:
telnet localhost 6379
Trying 127.0.0.1…
Connected to localhost.localdomain (127.0.0.1).
Escape character is ‘^]’.
set foo 1
+OK
get foo
$1
1
quit
+OK
Connection closed by foreign host.
基本上到这里就完成了redis的安装了,接下来就是具体的应用了。
From: http://www.codeo4.cn/archives/479