nosql学习笔记


 

一、概念

1redis是一个高性能的key-value存储系统,和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)list(链表)set(集合)zset(有序集合)

2、特点

A性能极高10万每秒的读写频率(性能案例)

B支持的操作:这些数据类型都支持push/popadd/remove及取交集并集和差集及更丰富(正则)的操作,而且这些操作都是原子性的,即支持事务。在此基础上,redis支持各种不同方式的排序

memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis周期性的把更新的数据写入磁盘或者把修改操作追加到文件,并且在此基础上实现了master-slave(主从)同步解决了memcache断电后数据完全丢失的问题。

C丰富的数据类型,并支持publish/subscribe,key 过期等特性。

 

3、出现意义:Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类key/value存储的不足,在部分场合可以对关系数据库起到很好的补充作用。它提供了PythonRubyErlangPHP客户端,使用很方便。

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? 

5redis-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、主从启动?

3master可以拥有多个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

 

 

猜你喜欢

转载自peter8015.iteye.com/blog/2062708