试用Redis安装、php环境连接、测试

Redis介绍
Redis本质上一个Key/Value数据库,与Memcached类似的 NoSQL型数据库,但是他的数据可以持久化的保存在磁盘上,解决了服务重启后数据不丢失的问题,他的值可以是string(字符串)、list(列 表)、sets(集合)或者是ordered sets(被排序的集合),所有的数据类型都具有push/pop、add/remove、执行服务端的 并集、交集、两个sets集中的差别等等操作,这些操作都是具有原子性的,Redis还支持各种不同的排序能力
Redis 2.0更是增加了很多新特性,如:提升了性能、增加了新的数据类型、更少的利用内存(AOF和VM)
Redis支持绝大部分主流的开发语言,如:C、Java、C#、PHP、Perl、Python、Lua、Erlang、Ruby等等
官网:http://code.google.com/p/redis/

Redis性能
根据Redis官方的测试结果:在50个并发的情况下请求10w次,写的速度是110000次/s,读的速度是81000次/s
地址:http://code.google.com/p/redis/wiki/Benchmarks

安装过程
最新稳定版,Redis 2.0.4 stable
wget http://redis.googlecode.com/files/redis-2.0.4.tar.gz
tar zxf redis-2.0.4.tar.gz
cd redis-2.0.4
与其它软件不同的是,不需要configure。
make
装完了。

创建一个目录
mkdir /usr/local/redis2
cp redis-server redis-benchmark redis-cli redis.conf /usr/local/redis2

启动:
./redis-server > /dev/null &

测试:

存值:
./redis-cli set hx value
取值:
./redis-cli get hx

附:redis.conf配置文件:
引用
#是否作为守护进程运行
daemonize yes
#配置pid的存放路径及文件名,默认为当前路径下
pidfile redis.pid
#Redis默认监听端口
port 6379
#客户端闲置多少秒后,断开连接
timeout 300
#日志显示级别
loglevel verbose
#指定日志输出的文件名,也可指定到标准输出端口
logfile stdout
#设置数据库的数量,默认连接的数据库是0,可以通过select N来连接不同的数据库
databases 16
#保存数据到disk的策略
#当有一条Keys数据被改变是,900秒刷新到disk一次
save 900 1
#当有10条Keys数据被改变时,300秒刷新到disk一次
save 300 10
#当有1w条keys数据被改变时,60秒刷新到disk一次
save 60 10000
#当dump .rdb数据库的时候是否压缩数据对象
rdbcompression yes
#dump数据库的数据保存的文件名
dbfilename dump.rdb
#Redis的工作目录
dir /home/falcon/redis-2.0.0/
########### Replication #####################
#Redis的复制配置
# slaveof
# masterauth

############## SECURITY ###########
# requirepass foobared

############### LIMITS ##############
#最大客户端连接数
# maxclients 128
#最大内存使用率
# maxmemory

########## APPEND ONLY MODE #########
#是否开启日志功能
appendonly no
# 刷新日志到disk的规则
# appendfsync always
appendfsync everysec
# appendfsync no
################ VIRTUAL MEMORY ###########
#是否开启VM功能
vm-enabled no
# vm-enabled yes
vm-swap-file logs/redis.swap
vm-max-memory 0
vm-page-size 32
vm-pages 134217728
vm-max-threads 4
############# ADVANCED CONFIG ###############
glueoutputbuf yes
hash-max-zipmap-entries 64
hash-max-zipmap-value 512
#是否重置Hash表
activerehashing yes

安装php客户端

使用rediska做为redis的PHP客户端。
安装peal
cd /usr/local/webserver/php/
curl http://pear.php.net/go-pear | /usr/local/webserver/php/bin/php
pear channel-discover pear.geometria-lab.net
pear install geometria-lab/Rediska-beta

php使用参考:http://rediska.geometria-lab.ru/documentation/usage/
测试代码大致如下:
$options = array(
'servers' => array(
array('host' => '127.0.0.1', 'port' => 6379)
)
);
require_once '/usr/local/webserver/php/PEAR/Rediska.php';

$rediska = new Rediska($options);
$redis = new Rediska_Key('key');
$redis->setValue('value');
$value = $redis->getValue('key');
echo $value;

分别测试了下,使用mc,mcdb和redis。
引用

1000次
memcache:82.2749ms
memcachedb:84.4438ms
include语句放在循环里面
redis:463.0890ms

memcache:81.6891ms
memcachedb:86.5080ms
include文件放在外面
redis:237.6881ms

5000次
memcache:388.6840ms
memcachedb:421.1838ms
include语句放在循环外面
redis:1,075.9599ms

redis本身性能优越,但由于php客户端需要包含不少文件,反而性能比mcdb差不少。如果没有list,set等存储要求,用mcdb足已!

@@10-12-24@@UPDATE:增加了PHP测试代码。