一、概念
1、redis是一个高性能的key-value存储系统,和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)和zset(有序集合)。
2、特点
A、性能极高:10万每秒的读写频率(性能案例)
B、支持的操作:这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富(正则)的操作,而且这些操作都是原子性的,即支持事务。在此基础上,redis支持各种不同方式的排序。
与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作追加到文件,并且在此基础上实现了master-slave(主从)同步,解决了memcache断电后数据完全丢失的问题。
C、丰富的数据类型,并支持publish/subscribe,key 过期等特性。
3、出现意义:Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了Python,Ruby,Erlang,PHP客户端,使用很方便。
4、内存优化:Redis Hash内部是一个HashMap,如何该map成员比较少时会采用一个一维的数组方式来紧凑存储该Map,省去了大量指针的内存开销。HashMap操作和查找时间复杂度为O(1),数组O(n)。
4、性能案例
下面是官方的bench-mark数据:
测试完成了50个并发执行10W个请求。
设置和获取的值是一个256字节字符串。
Linux box是运行Linux 2.6,这是X3320 Xeon 2.5 ghz。
文本执行使用loopback接口(127.0.0.1)。
结果:写的速度是11W次/s,读的速度是8.1W次/s 。
5、常用命令:参考网址
二、操作
1、启动redis:
输入命令:redis-server.exe redis.conf
2、设置客户端:
输入命令:redis-cli.exe -h 202.117.16.133 -p 6379
3、设置一个Key并获取返回的值:
Java代码?
$ ./redis-cli set mykey somevalue??
OK??
$ ./redis-cli get mykey??
Somevalue?
4、如何添加值到list
Java代码?
$ ./redis-cli lpush mylist firstvalue??
OK??
$ ./redis-cli lpush mylist secondvalue??
OK??
$ ./redis-cli lpush mylist thirdvalue??
OK??
$ ./redis-cli lrange mylist 0 -1?
. thirdvalue??
. secondvalue??
. firstvalue??
$ ./redis-cli rpop mylist??
firstvalue??
$ ./redis-cli lrange mylist 0 -1?
. thirdvalue??
. secondvalue?
5、redis-benchmark.exe:性能测试,用以模拟同时由N个客户端发送M个 SETs/GETs 查询 (类似于 Apache 的 ab 工具). window并发极限是60
./redis-benchmark -n 100000 –c 50?
??? ====== SET ======??
??? 100007 requests completed in 0.88 seconds (译者注:100004 查询完成于 1.14 秒 )??
50 parallel clients (译者注:50个并发客户端)??
3 bytes payload (译者注:3字节有效载荷)??
keep alive: 1 (译者注:保持1个连接)??
58.50% <= 0 milliseconds(译者注:毫秒)??
99.17% <= 1 milliseconds??
99.58% <= 2 milliseconds??
99.85% <= 3 milliseconds??
99.90% <= 6 milliseconds??
100.00% <= 9 milliseconds??
114293.71 requests per second(译者注:每秒 114293.71 次查询)?
关闭REDIS
$redis-cli shutdown
关闭指定端口
$redis-cli -p 6379 shutdown
三、复制
1、主从复制:Amazon网站10G复制21秒完成
2、主从启动?
3、master可以拥有多个SLAVE,多个SLAVE可以连接到一个MASTER,也可以连接到其他的SLAVE上。
4、可以注释掉MASTER中的持久化,即save配置。只需要在SLAVE上配置持久化。提高系统的伸缩性。
四、应用案例
1、
五、优化经验
1、
参考网址:
主从配置:
http://ybzshizds.iteye.com/blog/1447981
http://www.cnblogs.com/redcreen/archive/2011/02/15/1955523.html
http://baike.baidu.com/view/4595959.htm
linux安装:http://www.oschina.net/question/12_18065
windows::http://zheng12tian.iteye.com/blog/1471726
doc::http://redis.io/documentation
command reference:::? http://redis.readthedocs.org/en/latest/
community:::? http://redis.com.cn/
http://redis.io/
redis ppt:::???????? http://www.open-open.com/doc/view/f53ea1b4802045cdb0c8256eb5470a57
评论