-- from http://redis.io/
redis 是一个基于内存的高性能key-value数据库,数据都保存在内存中定期刷新到磁盘,以极高的读写效率而备受关注。他的特点是支持各种数据结构,stirng,hashes, list,set,和sorted sets
client端对于不同数据结构是使用不同的命令
这里说一下redis的安装
虚拟机环境: centos
1 wget make 安装
wget http://download.redis.io/redis-stable.tar.gz
tar xvzf redis-stable.tar.gz
cd redis-stable
make
注 : 这里记录一下我安装过程中出现的问题 :
make: Warning: File `Makefile' has modification time 5.4e+06 s in the future
cd src && make all
make[1]: Entering directory `/redis/redis-2.4.7/src'
make[1]: Warning: File `Makefile' has modification time 5.4e+06 s in the future
MAKE hiredis
make[2]: Entering directory `/redis/redis-2.4.7/deps/hiredis'
make[2]: Warning: File `Makefile' has modification time 5.4e+06 s in the future
cc -c -std=c99 -pedantic -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb net.c
make[2]: cc: Command not found
make[2]: *** [net.o] Error 127
make[2]: Leaving directory `/redis/redis-2.4.7/deps/hiredis'
make[1]: *** [dependencies] Error 2
make[1]: Leaving directory `/redis/redis-2.4.7/src'
make: *** [all] Error 2
第一个问题
make: Warning: File `Makefile' has modification time 5.4e+06 s in the future
系统时间调整错了,调过来就好了
第二个问题:
make[2]: Entering directory `/redis/redis-2.4.7/deps/hiredis'
cc -c -std=c99 -pedantic -O3 -fPIC -Wall -W -Wstrict-prototypes -Wwrite-strings -g -ggdb net.c
make[2]: cc: Command not found
没安装 gcc ,
yum install gcc-c++
第三个问题:
make 的时候显示
make[1]: Entering directory `/redis/redis-2.4.7/src'
which: no tclsh8.5 in (/usr/kerberos/sbin:/usr/kerberos/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin)
You need 'tclsh8.5' in order to run the Redis test
没安装 tcl
按照官网
http://www.linuxfromscratch.org/blfs/view/cvs/general/tcl.html
上的安装
安装完成之后, make 成功!
安装成功之后会在 src 文件夹内有redis-server和redis-cli两个命令
建议将其放到 bin 下
sudo cp redis-server /usr/local/bin/
sudo cp redis-cli /usr/local/bin/
好了,现在 redis 就安装成功了
2 测试redis安装情况
我只在一台虚拟机上安装了 redis ,所以这台虚拟机既是服务器,又是客户端
测试:
1 使用 secureRt 打开一个会话,redis-server,让其作为服务器运行
[19282] 19 Feb 23:52:57 - 1 clients connected (0 slaves), 726248 bytes in use
[19282] 19 Feb 23:53:02 - DB 0: 1 keys (0 volatile) in 4 slots HT.
[19282] 19 Feb 23:53:02 - 1 clients connected (0 slaves), 726248 bytes in use
[19282] 19 Feb 23:53:07 - DB 0: 1 keys (0 volatile) in 4 slots HT.
[19282] 19 Feb 23:53:07 - 1 clients connected (0 slaves), 726248 bytes in use
2 打开另一个会话:
ast login: Tue Feb 19 22:49:49 2013 from 192.168.1.103
set key 和 get key 都正确
redis 搭建测试通过
参考文章:
http://redis.io/topics/quickstart
http://hi.baidu.com/thinkinginlamp/blog/item/3358c93d174e35ce9f3d62bf.html
持久化
redis 支持 RDB 和 AOF 两种持久化方式
The RDB persistence performs point-in-time snapshots of your dataset at specified intervals.
RDB 是一种即时快照的存储方式,定时对数据库进行 snap shot
RDB 优点:
1 RDB 对于数据备份非常容易。你可以设置 1 天或者 30 天对数据进行一次备份,这样当发生数据灾难的时候能很容易恢复
2 由于 RDB 对数据备份时 redis 只做备份操作,所以备份最大化的使用了 redis 的性能,同时也导致了对于大的数据集, RDB 备份快于 AOF
RDB 缺点:
1 如果你的需求只是要知道两个时间段中 redis 的变化, RDB 是弱于 AOF 的
2 由于 RDB 经常使用子进程 fork() 进行数据备份,所以如果当数据比较大的时候,数据备份会比较耗时
AOF 优点:
1 你必须有一个 AOF 的 f sync 的策略:
或者是不进行 fsync , 或者每秒 fsync 一次,或者每次 query 查询的时候 fsync
2 AOF 只记录修改 log ,当存储的时候由于某种原因写 log 失误了,使用 redis -check-aof 能很好的修复
3 当 redis 数据太大的时候, AOF 可以很好被重写到新的 redis 上
AOF 缺点:
1 AOF 通常比 RDB 大
2 AOF 比 RDB 慢
--------------------------
流水线
redis 是客户端和服务器端的通信交互 TCP 协议
当客户端发送请求,服务器端接受请求并发送回复,客户端接收回复,这个过程叫做 RTT (Round Trip Time)
比如如果 RTT 时间是 250 微秒,既是服务器端每秒能处理 10 万个请求,那么,我们只能认为 redis 每秒处理 4 个请求
server 不需要等待 client 接收了消息之后再处理新 request 的技术叫做 pipe lining (流水线)。这个技术早在几十年前就应用在了各种协议上(比如 pop3 ), redis 也很早使用了这个技术。
实验:
$ (echo -en "PING\r\nPING\r\nPING\r\n"; sleep 1) | nc localhost 6379
当调用这个例子的时候:
server 一次返回:
+PONG
+PONG
+PONG
而不是返回一次 PONG ,过了 RTT 时间再返回 PONG ,这个例子就说明了 redis 使用 pipe lining
注: nc 命令说明请看:
http://www.cnblogs.com/faraway/archive/2008/08/30/1280070.html
---------------------------------
订阅
redis 支持订阅( sub scribe )
当一个 client 订阅一个或多个变量,其他客户端修改了变量并 publish 之后,这个客户端会收到消息
例子:
Client 1:
SUBSCRIBE first second
Client2:
PUBLISH second Hello
client1 显示:
message
second
Hello2
redis 还支持模式订阅( psubscribe 命令)
PSUBSCRIBE f*
PHP
公告
姓名:叶剑峰
园名:轩脉刃
英文名:nick ye
开开心心做事
夫苟其挫而不退矣,则小逆之后,必有小顺。大逆之后,必有大顺。
|
|||||||||
日 | 一 | 二 | 三 | 四 | 五 | 六 | |||
---|---|---|---|---|---|---|---|---|---|
29 | 30 | 31 | 1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 | |||
12 | 13 | 14 | 15 | 16 | 17 | 18 | |||
19 | 20 | 21 | 22 | 23 | 24 | 25 | |||
26 | 27 | 28 | 29 | 1 | 2 | 3 | |||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
搜索
我的标签
随笔分类
随笔档案
最新评论
- 1. Re:redis搭建实战记录
- lz 貌似e文不错,redis的文档官方没提供中文版的吧!
- 2. Re:MySQL体系结构
- 值得一看!
- 3. Re:MySQL体系结构
- 不错
- 4. Re:MySQL体系结构
- 一楼和俺是同姓
- 5. Re:MySQL体系结构
- 写的不错,收藏。
阅读排行榜
评论排行榜
---------------------------------
参考文档:
---------------------------------
作者:yjf512(轩脉刃)
出处:http://www.cnblogs.com/yjf512/
本文版权归yjf512和cnBlog共有,欢迎转载,但未经作者同意必须保留此段声明