<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>集群教程 — Redis 命令参考</title>
<link rel="stylesheet" href="../_static/pyramid.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script type="text/javascript">
var DOCUMENTATION_OPTIONS = {
URL_ROOT: '../',
VERSION: '2.8',
COLLAPSE_INDEX: false,
FILE_SUFFIX: '.html',
HAS_SOURCE: true
};
</script>
<script type="text/javascript" src="../_static/jquery.js"></script>
<script type="text/javascript" src="../_static/underscore.js"></script>
<script type="text/javascript" src="../_static/doctools.js"></script>
<link rel="top" title="Redis 命令参考" href="../index.html" />
<link rel="next" title="Redis 集群规范" href="cluster-spec.html" />
<link rel="prev" title="Sentinel" href="sentinel.html" />
<!--[if lte IE 6]>
<link rel="stylesheet" href="../_static/ie6.css" type="text/css" media="screen" charset="utf-8" />
<![endif]-->
</head>
<body>
<div class="related">
<h3>Navigation</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="General Index"
accesskey="I">index</a></li>
<li class="right" >
<a href="cluster-spec.html" title="Redis 集群规范"
accesskey="N">next</a> |</li>
<li class="right" >
<a href="sentinel.html" title="Sentinel"
accesskey="P">previous</a> |</li>
<li><a href="../index.html">Redis 命令参考</a> »</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body">
<div class="section" id="cluster-tutorial">
<span id="id1"></span><h1>集群教程<a class="headerlink" href="#cluster-tutorial" title="Permalink to this headline">¶</a></h1>
<div class="admonition note">
<p class="first admonition-title">Note</p>
<p class="last">本文档翻译自 <a class="reference external" href="http://redis.io/topics/cluster-tutorial">http://redis.io/topics/cluster-tutorial</a> 。</p>
</div>
<p>本文档是 Redis 集群的入门教程,
从用户的角度介绍了设置、测试和操作集群的方法。</p>
<p>本教程不包含晦涩难懂的分布式概念,
也没有像 <a class="reference internal" href="cluster-spec.html#cluster-spec"><span>Redis 集群规范</span></a> 那样包含 Redis 集群的实现细节,
如果你打算深入地学习 Redis 集群的部署方法,
那么推荐你在阅读完这个教程之后,
再去看一看集群规范。</p>
<p><strong>Redis 集群目前仍处于 Alpha 测试版本</strong>,
如果在使用过程中发现任何问题,
请到 <a class="reference external" href="https://groups.google.com/forum/?fromgroups#!forum/redis-db">Redis 的邮件列表</a> 发贴,
或者到 <a class="reference external" href="https://github.com/antirez/redis">Redis 的 Github 页面</a> 报告错误。</p>
<div class="section" id="id2">
<h2>集群简介<a class="headerlink" href="#id2" title="Permalink to this headline">¶</a></h2>
<p>Redis 集群是一个可以<strong>在多个 Redis 节点之间进行数据共享</strong>的设施(installation)。</p>
<p>Redis 集群不支持那些需要同时处理多个键的 Redis 命令,
因为执行这些命令需要在多个 Redis 节点之间移动数据,
并且在高负载的情况下,
这些命令将降低 Redis 集群的性能,
并导致不可预测的行为。</p>
<p>Redis 集群<strong>通过分区(partition)来提供一定程度的可用性</strong>(availability):
即使集群中有一部分节点失效或者无法进行通讯,
集群也可以继续处理命令请求。</p>
<p>Redis 集群提供了以下两个好处:</p>
<ul class="simple">
<li>将数据自动切分(split)到多个节点的能力。</li>
<li>当集群中的一部分节点失效或者无法进行通讯时,
仍然可以继续处理命令请求的能力。</li>
</ul>
</div>
<div class="section" id="id3">
<h2>Redis 集群数据共享<a class="headerlink" href="#id3" title="Permalink to this headline">¶</a></h2>
<p>Redis 集群使用数据分片(sharding)而非一致性哈希(consistency hashing)来实现:
一个 Redis 集群包含 <code class="docutils literal"><span class="pre">16384</span></code> 个哈希槽(hash slot),
数据库中的每个键都属于这 <code class="docutils literal"><span class="pre">16384</span></code> 个哈希槽的其中一个,
集群使用公式 <code class="docutils literal"><span class="pre">CRC16(key)</span> <span class="pre">%</span> <span class="pre">16384</span></code> 来计算键 <code class="docutils literal"><span class="pre">key</span></code> 属于哪个槽,
其中 <code class="docutils literal"><span class="pre">CRC16(key)</span></code> 语句用于计算键 <code class="docutils literal"><span class="pre">key</span></code> 的 <a class="reference external" href="http://zh.wikipedia.org/wiki/%E5%BE%AA%E7%92%B0%E5%86%97%E9%A4%98%E6%A0%A1%E9%A9%97">CRC16 校验和</a> 。</p>
<p>集群中的每个节点负责处理一部分哈希槽。
举个例子,
一个集群可以有三个哈希槽,
其中:</p>
<ul class="simple">
<li>节点 A 负责处理 <code class="docutils literal"><span class="pre">0</span></code> 号至 <code class="docutils literal"><span class="pre">5500</span></code> 号哈希槽。</li>
<li>节点 B 负责处理 <code class="docutils literal"><span class="pre">5501</span></code> 号至 <code class="docutils literal"><span class="pre">11000</span></code> 号哈希槽。</li>
<li>节点 C 负责处理 <code class="docutils literal"><span class="pre">11001</span></code> 号至 <code class="docutils literal"><span class="pre">16384</span></code> 号哈希槽。</li>
</ul>
<p>这种将哈希槽分布到不同节点的做法使得用户可以很容易地向集群中添加或者删除节点。
比如说:</p>
<ul class="simple">
<li>如果用户将新节点 D 添加到集群中,
那么集群只需要将节点 A 、B 、 C 中的某些槽移动到节点 D 就可以了。</li>
<li>与此类似,
如果用户要从集群中移除节点 A ,
那么集群只需要将节点 A 中的所有哈希槽移动到节点 B 和节点 C ,
然后再移除空白(不包含任何哈希槽)的节点 A 就可以了。</li>
</ul>
<p>因为将一个哈希槽从一个节点移动到另一个节点不会造成节点阻塞,
所以无论是添加新节点还是移除已存在节点,
又或者改变某个节点包含的哈希槽数量,
都不会造成集群下线。</p>
</div>
<div class="section" id="id4">
<h2>Redis 集群中的主从复制<a class="headerlink" href="#id4" title="Permalink to this headline">¶</a></h2>
<p>为了使得集群在一部分节点下线或者无法与集群的大多数(majority)节点进行通讯的情况下,
仍然可以正常运作,
Redis 集群对节点使用了主从复制功能:
集群中的每个节点都有 <code class="docutils literal"><span class="pre">1</span></code> 个至 <code class="docutils literal"><span class="pre">N</span></code> 个复制品(replica),
其中一个复制品为主节点(master),
而其余的 <code class="docutils literal"><span class="pre">N-1</span></code> 个复制品为从节点(slave)。</p>
<p>在之前列举的节点 A 、B 、C 的例子中,
如果节点 B 下线了,
那么集群将无法正常运行,
因为集群找不到节点来处理 <code class="docutils literal"><span class="pre">5501</span></code> 号至 <code class="docutils literal"><span class="pre">11000</span></code> 号的哈希槽。</p
没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
本文档是 Redis Command Reference 和 Redis Documentation 的中文翻译版, 阅读这个文档可以帮助你了解 Redis 命令的具体使用方法, 并学会如何使用 Redis 的事务、持久化、复制、Sentinel、集群等功能。可以作为新手入门教程!强烈推荐Redis学习新手和想研究Redis新特性的老手学习研究。
资源推荐
资源详情
资源评论
收起资源包目录
Redis V4.0 最新版中文命令参考学习手册 (234个子文件)
CNAME 13B
basic.css 9KB
pyramid.css 6KB
epub.css 5KB
pygments.css 4KB
ie6.css 726B
ajax-loader.gif 673B
transparent.gif 49B
.gitignore 14B
cluster-tutorial.html 67KB
cluster-spec.html 52KB
sentinel.html 43KB
index.html 40KB
eval.html 36KB
persistence.html 30KB
notification.html 28KB
protocol.html 26KB
sort.html 25KB
info.html 25KB
scan.html 23KB
transaction.html 23KB
replication.html 19KB
bitfield.html 18KB
pubsub.html 16KB
set.html 14KB
blpop.html 13KB
incr.html 13KB
rpoplpush.html 12KB
config_get.html 11KB
expire.html 11KB
pubsub.html 11KB
ltrim.html 11KB
slowlog.html 11KB
georadius.html 11KB
client_list.html 11KB
migrate.html 11KB
change_log.html 10KB
config_rewrite.html 10KB
bitcount.html 10KB
object.html 10KB
zrangebyscore.html 10KB
zrangebylex.html 9KB
bitop.html 9KB
zrange.html 9KB
setrange.html 9KB
srandmember.html 9KB
append.html 9KB
incrbyfloat.html 9KB
zunionstore.html 9KB
README.html 8KB
config_resetstat.html 8KB
restore.html 8KB
lrange.html 8KB
index.html 8KB
index.html 8KB
lrem.html 8KB
zadd.html 8KB
index.html 8KB
hincrbyfloat.html 8KB
brpoplpush.html 8KB
move.html 8KB
smove.html 8KB
keys.html 7KB
auth.html 7KB
getset.html 7KB
lpush.html 7KB
rpush.html 7KB
psubscribe.html 7KB
shutdown.html 7KB
script_kill.html 7KB
client_setname.html 7KB
linsert.html 7KB
bgrewriteaof.html 7KB
msetnx.html 7KB
zrevrangebyscore.html 7KB
lindex.html 7KB
zinterstore.html 7KB
zincrby.html 7KB
hincrby.html 7KB
pfcount.html 7KB
slaveof.html 7KB
getrange.html 7KB
zremrangebyrank.html 7KB
pfadd.html 7KB
geoadd.html 7KB
zrevrank.html 7KB
zrevrange.html 7KB
zrank.html 7KB
brpop.html 7KB
mset.html 7KB
zremrangebyscore.html 7KB
setbit.html 7KB
setex.html 7KB
dump.html 7KB
pttl.html 7KB
zremrangebylex.html 7KB
lset.html 7KB
zcount.html 7KB
geodist.html 7KB
index.html 7KB
共 234 条
- 1
- 2
- 3
资源评论
- aatewu2018-06-13骗子,redisdoc.com下载的html,非4.0
伟仔NJ
- 粉丝: 92
- 资源: 12
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功