Fork me on GitHub
redis搭建实战记录
Redis is an open source, advanced key-value store. It is often referred to as a data structure server since keys can containstringshasheslistssets and sorted sets.   

-- 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,所以这台虚拟机既是服务器,又是客户端

测试:

 

使用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

 

打开另一个会话:

ast login: Tue Feb 19 22:49:49 2013 from 192.168.1.103

 

set keyget key都正确

redis搭建测试通过 

 

参考文章:

http://redis.io/ 

http://redis.io/topics/quickstart 

http://hi.baidu.com/thinkinginlamp/blog/item/3358c93d174e35ce9f3d62bf.html 

持久化 

redis支持RDBAOF两种持久化方式

 

The RDB persistence performs point-in-time snapshots of your dataset at specified intervals.

RDB是一种即时快照的存储方式,定时对数据库进行snapshot

RDB优点:

1 RDB对于数据备份非常容易。你可以设置1天或者30天对数据进行一次备份,这样当发生数据灾难的时候能很容易恢复

由于RDB对数据备份时redis只做备份操作,所以备份最大化的使用了redis的性能,同时也导致了对于大的数据集,RDB备份快于AOF

 

RDB缺点:

如果你的需求只是要知道两个时间段中redis的变化,RDB是弱于AOF

由于RDB经常使用子进程fork()进行数据备份,所以如果当数据比较大的时候,数据备份会比较耗时

 

AOF优点:

你必须有一个AOFfsync的策略:

或者是不进行fsync 或者每秒fsync一次,或者每次query查询的时候fsync

2 AOF只记录修改log,当存储的时候由于某种原因写log失误了,使用redis-check-aof能很好的修复

redis数据太大的时候,AOF可以很好被重写到新的redis

 

AOF缺点:

1 AOF通常比RDB

2 AOFRDB

 

 --------------------------

流水线

 

redis是客户端和服务器端的通信交互TCP协议

 

当客户端发送请求,服务器端接受请求并发送回复,客户端接收回复,这个过程叫做RTT(Round Trip Time)

比如如果RTT时间是250微秒,既是服务器端每秒能处理10万个请求,那么,我们只能认为redis每秒处理4个请求

 

server不需要等待client接收了消息之后再处理新request的技术叫做pipelining(流水线)。这个技术早在几十年前就应用在了各种协议上(比如pop3),redis也很早使用了这个技术。

 

实验:

$ (echo -en "PING\r\nPING\r\nPING\r\n"; sleep 1) | nc localhost 6379

当调用这个例子的时候:

server一次返回:

+PONG

+PONG

+PONG

 

而不是返回一次PONG,过了RTT时间再返回PONG,这个例子就说明了redis使用pipelining

 

注:nc命令说明请看:

http://www.cnblogs.com/faraway/archive/2008/08/30/1280070.html 

 

 

---------------------------------

订阅 

 

 redis支持订阅(subscribe

当一个client订阅一个或多个变量,其他客户端修改了变量并publish之后,这个客户端会收到消息

 

例子:

Client1:

SUBSCRIBE first second

 

Client2:

PUBLISH second Hello

 

client1显示:

message

second

Hello2

 

 

redis还支持模式订阅(psubscribe命令)

PSUBSCRIBE f*

 

PHP

PHP,Linux学习
 
posted @ 2012-02-21 18:32 轩脉刃 阅读(109) | 评论 (0) 编辑
 
 
posted @ 2012-02-20 00:11 轩脉刃 阅读(684) | 评论 (1) 编辑
 
 
 
 
posted @ 2012-02-06 07:59 轩脉刃 阅读(1530) | 评论 (4) 编辑
 
 
posted @ 2012-02-03 01:10 轩脉刃 阅读(1049) | 评论 (1) 编辑
 
 
 
posted @ 2011-12-26 08:31 轩脉刃 阅读(873) | 评论 (0) 编辑
 
 
 
posted @ 2011-09-01 14:41 轩脉刃 阅读(218) | 评论 (0) 编辑
 
 
posted @ 2011-08-31 19:44 轩脉刃 阅读(1931) | 评论 (1) 编辑
 
 
posted @ 2011-08-30 13:35 轩脉刃 阅读(2229) | 评论 (8) 编辑
 
 
posted @ 2011-06-08 18:02 轩脉刃 阅读(902) | 评论 (1) 编辑
 
 
posted @ 2011-06-07 18:37 轩脉刃 阅读(1867) | 评论 (3) 编辑
 
 
posted @ 2011-06-03 14:40 轩脉刃 阅读(1544) | 评论 (3) 编辑
 
 
posted @ 2011-05-24 17:00 轩脉刃 阅读(839) | 评论 (0) 编辑
 
 
posted @ 2011-05-01 10:00 轩脉刃 阅读(1385) | 评论 (2) 编辑
 
 
posted @ 2011-04-19 15:50 轩脉刃 阅读(153) | 评论 (0) 编辑
 
 
posted @ 2011-04-10 22:54 轩脉刃 阅读(115) | 评论 (0) 编辑
 
 
posted @ 2011-02-23 19:15 轩脉刃 阅读(188) | 评论 (0) 编辑
 
 
posted @ 2010-11-27 23:56 轩脉刃 阅读(646) | 评论 (1) 编辑
 
 
posted @ 2010-11-26 18:15 轩脉刃 阅读(363) | 评论 (0) 编辑

 

 
 

---------------------------------

参考文档:

---------------------------------

作者:yjf512(轩脉刃)

出处:http://www.cnblogs.com/yjf512/

本文版权归yjf512和cnBlog共有,欢迎转载,但未经作者同意必须保留此段声明 

posted on 2012-02-21 19:12  HackerVirus  阅读(352)  评论(0编辑  收藏  举报