《Redis实战》电子书.pd
WWW
ChinaDBa中国D8超级论坛
23hashes类型及操作…
,……27
2.3.1hset
28
2.3.2h
2,3.3hmset
28
2.3.4get
.28
2,35hmget
看着D垂
2.3.6hincrby
2.3.7exists
29
2.3.8hlen,…,
:::::::.::::::.
29
2.3.9hdel
30
2.3.10heys………
2.3.11hva|s
30
2.3.12hgetall
30
24ists类型及操作
31
2.4.1Push
31
2,4.2
2.4.3insert
32
2.4.4set
.32
2.5.5rem
2.4.6|trim.
34
24.7lpop…
34
2.4.8rpop…,.,.,…
35
2.4.9rpoplpush
35
2.4.10|ind
35
2.4.11|len.
36
25sets类型及操作…
2.5.1sadd
2.5.2sre.x
2.5.3spop..
5.4sdiff
\2.5difse.7
2.56Nter.118
2.5.7Interstore
39
5.union....
2.5.9sunionstore
39
2.5.10smove
40
2.5.11sCad
40
2.5.12dismember
.40
2.5.13srandmember
41
26sortedsets类型及操作
…………41
2.6.1zadd
.41
2.6.2zrel
26.3zincrby…
42
2.6.4crank∴
43
WWW
ChinaDBa中国D8超级论坛
2.6.5zrevrank.……143
2.6.6zrevrange.
2.6.7zrangebyscore
2.6.8count
44
2.6.9card
45
2.6.10zscore
45
2611zremrangebyrank……
2.6.12zremrangebyscore.
46
第三章、Redis常用命令……
.::::::.:::::::··
31键值相关命令
31.1keys.,,,
47
3.1.2exists
48
3.1.3de
48
3.1.4expire......,,…
48
3.1.5mOve.
3.1.6persist..,…
49
3.1.7randomkey.................
49
3.18
3.19type…
3,2服务器相关命令
.50
3.2.1ping...
50
3.2.2eCho.
51
3.23select
51
3.24qut…,,,…,
51
3.2.5dbsize∴
3.2.6info
327monito……,x
3.2.8configget
3.2.9flush
32.10flushall
第四章ARe、级头用特性
错误!未定义书签。
41安全性
…错误!未定义书签。
4主从复制
错误!未定义书签
421eds主从复制特点
错误!未定义书签。
422reds从复制过程:
错误!未定义书签。
4.2.3如何配置
.误!未定义书签。
43事务控制
错误!未定义书签
431简单事务控制
错误!未定义书签。
43.2如何取消一个事务.
…:错误!未定义书签
4.3.3乐观锁复杂事务控制
:a:::::a··::::
错误!未定义书签。
44持久化机制.
错误!未定义书签。
441snapshotting方式…
错误!未定义书签。
44.2a0f方式
错误!未定义书签。
45发布及订阅消息
错误!未定义书签
WWW
ChinaDBa中国D8超级论坛
46Pipeline批量发送请求…
{误!未定义书签。
4.7虚拟内存的使用
错误!未定义书签
5
WWW
ChinaDBa中国D8超级论坛
第一章Redis快速入门
ereaIs
Redis是一个Key-vave存储系统。和Memcached类似,它支持存储的value类型相对更多,
包括string(字符串)、ist(链表)、set(集合)和zset(有序集合)。这些数据类型都支持push/pop、
ad/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础
上,Redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在
内存中。区别的是Reds会局期性的把更新的数据写入磁盘或者把修改操作写入道加的记录
文件,并且在此础上实现了master-save(主从)同步
1.1Key-Vaue存储系统简介
Key-Valuestore是当卜比较流行的话题,尤其在构建诸如搜索引擎
P2P、游戏服务器、
SNS等大型互联网应用以及提供云计算服务的时候怎样保证系统在海量数据环境下的高性
能、高可靠性、高扩展性、高可用性、低成本成为所自≤统架梅〕挖苦心思考虑的重点,而
怎样解决数据库服务器的性能瓶颈是最大的掷
按照分布式领域的CAP理论(Consiste/-Availabilit,Tolerancetonetworkpartitions这三
部分在任何系统架构实现时只可能小满足中》,没法三者兼顾)来衡量,传的关系
数据的ACD只满足了Consistency,Avamabili↓因此在Partitiontolerance上就很难做得好。
另外传统的关系数据库处理海数、》布式架构时候在Performance、Scalability
Availability等方面也存在很大的局阳生。
而Key-valueStore更加注童入海量数据存取的性能、分布式、扩展性支持上,并不需要传统
关系数据库的一些特仙例如Schema、事务、完整SoL查询攴持等等,因此在分布式环
境下的性熊相对王传统的》东数据库有较大的提升。
Key-Value数据A为很多种类,具体如下图
ChinaDBa中国0超论
项目名称
语吉错性久性存能介顾户协议兼据摸型文挡雯助商/让区
ProjectvoldemortJava
分区,复制,Pluggable:BerkleyDB,avaAPI
Structured
read-repairMysql
blob/text
ALinkedin,no
Ringo
Erlang分区,复制Customon-disk
Http
B
immutable(appendonlylog)
blob
诺基亚,n
Scalaris
Eang分区复制m
Erlang,Java,blob
BOnSale.no
Http
Kai
Ehng分区,复制?On-diskDets~file
Memcachedblob
Dynomite
E分区,复制Pluggable:couch
Customasci,blob
Thrift
D+Powerset,no
MemcacheDB
C
复制
BerkleyDB
Memcachedblob
新浪网,some
ThruDB
C++复制
Pluggable:BerkeyDB,Thrift
Document
+Thirdrail,unsure
Custom,Mysql,53
oriented
CouchDB
Erlang复制分区?Customon-disk
Http,json
Document
Apache
oriented(ison)
Cassandra
复制分区Customon-disk
Thrift
Bigtablemeets
Dynamo
FFacebook,no
HBase
Java复制分区Customon-disk
CustomAPI
ThriftRest
stable
AApache,yes
Hypertable
C++复制分区
Customon-disk
(HDFS,KFS)
Thrift,otherBigtable
AZvents,百度,yes
okyoTyrantc复
TokyoCabinet
Memcached
blob
mIXIIp,no
这些Keve数据库,有的是用C编写有的影用编写的,还有的是用Erlang
编写的,每个都有自己的独到之处,我们从挑些较有特色且应用广泛的产品学习和
了解一下。
1.1.1Voldemort
Voldemort是一个分布式Key/value储东统,它具有以下特点
数据自动在多含服务间
数据自动分区,风此每个务器只包括整体数据的一个子集;
●服务器故障处理是明的
支持化,许丰富的Key和vaue类型,包括表和元组,也可以集成常见
的序列化木架,pRotocolBuffers,Thrift,AVro和Javaserialization
据项支持成本化,即使在故障情况下,数据完整性也可以得到保障
每节点是独立的,无需其他节点协调,因此也没有中央节点;
●单节点性能优秀:根据机器配置、网络、磁盘系统和数据复制因素的不同,每秒可以执
行10-20k操作;
●支持地理分散式部署。
1.1.2Dynamo
Dynamo是亚马逊的key-value模式的存储平台,可用性和扩展性都很好,性能也不错:读写
访问中999%的响应时间都在300ms内。
7
WWW
ChinaDBa中国D8超级论坛
接下来对Dynamo需要的一些特性做一下简要的摧述:
Cost-effectiveness-省饯!Dynamo不像一些商用数据库产品,需要昂贵的服务器来得
到良好的性能,而且可能增加5%的访问量会需要你花2万美刀去买·台新服务器。而
在Dynamo上,由于是利用一堆廉价机器来存数据,于是你可能只需要花个500刀买
个破机器加入到集群里就行了。
●Dynamo是一个Key-vale存储-因此他不攴持外键和关联查询什么的。其Vaue值是
二进制存储的,所以查询条件也只能作用在Key上。
●配置简单的分布式存储-这是由于Dynamo是去中心化地设计,在集群中它的每台
机器都是对等的,不像MongoDB这样的中心化设计,于是它也不会有单点问题。
1.1.3memcachedb
memcachedb是一个由新浪网的开发人员开放出来的开源项目,给cemach分布式缓存
服务器添加了Berkeleydb的持久化存储机制和异步主辅复制机制,计mech具备了事
务恢复能力、持久化能力和分布式复制能力,非常适合于需要超商性的与速度,但是不
需要严格事务约束,能够被持久化保存的应用场景,例如memcache被用在新浪博客上
面。
1.1.4Cassandra
ApacheCassandra是一套开源分有式keve储系。它最初由Facebook开发,用于储
存特别大的数据。Facebook目前在便吡系统
主要特性
分布式
基于column的结构化
高仲展性
Cassandra的主要特点是它不是个数据库,而是由堆数据库节点共同构成的个分布
式网络服舞对sand的一个写操作,会被复制到其他节点上去,对Cassandra的读操
作,廿会被到心节点上面去读取。对于一个Cassandra群集来说,扩展性能是比较
简单的事情,只在群集里面添加节点就可以了
cassandra烂/个混合型的非关系的数据库,类似于Google的Bigtable。其主要功能比
Dynomite(分布式的Key-Value存储系统)史丰富,但支持度却不如文档存储MoηgoDB(介
于关系数据库和非关系数据库之间的开源产品,是非关系数据库当中功能最丰富,最像关系
数据库的。支持的数据结构非常松散,是类似json的bison格式,因此可以存储比较复杂
的数据类型。)Cassandra最初由Facebook开发,后转变成了开源项目。它是一个网终社交
云计算方面理想的数据库。以Amazon专有的完全分布式的Dynamo为基础,结合了Google
BigTable基于列族(ColumnFamily)的数据模型。P2P去中心化的存储。很多方面都可以称
之为Dynamo20。
和其他数据库比较,有几个突出特点
●模式灵活:使用Cassandra,像文档存储,你不必提前解决记录中的字段。你可以在系
8
WWW
ChinaDBa中国D8超级论坛
统运行时随意的添加或移除宇段。这是一个惊人的效率提升,特别是在大型部署上。
●真正的可扩展性:Cassandra是纯粹意义上的水平扩展。为给集群添加更多容量,可以
指向另·台电脑。你不必重启任何进程,改变应用查询,或手动迁移任何数据。
多数据中心识别:你可以调舉你的节点布局来避免某一个数据中心起火,一个备用的
数据中心将至少有每条记录的完全复制
●范围査询:如果你不喜欢全部的键值査询,则可以设置键的范围来查询。
列表数据结构:在混合模式可以将超级列添加到5维。对于每个用户的索引,这是非
常方便的。
分布式写操作:有可以在任何地方任何时间集中读或写任何数据。并且不会有任何单
点失败
1.1.5memcached
memcached是套分布式的快取系统,当初是DangaInteractive为了vedn所发展的
但目前被许多软件(如Mediawiki)所使用。这是一套开放源代件以BsDlicense授权
释出。
memcached缺乏认证以及安全管制,这代表应该
cached服务器放置在防火墙后
memcachedEAPI使用三十二位元的循环兵校》(cR32)计算键值后,将资料分散在不
同的机器上。当表格满了以后,接下来增科会2U机制替换掉。由于memcached
通常只是当作快取系统使用,所以使明mache的应用程式在写回较慢的系统时(像是
后端的数据库)需要额外的稈式码更新emca(hed内的资料
memcached具有多种语言的客户端力包括:Perl/PHP/JAVA/C/Python/Ruby/C#MsQL
1.1.6Hypertable
Hypertabl号源、高性能、可伸缩的数据库,它采用与Goge的Bigtable相似的模型
在过去费年N6o为在PC集群上运行的可伸缩计算基础设施设计建造了三个关键部
分。套一个关键础设施是GoogleFileSystem(GFs),这是一个高可用的文件系统,提供
个局的名空间。它通过跨相器(和跨机架)的文件数据复制来达到高可用性,并因
此免受传文件存储系统无法避免的许多失败的影响,比如电源、内存和网络端∏等失败。
第二个基础设施是名为Map-Reduce的训算框架,它与GFS紧密协作,帮助处理收集到的
海量数据。第三个基础设施是Bigtable,它是传统数据库的替代。Bigtable让你可以通过
些主键来组织海量数据,并实现高效的查询。Hypertable是Bigtable的一个井源实现,并且
根据我们的想法进行了一些改进。
2为什么选择Key-Valuestore
大量的互联网用户选择Key-ValueStore的原因具体是什么呢?上要分为下面的2个上要原
ChinaDBa中国D8超级论坛
12.1大规模的互联网应用
对于google,ebay这样的互联网企ψ,每时每刻都有无数的用户在使用它们提供的互联网
服务,这些服务带米的就是大量的数据吞吐量,在同一时间,会并发的有成千上万的连接对
数据库进行操作。在这种情况下,单台服务器或者儿台服务器远远个能满足这些数据处理的
需求,简单的升级服务器性能这样的scaleup的方式也不行,所以唯一可以采用的小法就是
scaleout了。scaleout的方法有很多种,但大致分为两类:类仍然采用RDBMS,然后通过
对数据厍的垂直和水平切割将整个数据库部署到一个集群上,这种方法的优点在于可以采用
RDBMS这种熟悉的技术,但缺点在于它是针对特定应用的,就是说,由于应用的不同,切
割的方法是不一样的。
还有类就是goge所采用的方法,抛弁RDBM,采用key-value形式的存储,这详可以
极大的增强系统的可扩展性(scalability),如果要处理的数据持续增大,多加机器就可
以了。事实上,key-value的存储就是由于Babe等相关论文的发表慢慢入从们的视
野的。
122云存储
如果说上一个问题还有可以替代的解决方衮(切制数热军)话,那么对于云存储来说,也
许key-value的store就是唯一的解决方案了存備间单说就是构建一个大型的存储平台
给别人用,这也就意味着在这上面运的电是本可控的。如果其中某个客户的应用随
着用户的增长而不断增长时,云存储商是々存办法通过数据库的切割来达到scae的
因为这个数据是客广的,供应商不可解入个据自然就没法作出切割。在这种情况下,
key-valueE]store就是唯一的选指为种条件下的Iscalability必须是自动完成的,个
能有人T干预。这也是为什乎风有的现有的云存储都是key-value形式的,例如Amazon
的smipleDB,底层实现就key-value,还有googleHhgoogleAppEngine,采用的是Bgbe
的存储形式。也许唯可能例址的是MS的解决方案,我在Qcon人会上听说Ms的Azure
平台的下一个版本中就谁基于RDBMS的云存储,尽管我本人仍然对此保持怀疑。
Key-VprueStor最大对点就是它的可扩展性,这也就是它最大的优势。所谓的可扩展性,
在我来这里包子两方面内容。方面,是指Key-ValueStore可以支持极大的数据的存储,
它的分式的构决定了只要有更多的机器,就能够保证存储更多的数据。另一方面,是指
它可以攴持量很多的并发的查询。对于RDBM,一般几百个并发的查询就可以让它很吃
力了,而一个KeγValuestore,可以很轻松的文持上的并发査询。下面而简单的罗列了
些特点
●Key-valuestore:个key-vaue数据仔储系统,只支持·些基本操作,如:SET(key,value)
和GET(key)等;
分布式:多台机器(nodes)同时存储数据和状态,彼此父换消息来保持数据一致,可
视为一个完整的存储系统。
数据一致:所有机器上的数据都是同步更新的、不用担心得到不一致的结果;
冗余:所有机器(nodes)保存相同的薮据,整个系统的存储能力取决于单台机器(node)
的能力
●容错:如果有少数nodes出错,比如重启、当机、断网、网络丢包等各种faut/fail都
用户评论