华为云用户手册
-
约束与限制 因SSL加密传输的原因,SSL和客户端IP透传功能无法同时开启,加密链路下不支持携带客户端IP。 开启SSL后,实例的读写性能会有所下降。 开通或关闭SSL将会重启您的实例。实例会出现秒级的连接闪断,请在业务低峰期执行该操作并确保应用具备重连机制。 重启操作无法撤销,单机实例及其他关闭了AOF持久化(参数配置appendonly为no)的实例,数据将清空,实例正在执行的备份任务会被停止,请谨慎操作。
-
开启或关闭SSL 登录分布式缓存服务管理控制台。 在管理控制台左上角单击,选择实例所在的区域。 单击左侧菜单栏的“缓存管理”。 在“缓存管理”页面,单击需要执行操作的缓存实例名称。 单击左侧菜单栏的“SSL设置”,进入SSL设置页面。 单击“SSL证书”后的,可以开启或关闭SSL。 开通或关闭SSL将会重启您的实例。实例会出现秒级的连接闪断,请在业务低峰期执行该操作并确保应用具备重连机制。 重启操作无法撤销,单机实例及其他关闭了AOF持久化(参数配置appendonly为no)的实例,数据将清空,实例正在执行的备份任务会被停止,请谨慎操作。 开启SSL功能后,单击“下载证书”,下载SSL证书。 解压SSL证书,将解压后的“ca.crt”文件上传到Redis客户端所在的服务器上。 在连接实例的命令中配置“ca.crt”文件所在的路径。例如,使用redis-cli连接实例时,请参考使用redis-cli连接Redis实例。
-
连接Redis网络要求 任何兼容Redis协议的客户端都可以访问D CS 的Redis实例,您可以根据自身应用特点选用任何Redis客户端,Redis支持的客户端列表请参见Redis客户端。 客户端连接Redis在不同的连接场景下,需要满足不同的连接约束: 使用同一VPC内客户端访问Redis实例。 安装了客户端的弹性云服务器必须与Redis实例属于同一个VPC。Redis 3.0/6.0企业版实例,弹性云服务器与Redis实例需配置为相同的安全组,或者安全组不同时配置安全组连通规则。Redis 4.0及以上版本的基础版实例,如果实例配置了IP白名单,需将弹性云服务器的IP地址加入实例IP白名单,以确保弹性云服务器与Redis实例的网络是连通的。 安全组配置,请参考如何选择和配置安全组。白名单配置,请参考管理实例白名单。 客户端与Redis实例所在VPC为相同Region下的不同VPC。 如果客户端与Redis实例不在相同VPC中,可以通过建立VPC对等连接方式连通网络,具体请参考:缓存实例是否支持跨VPC访问?。 客户端与Redis实例所在VPC不在相同Region。 如果客户端服务器和Redis实例不在同一Region,支持通过云专线打通网络,请参考云专线。 在跨Region访问Redis实例时,实例 域名 无法跨Region解析,无法通过域名访问。可以通过在hosts中手动配置域名与IP绑定关系或使用IP进行访问。 公网访问 客户端公网访问Redis 4.0及以上版本实例时,请参考开启Redis公网访问并获取公网访问地址开启实例公网访问。 客户端公网访问Redis 3.0实例时,Redis缓存实例需要配置正确的安全组规则。当SSL加密功能关闭时,Redis实例的安全组入方向规则,必须允许外部地址访问6379端口;当SSL加密功能开启时,则必须允许外部地址访问36379端口。具体配置请参考常见问题:如何选择和配置安全组? 父主题: 配置Redis网络连接
-
测试结果 以下测试结果仅供参考,不同局点环境和网络波动等客观条件可能产生性能差异。 以下仅提供几种实例规格的测试结果作为示例,其他实例规格的指标请参考DCS实例规格。 QPS:即Query Per Second,表示每秒处理的读写操作数,单位是次/秒。 平均/最大时延:操作的平均/最大延迟时间,单位为毫秒(ms)。 x%延迟:指x%操作的延迟时间,单位为毫秒(ms)。例如该指标的值为10ms,99.99%延迟表示99.99%的请求可以在10ms内被处理。 表1 SET操作命令测试结果 实例规格 实例CPU类型 并发连接数(个) QPS 95%左右延迟(ms) 99.99%延迟(ms) 最大时延(ms) 64G X86 3000 1,323,935.00 3.3 9.4 220 5000 1,373,756.00 5.3 13 240 10000 1,332,074.00 11 26 230 80000 946,032.00 110 460 6800 64G ARM 3000 837,864.92 5.8 16 78 5000 763,609.69 10 29 240 10000 703,808.39 20 47 250 80000 625,841.69 170 410 940 表2 GET操作命令测试结果 实例规格 实例CPU类型 并发连接数(个) QPS 95%左右延迟(ms) 99.99%延迟(ms) 最大时延(ms) 64G X86 3000 1,366,153.00 3.3 9.3 230 5000 1,458,451.00 5.1 13 220 10000 1,376,399.00 11 29 440 80000 953,837.00 120 1300 2200 64G ARM 3000 764,114.55 6.1 17 100 5000 765,187.74 10 27 230 10000 731,310.95 20 47 250 80000 631,373.33 170 1300 1900
-
测试命令 redis-benchmark -h {IP} -p {Port} -a {password} -n {nreqs} -r {randomkeys} -c {connection} -d {datasize} -t {command} 参数参考值:-c {connect_number}:500,-n {nreqs}:10000000,-r {randomkeys}:1000000,-d {datasize}:32,-t {command}:set。
-
测试结果 以下测试结果仅供参考,不同局点环境和网络波动等客观条件可能产生性能差异。 以下仅提供几种实例规格的测试结果作为示例,其他实例规格的指标请参考DCS实例规格。 QPS:即Query Per Second,表示每秒处理的读写操作数,单位是次/秒。 平均/最大时延:操作的平均/最大延迟时间,单位为毫秒(ms)。 x%延迟:指x%操作的延迟时间,单位为毫秒(ms)。例如该指标的值为10ms,99.99%延迟表示99.99%的请求可以在10ms内被处理。 表1 SET操作命令测试结果 实例规格 实例CPU类型 并发连接数(个) QPS 99.99%延迟(ms) 第一个100%延迟(ms) 最后一个100%延迟(ms) 平均时延(ms) 8G X86 500 132068.98 11 18 205 3.298 10000 82386.58 171 178 263 69.275 8G ARM 500 94811.89 10 12 13 3.476 10000 61264.37 340 350 351 83.848 32G X86 500 131385.33 9.5 16 17 3.333 10000 82275.41 157 162.18 162.43 62.105 32G ARM 500 117553.02 8 21 22 3.875 10000 76001.7 175 386 387 99.362 表2 GET操作命令测试结果 实例规格 实例CPU类型 并发连接数(个) QPS 99.99%延迟(ms) 第一个100%延迟(ms) 最后一个100%延迟(ms) 平均时延(ms) 8G X86 500 138652.02 7 11 12 2.117 10000 82710.94 123.7 281.6 282.9 61.078 8G ARM 500 95432.59 8.8 10 214 3.186 10000 60984.16 217 337.15 337.92 83.321 32G X86 500 139113.02 6.6 10 11 2.119 10000 82489.36 100 105.66 106 60.968 32G ARM 500 139041.45 6 10 11 2.487 10000 81563.41 141 149 150 63
-
Ioredis客户端连接Redis 客户端服务器为Ubuntu(debian系列) 查看并获取待连接Redis实例的IP地址/域名和端口。 具体步骤请参见查看和修改DCS实例基本信息。 登录弹性云服务器。 安装Node.js。 apt install nodejs-legacy 如果以上命令安装不了,备选方式如下: wget https://nodejs.org/dist/v0.12.4/node-v0.12.4.tar.gz --no-check-certificatetar -xvf node-v4.28.5.tar.gzcd node-v4.28.5./configuremakemake install 安装完成后,可执行node --version查看Node.js的版本号,确认Node.js已安装成功。 安装js包管理工具npm。 apt install npm 安装NodeJs redis客户端ioredis。 npm install ioredis 编辑连接Redis实例的示例脚本。 编辑连接示例脚本ioredisdemo.js。示例脚本中增加以下内容,包括连接以及数据读取。 var Redis = require('ioredis');var redis = new Redis({ port: 6379, // Redis port host: '192.168.0.196', // Redis host family: 4, // 4 (IPv4) or 6 (IPv6) password: '******', db: 0}); redis.set('foo', 'bar');redis.get('foo', function (err, result) { console.log(result);}); // Or using a promise if the last argument isn't a functionredis.get('foo').then(function (result) { console.log(result);});// Arguments to commands are flattened, so the following are the same:redis.sadd('set', 1, 3, 5, 7);redis.sadd('set', [1, 3, 5, 7]);// All arguments are passed directly to the redis server:redis.set('key', 100, 'EX', 10); 其中,host为Redis实例的IP地址/域名,port为Redis实例的端口。IP地址/域名和端口获取见1,请按实际情况修改后执行。******为创建Redis实例时自定义的密码,请按实际情况修改后执行。 运行示例脚本,连接Redis实例。 node ioredisdemo.js 客户端服务器为centos(redhat系列) 查看并获取待连接Redis实例的IP地址/域名和端口。 具体步骤请参见查看和修改DCS实例基本信息。 登录弹性云服务器。 安装Node.js。 yum install nodejs 如果以上命令安装不了,备选方式如下: wget https://nodejs.org/dist/v0.12.4/node-v0.12.4.tar.gz --no-check-certificatetar -xvf node-v0.12.4.tar.gzcd node-v0.12.4./configuremakemake install 安装完成后,可执行node -v查看Node.js的版本号,确认Node.js已安装成功。 安装js包管理工具npm。 yum install npm 安装Node.js redis客户端ioredis。 npm install ioredis 编辑连接Redis实例的示例脚本。 编辑连接示例脚本ioredisdemo.js。示例脚本中增加以下内容,包括连接以及数据读取。 var Redis = require('ioredis');var redis = new Redis({ port: 6379, // Redis port host: '192.168.0.196', // Redis host family: 4, // 4 (IPv4) or 6 (IPv6) password: '******', db: 0});redis.set('foo', 'bar');redis.get('foo', function (err, result) { console.log(result);});// Or using a promise if the last argument isn't a functionredis.get('foo').then(function (result) { console.log(result);}); // Arguments to commands are flattened, so the following are the same:redis.sadd('set', 1, 3, 5, 7);redis.sadd('set', [1, 3, 5, 7]); // All arguments are passed directly to the redis server:redis.set('key', 100, 'EX', 10); 其中,host为Redis实例的IP地址/域名,port为Redis实例的端口。IP地址/域名和端口获取见1,请按实际情况修改后执行。******为创建Redis实例时自定义的密码,请按实际情况修改后执行。 运行示例脚本,连接Redis实例。 node ioredisdemo.js
-
测试命令 redis-benchmark -h {IP} -p {Port} -a {password} -n {nreqs} -r {randomkeys} -c {connection} -d {datasize} -t {command} 参数参考值:-c {connect_number}:1000,-n {nreqs}:10000000,-r {randomkeys}:1000000,-d {datasize}:32。
-
测试结果 表1 SET操作命令测试结果 实例规格 实例CPU类型 并发连接数(个) QPS 99.99%延迟(ms) 第一个100%延迟(ms) 最后一个100%延迟(ms) 64G X86 1000 534960.92 24 34 209 10000 511362.67 108 171 315 表2 GET操作命令测试结果 实例规格 实例CPU类型 并发连接数(个) QPS 99.99%延迟(ms) 第一个100%延迟(ms) 最后一个100%延迟(ms) 64G X86 1000 584669.15 23 31 82 10000 533178.04 144 184 370 Redis 3.0实例暂不支持ARM CPU类型实例,仅提供X86类型的实例测试结果。
-
约束与限制 只有当实例处于“运行中”状态,才能执行此操作。 只有Redis 4.0及以上版本实例支持该操作,Redis 3.0不支持该功能。 在Web CLI中,部分命令被禁用,详情请参考Web CLI中支持和禁用命令。 请勿通过Web CLI输入敏感信息,以免敏感信息泄露。 当前在Web CLI下所有命令参数暂不支持中文且key和value不支持空格。 当value值为空时,执行get命令返回nil。
-
导出RDB文件 导出前准备。 对于主备或集群实例,数据写入RDB文件有一定的时延,时延策略配置在redis.conf文件中。建议先了解待迁移Redis实例的RDB策略配置,然后暂停业务系统并向Redis实例写入满足数量条件的测试数据,确保RDB文件为最新生成。 例如,redis.conf中对RDB的默认策略配置如下: save 900 1 //900秒内有数据变更则写入RDB文件save 300 10 //300秒内有10条以上数据变更则写入RDB文件save 60 10000 //60秒内有10000条以上数据变更则写入RDB文件 因此,可以参考以上数据写入RDB的策略,在停止业务系统后,向Redis实例写入一定数量的测试数据,触发策略并写入RDB文件,确保业务数据均已同步到RDB文件中。 测试数据可以在导入后删除。 如果有某个数据库没有被业务系统使用,可以将测试数据写入该数据库,待导入DCS后,使用flushdb命令清空该数据库。 单机实例如果不做持久化配置,则RDB文件需要临时生成,导出耗时较主备实例相比稍多一些。 登录弹性云服务器。 安装Redis-cli客户端。该操作以客户端安装在Linux系统上为例进行说明。 执行如下命令下载Redis。您也可以安装其他Redis版本。具体操作,请参见Redis官网。 wget http://download.redis.io/releases/redis-5.0.8.tar.gz 执行如下命令,解压Redis客户端源码包。 tar -xzf redis-5.0.8.tar.gz 进入Redis目录并编译Redis客户端源码。 cd redis-5.0.8makecd src 使用如下命令导出RDB文件: redis-cli -h {source_redis_address} -p {port} -a {password} --rdb {output.rdb} {source_redis_address}为源Redis的连接地址,{port}为源Redis的端口,{password}为源Redis的连接密码,{output.rdb}为RDB文件名。 执行命令后回显"Transfer finished with success.",表示文件导出成功。
-
创建OBS桶并上传备份文件 如果上传的源Redis备份文件小于5GB,请执行以下步骤,通过OBS控制台创建OBS桶并上传备份文件。如果上传的源Redis备份文件大于5GB,请参考超过5GB如何上传上传备份文件。 通过OBS控制台,创建OBS桶。 在创建过程中,以下两个参数请按要求设置,其他详细的创建步骤,请参考创建桶章节。 选择“区域”。 OBS桶所在区域必须跟DCS目标Redis实例所在区域相同。 设置“存储类别”,当前支持“标准存储”、“低频访问存储”和“归档存储”。 请不要选择“归档存储”,否则会导致备份文件迁移失败。 在OBS管理控制台的桶列表中,单击1中创建的桶名称,进入“概览”页面。 在左侧导航栏,单击“对象”。 在“对象”页签下,单击“上传对象”,系统弹出“上传对象”对话框。 指定对象的存储类别。 请不要选择“归档存储”,否则会导致备份文件迁移失败。 上传对象。 您可以拖拽本地文件或文件夹至“上传对象”区域框内添加待上传的文件,也可以通过单击“上传对象”区域框内的“添加文件”,选择本地文件添加。 单次最多支持100个文件同时上传,总大小不超过5GB。 图1 上传对象 选择服务端加密方式,支持选择“SSE-KMS”、“SSE-OBS”或“不开启加密”,详情请参见服务端加密。 单击“上传”。
-
前提条件 在迁移之前,请先阅读迁移方案概览,选择正确的迁移方案,了解当前DCS支持的在线迁移能力,选择适当的目标实例。 如果是单机/主备等多DB的源端实例迁移到Proxy集群实例,Proxy集群默认不开启多DB,仅有一个DB0,请先确保源端实例DB0以外的DB是否有数据,如果有,请先参考开启多DB操作开启Proxy集群多DB设置。 如果是单机/主备等多DB的源端实例迁移到Cluster集群实例,Cluster集群不支持多DB,仅有一个DB0,请先确保源端实例DB0以外的DB是否有数据,如果有,请将数据转存到DB0,否则会出现迁移失败,将数据转存到DB0的操作请参考使用Rump在线迁移。 准备源Redis的备份文件,备份文件的格式必须为.aof、.rdb、.zip或.tar.gz。 如果您还没有目标Redis,请先创建目标Redis,具体操作请参考购买Redis实例。 如果您已有目标Redis,则不需要重复创建,为了对比迁移前后数据及预留足够的内存空间,建议在数据迁移之前清空目标实例数据,清空操作请参考清空Redis实例数据。如果没有清空实例数据,数据迁移后,目标Redis与源Redis实例重复的数据迁移后会被覆盖,源Redis没有、目标Redis有的数据会保留。
-
前提条件 如果您还没有目标Redis,请先创建目标Redis,具体操作请参考购买Redis实例。 如果您已有目标Redis,则不需要重复创建,为了对比迁移前后数据及预留足够的内存空间,建议在数据迁移之前清空目标实例数据,清空操作请参考清空Redis实例数据。如果没有清空实例数据,数据迁移后,目标Redis与源Redis实例重复的数据迁移后会被覆盖,源Redis没有、目标Redis有的数据会保留。 已创建弹性 云服务器ECS ,创建弹性云服务器的方法,请参见创建弹性云服务器。 自建的源Redis实例必须放通SYNC命令,否则无法使用Redis-cli导出RDB文件。
-
配置在线迁移任务 创建完在线迁移任务之后,单击该迁移任务右侧的“配置”,配置在线迁移的源Redis、目标Redis等信息。 选择迁移方法。 支持“全量迁移”和“全量迁移+增量迁移”两种,“全量迁移”和“全量迁移+增量迁移”的功能及限制如表1所示。 表1 在线迁移方法说明 迁移类型 描述 全量迁移 该模式为Redis的一次性迁移,适用于可中断业务的迁移场景。全量迁移过程中,如果源Redis有数据更新,这部分更新数据不会被迁移到目标Redis。 全量迁移+增量迁移 该模式为Redis的持续性迁移,适用于对业务中断敏感的迁移场景。增量迁移阶段通过解析日志等技术, 持续保持源Redis和目标端Redis的数据一致。 增量迁移,迁移任务会在迁移开始后,一直保持迁移中状态,不会自动停止。需要您在合适时间,在“操作”列单击“停止”,手动停止迁移。停止后,源端数据不会造成丢失,只是目标端不再写入数据。增量迁移在传输链路网络稳定情况下是秒级时延,具体的时延情况依赖于网络链路的传输质量。 图1 选择迁移方法 仅当迁移方法选择“全量迁移+增量迁移”时,支持选择是否启用“带宽限制”。 如果启用带宽限制功能,当数据同步速度达到带宽限制时,将限制同步速度的继续增长。 选择是否“自动重连”。如开启自动重连模式,迁移过程中在遇到网络等异常情况时,会无限自动重连。 自动重连模式在无法进行增量同步时,会触发全量同步,增加带宽占用,请谨慎选择。 分别配置“源Redis”和“目标Redis”。 配置“源Redis类型”和“源Redis实例”: “源Redis类型”请选择“自建Redis”,并在“源Redis实例”处输入源Redis的IP地址和端口。 如果源Redis为Cluster集群,需要输入集群所有主节点的IP端口,用英文逗号隔开。例如:192.168.1.1:6379,192.168.0.0:6379 配置“目标Redis类型”和“目标Redis实例”: “目标Redis类型”请选择“云服务Redis”,并在“目标Redis实例”处选择需要迁移的目标Redis。 分别配置“源Redis实例密码”和“目标Redis实例密码”:如果是密码访问模式实例,在输入连接实例密码后,单击密码右侧的“测试连接”,检查实例密码是否正确、网络是否连通。如果是免密访问的实例,请直接单击“测试连接”。如果测试连接失败,请检查输入的实例密码是否正确、Redis实例与迁移任务网络是否打通。 如果是DCS服务的Redis实例,此处暂不支持使用账号管理功能中创建的ACL账号及密码。 在“源DB”或“目标DB”中,您可以选择是否需要指定具体迁移的DB。例如源端输入5,目标端输入6时,表示迁移源Redis DB5中的数据到目标Redis的DB6;当源端不指定DB,目标端指定DB时,表示默认迁移源端的全部数据,到目标端指定的DB,当目标端不指定DB时,表示默认迁移到与源端对应的DB。 当源端为多DB,目标端为单DB的DCS实例时(单DB的实例只有DB0),需要源端的所有数据都在DB0,或者指定仅迁移源端某一DB中的数据并将目标端DB指定为0,否则会迁移失败。 DCS Redis的DB数请参见Redis实例是否支持多DB方式?。 单击“下一步”。 确认迁移信息,然后单击“提交”,开始创建迁移任务。 可返回迁移任务列表中,观察对应的迁移任务的状态,迁移成功后,任务状态显示“成功”。 如果出现迁移失败,建议单击迁移任务名称,进入迁移任务详情页面,通过“迁移日志”排查迁移失败的原因。 如果是增量迁移,全量迁移后会一直处于增量迁移中的状态。 如需手动停止迁移中的任务,勾选迁移任务左侧的方框,单击迁移任务上方的“停止”,即可停止迁移。 勾选停止迁移或迁移失败的迁移任务,单击迁移任务上方的“重启”,可重新进行迁移。如果重启迁移任务后迁移失败,建议单击“配置”,重新配置在线迁移任务后重试。 单次最多支持勾选50个在线迁移任务,批量停止、删除、或重启迁移任务。
-
迁移后验证 数据迁移前如果目标Redis中数据为空,迁移完成后,可以通过以下方式确认数据的完整性: 连接源Redis和目标Redis。连接Redis的方法请参考Redis-cli客户端连接Redis。 输入info keyspace,查看keys参数和expires参数的值。 对比源Redis和目标Redis的keys参数分别减去expires参数的差值。如果差值一致,则表示数据完整,迁移正常。 注意:如果是全量迁移,迁移过程中源Redis更新的数据不会迁移到目标实例。
-
检查网络 检查源Redis、目标Redis、迁移任务资源所在VPC是否为同一个VPC。 如果是,请执行配置在线迁移任务;如果不是,请执行2。 检查源Redis的VPC、目标Redis的VPC、迁移任务资源所在VPC的网络是否打通,确保迁移任务的虚拟机资源能访问源Redis和目标Redis。 如果已打通,则执行配置在线迁移任务;如果没打通,则执行3。 执行相应操作,打通网络。 当源Redis和目标Redis所在的VPC属于同一云厂商的同一Region,请参考VPC对等连接说明,查看和创建对等连接,打通网络。 当源Redis和目标Redis所在的VPC属于同一云厂商的不同Region,请参考云连接,查看和创建云连接,打通网络。 当源Redis和目标Redis属于不同的云厂商,仅支持云专线打通网络,请参考云专线。
-
前提条件 在迁移之前,请先阅读迁移方案概览,选择正确的迁移方案,了解当前DCS支持的在线迁移能力,选择适当的目标实例。 如果是单机/主备等多DB的源端实例迁移到Proxy集群实例,Proxy集群默认不开启多DB,仅有一个DB0,请先确保源端实例DB0以外的DB是否有数据,如果有,请先参考开启多DB操作开启Proxy集群多DB设置。 如果是单机/主备等多DB的源端实例迁移到Cluster集群实例,Cluster集群不支持多DB,仅有一个DB0,请先确保源端实例DB0以外的DB是否有数据,如果有,请将数据转存到DB0,否则会出现迁移失败,将数据转存到DB0的操作请参考使用Rump在线迁移。 已获取准备迁移的源Redis实例的IP地址和端口。 如果您还没有目标Redis,请先创建目标Redis,具体操作请参考购买Redis实例。 如果您已有目标Redis,则不需要重复创建,为了对比迁移前后数据及预留足够的内存空间,建议在数据迁移之前清空目标实例数据,清空操作请参考清空Redis实例数据。如果没有清空实例数据,数据迁移后,目标Redis与源Redis实例重复的数据迁移后会被覆盖,源Redis没有、目标Redis有的数据会保留。
-
创建在线迁移任务 请使用DCS目标Redis所在的账号登录分布式缓存服务控制台。 在管理控制台左上角单击,选择DCS目标Redis所在的区域。 单击左侧菜单栏的“数据迁移”。页面显示迁移任务列表页面。 单击右上角的“创建在线迁移任务”。 设置迁移任务名称和描述。 任务名称请以字母开头,长度不小于4位且不超过64位。任务名称只能包含字母、数字、中划线、下划线。 配置在线迁移任务虚拟机资源的VPC、子网和安全组。 请选择与目标Redis相同的VPC,确保迁移资源能访问目标Redis实例。 创建的在线迁移任务会占用一个租户侧IP,即控制台上迁移任务对应的“迁移IP”。如果源端Redis或目标端Redis配置了白名单,需确保配置了迁移IP或关闭白名单限制。 迁移任务所选安全组的“出方向规则”需放通源端Redis和目标端Redis的IP和端口(安全组默认情况下为全部放通,则无需单独放通),以便迁移任务的虚拟机资源能访问源Redis和目标Redis。
-
约束与限制 如果源Redis禁用了SYNC和PSYNC命令,请务必放通后再执行在线迁移,否则会导致在线迁移失败。 在线迁移不支持公网方式直接迁移。 进行在线迁移时,建议将源端实例的参数repl-timeout配置为300秒,client-output-buffer-limit配置为源端实例最大内存的20%。 源端仅支持Redis 3.0及3.0以上的Redis版本。 较早建立的实例如果密码中包含单引号('),则该实例不支持进行在线迁移,建议修改实例密码或使用其他迁移方式。 开启了SSL的目标实例不支持数据迁移,需要关闭目标实例SSL后再进行迁移,开启或关闭SSL的操作请参考配置Redis SSL 数据加密 传输。
-
redis-cli常用命令举例 连接实例: ./redis-cli -h {IP} -p 6379 指定连接某个DB: ./redis-cli -h {IP} -p 6379 -n 10 连接cluster集群实例: ./redis-cli -h {IP} -p 6379 -c 测试时延(原理是发ping命令): ./redis-cli -h {IP} -p 6379 --latency 执行scan扫描匹配指定模式的key: ./redis-cli -h {IP} -p 6379 --scan --pattern '*:12345*'
-
测试步骤 创建Redis缓存实例。 创建3台弹性云服务器(ECS),ECS选择与实例相同可用区、VPC、子网和安全组。 如果是测试单机或主备实例,创建1台ECS即可。 在每台ECS上安装redis-benchmark。可通过以下两种方式安装Redis-server,安装Redis-server的同时,会同步安装benchmark。 安装方法一: 下载redis客户端,此处以redis-6.0.9版本为例。 wget http://download.redis.io/releases/redis-6.0.9.tar.gz 解压客户端压缩包。 tar xzf redis-6.0.9.tar.gz 进入redis-6.0.9的src目录下。 cd redis-6.0.9/src 编译源码。 make 编译完成后,工具一般在redis-x.x.x的src目录下。 查看是否有redis-benchmark可执行文件。 ls 将工具安装到系统中。 make install 安装方法二: 根据ECS的不同的操作系统直接安装Redis-server,下面以ubuntu和CentOS系统为例: ubuntu系统 sudo apt update sudo apt install redis-server CentOS系统 sudo yum install epel-release sudo yum update sudo yum -y install redis 每台ECS上执行测试命令。 redis-benchmark -h {IP} -p {Port} -a {password} -n {nreqs} -r {randomkeys} -c {connect_number} -d {datasize} -t {command} 参数参考值:-c {connect_number}:200,-n {nreqs}:10000000,-r {randomkeys}:1000000,-d {datasize}:32。 -h表示实例的域名连接地址或IP地址。 -p表示实例的端口,默认为6379。 -a表示实例的连接密码,免密连接的实例无需输入-a {password}。 -t表示执行具体测试命令合集。例如只测试set命令时,使用-t set;如果要测试ping、get、set命令,则使用 -t ping,set,get,命令间使用“,”分隔。 -c表示客户端连接数。 -d表示单条数据大小,单位Byte。 -n表示测试包数量。 -r表示使用随机key数量。 不断调整客户端连接数,执行4,得到最大的QPS(Query Per Second,表示每秒处理的读写操作数,单位:次/秒)。 取3台测试ECS得到的每秒操作数总和,即为对应规格的性能数据。 如果测试Redis集群,建议每台测试ECS各开启两个benchmark客户端。 redis-benchmark 测试cluster集群实例时需要加 --cluster 参数,其他实例类型不需要加。 如果想对cluster集群的最大连接数进行性能压测,但是压测到1万连接时程序退出,或者报错 Cannot assign requested address。这说明是测试用的ECS本机性能不足,请先检查自己是否只用了1台ECS进行压测。想要对集群压测,建议准备3台ECS,每台ECS起3个redis-benchmark来测试redis实例的最大连接数。
-
redis-benchmark常用命令举例 单机、主备、读写分离和proxy集群的测试命令: ./redis-benchmark -h {IP或域名} -p 6379 -a {password} --threads {num} -n { nreqs } -r { randomkeys } -c {clients} -d {datasize} -t {command} cluster集群测试命令: ./redis-benchmark -h {IP或域名} -p 6379 -a {password} --threads {num} -n { nreqs } -r { randomkeys } -c {clients} -d {datasize} --cluster -t {command} 测试短连接: ./redis-benchmark -h {IP或域名} -p 6379 -a {password} --threads {num} -n { nreqs } -r { randomkeys } -c {clients} -d {datasize} -k 0 -t {command} 测试空闲连接: ./redis-benchmark -h {IP或域名} -p 6379 -a {pwd} -c {clients} -I
-
迁移原理 Rump使用SCAN来获取keys,用DUMP/RESTORE来get/set值。 SCAN是一个时间复杂度O(1) 的命令,可以快速获得所有的key。DUMP/RESTORE使读/写值独立于关键工作。 以下是Rump的主要特性: 通过SCAN非阻塞式的获取key,避免KEYS命令造成Redis服务阻塞。 支持所有数据类型的迁移。 把SCAN和DUMP/RESTORE操作放在同一个管道中,利用pipeline提升数据迁移过程中的网络效率。 不使用任何临时文件,不占用磁盘空间。 使用带缓冲区的channels,提升源服务器的性能。
-
迁移数据 执行如下命令迁移数据: rump -from {source_redis_address} -to {target_redis_address} {source_redis_address} 源Redis实例地址,格式为:redis://[user:password@]host:port/db,中括号部分为可选项,实例设置了密码访问时需要填写密码,格式遵循RFC 3986规范。注意用户名可为空,但冒号不能省略,例如redis://:mypassword@192.168.0.45:6379/1。 db为数据库编号,不传则默认为0。 {target_redis_address} 目标Redis实例地址,格式与from相同。 以下示例表示将本地Redis数据库的第0个DB的数据迁移到192.168.0.153这台Redis数据库中,其中密码以*替代显示。 [root@ecs ~]# ./rump -from redis://127.0.0.1:6379/0 -to redis://:******@192.168.0.153:6379/0.Sync done.[root@ecs ~]#
-
前提条件 如果您还没有目标Redis,请先创建目标Redis,具体操作请参考购买Redis实例。 如果您已有目标Redis,则不需要重复创建,为了对比迁移前后数据及预留足够的内存空间,建议在数据迁移之前清空目标实例数据,清空操作请参考清空Redis实例数据。如果没有清空实例数据,数据迁移后,目标Redis与源Redis实例重复的数据迁移后会被覆盖,源Redis没有、目标Redis有的数据会保留。 已创建弹性云服务器ECS,创建弹性云服务器的方法,请参见创建弹性云服务器。 ECS请选择与DCS Cluster集群实例相同虚拟私有云、子网和安全组,并且需要绑定弹性公网IP。
-
安装Rump 登录弹性云服务器。 下载Rump的release版本。 以64位Linux操作系统为例,执行以下命令: wget https://github.com/stickermule/rump/releases/download/0.0.3/rump-0.0.3-linux-amd64; 解压缩后,添加可执行权限。 mv rump-0.0.3-linux-amd64 rump;chmod +x rump;
-
测试步骤 创建Redis缓存实例。 创建3台弹性云服务器(ECS),ECS选择与实例相同可用区、VPC、子网和安全组。 如果是测试单机或主备实例,创建1台ECS即可。 在每台ECS上安装memtier_benchmark。以操作系统为CentOS 8.0为例进行安装。 准备工作。 安装编译所需的工具。 yum install -y autoconf yum install -y automake yum install -y make yum install -y gcc-c++ yum install -y git 启用PowerTools存储库的方法。 dnf config-manager --set-enabled PowerTools 安装需要的依赖库。 yum install -y pcre-devel yum install -y zlib-devel yum install -y libmemcached-devel yum install -y openssl-devel 安装libevent库。 yum install -y libevent-devel 下载、编译、安装memtier_benchmark的库。 根目录下创建文件夹,用于下载memtier_benchmark。 mkdir /env 下载memtier_benchmark源码。 cd /env git clone https://github.com/RedisLabs/memtier_benchmark.git 进入源码目录。 cd memtier_benchmark 编译生成可执行文件memtier_benchmark。 autoreconf -ivf ./configure make 将工具安装到系统中。 make install 运行帮助命令查看是否安装成功。如果返回memtier_benchmark的参数说明,表示安装成功。 memtier_benchmark --help 每台ECS上执行测试命令。 memtier_benchmark -s {IP} -n {nreqs} -c {connect_number} -t 4 -d {datasize} 如果实例类型为cluster集群,则命令为memtier_benchmark --cluster-mode -s {IP} -n {nreqs} -c {connect_number} -t 4 -d {datasize} 参数参考值:-c {connect_number}:200,-n {nreqs}:10000000,-d {datasize}:32。 -s表示实例的域名连接地址或IP地址。 -t表示基准测试使用的线程数量 -c表示客户端连接数 -d表示单条数据大小,单位byte -n表示测试包数量 不断调整客户端连接数,执行4,得到最大的QPS(Query Per Second,表示每秒处理的读写操作数,单位:次/秒)。 取3台测试ECS得到的每秒操作数总和,即为对应规格的性能数据。 如果测试Redis集群,建议每台测试ECS各开启两个benchmark客户端。
-
创建OBS桶并上传备份文件 如果上传的源Redis备份文件小于5GB,请执行以下步骤,通过OBS控制台创建OBS桶并上传备份文件。如果上传的源Redis备份文件大于5GB,请参考超过5GB如何上传上传备份文件。 通过OBS控制台,创建OBS桶。 在创建过程中,以下两个参数请按要求设置,其他详细的创建步骤,请参考创建桶章节。 选择“区域”。 OBS桶所在区域必须跟DCS目标Redis实例所在区域相同。 设置“存储类别”,当前支持“标准存储”、“低频访问存储”和“归档存储”。 请不要选择“归档存储”,否则会导致备份文件迁移失败。 在OBS管理控制台的桶列表中,单击1中创建的桶名称,进入“概览”页面。 在左侧导航栏,单击“对象”。 在“对象”页签下,单击“上传对象”,系统弹出“上传对象”对话框。 指定对象的存储类别。 请不要选择“归档存储”,否则会导致备份文件迁移失败。 上传对象。 您可以拖拽本地文件或文件夹至“上传对象”区域框内添加待上传的文件,也可以通过单击“上传对象”区域框内的“添加文件”,选择本地文件添加。 单次最多支持100个文件同时上传,总大小不超过5GB。 图1 上传对象 选择服务端加密方式,支持选择“SSE-KMS”、“SSE-OBS”或“不开启加密”,详情请参见服务端加密。 单击“上传”。
-
前提条件 在迁移之前,请先阅读迁移方案概览,选择正确的迁移方案,了解当前DCS支持的在线迁移能力,选择适当的目标实例。 如果是单机/主备等多DB的源端实例迁移到Proxy集群实例,Proxy集群默认不开启多DB,仅有一个DB0,请先确保源端实例DB0以外的DB是否有数据,如果有,请先参考开启多DB操作开启Proxy集群多DB设置。 如果是单机/主备等多DB的源端实例迁移到Cluster集群实例,Cluster集群不支持多DB,仅有一个DB0,请先确保源端实例DB0以外的DB是否有数据,如果有,请将数据转存到DB0,否则会出现迁移失败,将数据转存到DB0的操作请参考使用Rump在线迁移。 准备源Redis的备份文件,备份文件的格式必须为.aof、.rdb、.zip或.tar.gz。 如果您还没有目标Redis,请先创建目标Redis,具体操作请参考购买Redis实例。 如果您已有目标Redis,则不需要重复创建,为了对比迁移前后数据及预留足够的内存空间,建议在数据迁移之前清空目标实例数据,清空操作请参考清空Redis实例数据。如果没有清空实例数据,数据迁移后,目标Redis与源Redis实例重复的数据迁移后会被覆盖,源Redis没有、目标Redis有的数据会保留。
共100000条
- 1
- ...
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 68
- 69
- 70
- 71
- 72
- 73
- 74
- 75
- 76
- 77
- 78
- 79
- 80
- 81
- 82
- 83
- 84
- 85
- 86
- 87
- 88
- 89
- 90
- 91
- 92
- 93
- 94
- 95
- 96
- 97
- 98
- 99
- 100
- 101
- 102
- 103
- 104
- 105
- 106
- 107
- 108
- 109
- 110
- 111
- 112
- 113
- 114
- 115
- 116
- 117
- 118
- 119
- 120
- 121
- 122
- 123
- 124
- 125
- 126
- 127
- 128
- 129
- 130
- 131
- 132
- 133
- 134
- 135
- 136
- 137
- 138
- 139
- 140
- 141
- 142
- 143
- 144
- 145
- 146
- 147
- 148
- 149
- 150
- 151
- 152
- 153
- 154
- 155
- 156
- 157
- 158
- 159
- 160
- 161
- 162
- 163
- 164
- 165
- 166
- 167
- 168
- 169
- 170
- 171
- 172
- 173
- 174
- 175
- 176
- 177
- 178
- 179
- 180
- 181
- 182
- 183
- 184
- 185
- 186
- 187
- 188
- 189
- 190
- 191
- 192
- 193
- 194
- 195
- 196
- 197
- 198
- 199
- 200
- 201
- 202
- 203
- 204
- 205
- 206
- 207
- 208
- 209
- 210
- 211
- 212
- 213
- 214
- 215
- 216
- 217
- 218
- 219
- 220
- 221
- 222
- 223
- 224
- 225
- 226
- 227
- 228
- 229
- 230
- 231
- 232
- 233
- 234
- 235
- 236
- 237
- 238
- 239
- 240
- 241
- 242
- 243
- 244
- 245
- 246
- 247
- 248
- 249
- 250
- 251
- 252
- 253
- 254
- 255
- 256
- 257
- 258
- 259
- 260
- 261
- 262
- 263
- 264
- 265
- 266
- 267
- 268
- 269
- 270
- 271
- 272
- 273
- 274
- 275
- 276
- 277
- 278
- 279
- 280
- 281
- 282
- 283
- 284
- 285
- 286
- 287
- 288
- 289
- 290
- 291
- 292
- 293
- 294
- 295
- 296
- 297
- 298
- 299
- 300
- 301
- 302
- 303
- 304
- 305
- 306
- 307
- 308
- 309
- 310
- 311
- 312
- 313
- 314
- 315
- 316
- 317
- 318
- 319
- 320
- 321
- 322
- 323
- 324
- 325
- 326
- 327
- 328
- 329
- 330
- 331
- 332
- 333
- 334
- 335
- 336
- 337
- 338
- 339
- 340
- 341
- 342
- 343
- 344
- 345
- 346
- 347
- 348
- 349
- 350
- 351
- 352
- 353
- 354
- 355
- 356
- 357
- 358
- 359
- 360
- 361
- 362
- 363
- 364
- 365
- 366
- 367
- 368
- 369
- 370
- 371
- 372
- 373
- 374
- 375
- 376
- 377
- 378
- 379
- 380
- 381
- 382
- 383
- 384
- 385
- 386
- 387
- 388
- 389
- 390
- 391
- 392
- 393
- 394
- 395
- 396
- 397
- 398
- 399
- 400
- 401
- 402
- 403
- 404
- 405
- 406
- 407
- 408
- 409
- 410
- 411
- 412
- 413
- 414
- 415
- 416
- 417
- 418
- 419
- 420
- 421
- 422
- 423
- 424
- 425
- 426
- 427
- 428
- 429
- 430
- 431
- 432
- 433
- 434
- 435
- 436
- 437
- 438
- 439
- 440
- 441
- 442
- 443
- 444
- 445
- 446
- 447
- 448
- 449
- 450
- 451
- 452
- 453
- 454
- 455
- 456
- 457
- 458
- 459
- 460
- 461
- 462
- 463
- 464
- 465
- 466
- 467
- 468
- 469
- 470
- 471
- 472
- 473
- 474
- 475
- 476
- 477
- 478
- 479
- 480
- 481
- 482
- 483
- 484
- 485
- 486
- 487
- 488
- 489
- 490
- 491
- 492
- 493
- 494
- 495
- 496
- 497
- 498
- 499
- 500
- 501
- 502
- 503
- 504
- 505
- 506
- 507
- 508
- 509
- 510
- 511
- 512
- 513
- 514
- 515
- 516
- 517
- 518
- 519
- 520
- 521
- 522
- 523
- 524
- 525
- 526
- 527
- 528
- 529
- 530
- 531
- 532
- 533
- 534
- 535
- 536
- 537
- 538
- 539
- 540
- 541
- 542
- 543
- 544
- 545
- 546
- 547
- 548
- 549
- 550
- 551
- 552
- 553
- 554
- 555
- 556
- 557
- 558
- 559
- 560
- 561
- 562
- 563
- 564
- 565
- 566
- 567
- 568
- 569
- 570
- 571
- 572
- 573
- 574
- 575
- 576
- 577
- 578
- 579
- 580
- 581
- 582
- 583
- 584
- 585
- 586
- 587
- 588
- 589
- 590
- 591
- 592
- 593
- 594
- 595
- 596
- 597
- 598
- 599
- 600
- 601
- 602
- 603
- 604
- 605
- 606
- 607
- 608
- 609
- 610
- 611
- 612
- 613
- 614
- 615
- 616
- 617
- 618
- 619
- 620
- 621
- 622
- 623
- 624
- 625
- 626
- 627
- 628
- 629
- 630
- 631
- 632
- 633
- 634
- 635
- 636
- 637
- 638
- 639
- 640
- 641
- 642
- 643
- 644
- 645
- 646
- 647
- 648
- 649
- 650
- 651
- 652
- 653
- 654
- 655
- 656
- 657
- 658
- 659
- 660
- 661
- 662
- 663
- 664
- 665
- 666
- 667
- 668
- 669
- 670
- 671
- 672
- 673
- 674
- 675
- 676
- 677
- 678
- 679
- 680
- 681
- 682
- 683
- 684
- 685
- 686
- 687
- 688
- 689
- 690
- 691
- 692
- 693
- 694
- 695
- 696
- 697
- 698
- 699
- 700
- 701
- 702
- 703
- 704
- 705
- 706
- 707
- 708
- 709
- 710
- 711
- 712
- 713
- 714
- 715
- 716
- 717
- 718
- 719
- 720
- 721
- 722
- 723
- 724
- 725
- 726
- 727
- 728
- 729
- 730
- 731
- 732
- 733
- 734
- 735
- 736
- 737
- 738
- 739
- 740
- 741
- 742
- 743
- 744
- 745
- 746
- 747
- 748
- 749
- 750
- 751
- 752
- 753
- 754
- 755
- 756
- 757
- 758
- 759
- 760
- 761
- 762
- 763
- 764
- 765
- 766
- 767
- 768
- 769
- 770
- 771
- 772
- 773
- 774
- 775
- 776
- 777
- 778
- 779
- 780
- 781
- 782
- 783
- 784
- 785
- 786
- 787
- 788
- 789
- 790
- 791
- 792
- 793
- 794
- 795
- 796
- 797
- 798
- 799
- 800
- 801
- 802
- 803
- 804
- 805
- 806
- 807
- 808
- 809
- 810
- 811
- 812
- 813
- 814
- 815
- 816
- 817
- 818
- 819
- 820
- 821
- 822
- 823
- 824
- 825
- 826
- 827
- 828
- 829
- 830
- 831
- 832
- 833
- 834
- 835
- 836
- 837
- 838
- 839
- 840
- 841
- 842
- 843
- 844
- 845
- 846
- 847
- 848
- 849
- 850
- 851
- 852
- 853
- 854
- 855
- 856
- 857
- 858
- 859
- 860
- 861
- 862
- 863
- 864
- 865
- 866
- 867
- 868
- 869
- 870
- 871
- 872
- 873
- 874
- 875
- 876
- 877
- 878
- 879
- 880
- 881
- 882
- 883
- 884
- 885
- 886
- 887
- 888
- 889
- 890
- 891
- 892
- 893
- 894
- 895
- 896
- 897
- 898
- 899
- 900
- 901
- 902
- 903
- 904
- 905
- 906
- 907
- 908
- 909
- 910
- 911
- 912
- 913
- 914
- 915
- 916
- 917
- 918
- 919
- 920
- 921
- 922
- 923
- 924
- 925
- 926
- 927
- 928
- 929
- 930
- 931
- 932
- 933
- 934
- 935
- 936
- 937
- 938
- 939
- 940
- 941
- 942
- 943
- 944
- 945
- 946
- 947
- 948
- 949
- 950
- 951
- 952
- 953
- 954
- 955
- 956
- 957
- 958
- 959
- 960
- 961
- 962
- 963
- 964
- 965
- 966
- 967
- 968
- 969
- 970
- 971
- 972
- 973
- 974
- 975
- 976
- 977
- 978
- 979
- 980
- 981
- 982
- 983
- 984
- 985
- 986
- 987
- 988
- 989
- 990
- 991
- 992
- 993
- 994
- 995
- 996
- 997
- 998
- 999
- 1000
- 1001
- 1002
- 1003
- 1004
- 1005
- 1006
- 1007
- 1008
- 1009
- 1010
- 1011
- 1012
- 1013
- 1014
- 1015
- 1016
- 1017
- 1018
- 1019
- 1020
- 1021
- 1022
- 1023
- 1024
- 1025
- 1026
- 1027
- 1028
- 1029
- 1030
- 1031
- 1032
- 1033
- 1034
- 1035
- 1036
- 1037
- 1038
- 1039
- 1040
- 1041
- 1042
- 1043
- 1044
- 1045
- 1046
- 1047
- 1048
- 1049
- 1050
- 1051
- 1052
- 1053
- 1054
- 1055
- 1056
- 1057
- 1058
- 1059
- 1060
- 1061
- 1062
- 1063
- 1064
- 1065
- 1066
- 1067
- 1068
- 1069
- 1070
- 1071
- 1072
- 1073
- 1074
- 1075
- 1076
- 1077
- 1078
- 1079
- 1080
- 1081
- 1082
- 1083
- 1084
- 1085
- 1086
- 1087
- 1088
- 1089
- 1090
- 1091
- 1092
- 1093
- 1094
- 1095
- 1096
- 1097
- 1098
- 1099
- 1100
- 1101
- 1102
- 1103
- 1104
- 1105
- 1106
- 1107
- 1108
- 1109
- 1110
- 1111
- 1112
- 1113
- 1114
- 1115
- 1116
- 1117
- 1118
- 1119
- 1120
- 1121
- 1122
- 1123
- 1124
- 1125
- 1126
- 1127
- 1128
- 1129
- 1130
- 1131
- 1132
- 1133
- 1134
- 1135
- 1136
- 1137
- 1138
- 1139
- 1140
- 1141
- 1142
- 1143
- 1144
- 1145
- 1146
- 1147
- 1148
- 1149
- 1150
- 1151
- 1152
- 1153
- 1154
- 1155
- 1156
- 1157
- 1158
- 1159
- 1160
- 1161
- 1162
- 1163
- 1164
- 1165
- 1166
- 1167
- 1168
- 1169
- 1170
- 1171
- 1172
- 1173
- 1174
- 1175
- 1176
- 1177
- 1178
- 1179
- 1180
- 1181
- 1182
- 1183
- 1184
- 1185
- 1186
- 1187
- 1188
- 1189
- 1190
- 1191
- 1192
- 1193
- 1194
- 1195
- 1196
- 1197
- 1198
- 1199
- 1200
- 1201
- 1202
- 1203
- 1204
- 1205
- 1206
- 1207
- 1208
- 1209
- 1210
- 1211
- 1212
- 1213
- 1214
- 1215
- 1216
- 1217
- 1218
- 1219
- 1220
- 1221
- 1222
- 1223
- 1224
- 1225
- 1226
- 1227
- 1228
- 1229
- 1230
- 1231
- 1232
- 1233
- 1234
- 1235
- 1236
- 1237
- 1238
- 1239
- 1240
- 1241
- 1242
- 1243
- 1244
- 1245
- 1246
- 1247
- 1248
- 1249
- 1250
- 1251
- 1252
- 1253
- 1254
- 1255
- 1256
- 1257
- 1258
- 1259
- 1260
- 1261
- 1262
- 1263
- 1264
- 1265
- 1266
- 1267
- 1268
- 1269
- 1270
- 1271
- 1272
- 1273
- 1274
- 1275
- 1276
- 1277
- 1278
- 1279
- 1280
- 1281
- 1282
- 1283
- 1284
- 1285
- 1286
- 1287
- 1288
- 1289
- 1290
- 1291
- 1292
- 1293
- 1294
- 1295
- 1296
- 1297
- 1298
- 1299
- 1300
- 1301
- 1302
- 1303
- 1304
- 1305
- 1306
- 1307
- 1308
- 1309
- 1310
- 1311
- 1312
- 1313
- 1314
- 1315
- 1316
- 1317
- 1318
- 1319
- 1320
- 1321
- 1322
- 1323
- 1324
- 1325
- 1326
- 1327
- 1328
- 1329
- 1330
- 1331
- 1332
- 1333
- 1334
- 1335
- 1336
- 1337
- 1338
- 1339
- 1340
- 1341
- 1342
- 1343
- 1344
- 1345
- 1346
- 1347
- 1348
- 1349
- 1350
- 1351
- 1352
- 1353
- 1354
- 1355
- 1356
- 1357
- 1358
- 1359
- 1360
- 1361
- 1362
- 1363
- 1364
- 1365
- 1366
- 1367
- 1368
- 1369
- 1370
- 1371
- 1372
- 1373
- 1374
- 1375
- 1376
- 1377
- 1378
- 1379
- 1380
- 1381
- 1382
- 1383
- 1384
- 1385
- 1386
- 1387
- 1388
- 1389
- 1390
- 1391
- 1392
- 1393
- 1394
- 1395
- 1396
- 1397
- 1398
- 1399
- 1400
- 1401
- 1402
- 1403
- 1404
- 1405
- 1406
- 1407
- 1408
- 1409
- 1410
- 1411
- 1412
- 1413
- 1414
- 1415
- 1416
- 1417
- 1418
- 1419
- 1420
- 1421
- 1422
- 1423
- 1424
- 1425
- 1426
- 1427
- 1428
- 1429
- 1430
- 1431
- 1432
- 1433
- 1434
- 1435
- 1436
- 1437
- 1438
- 1439
- 1440
- 1441
- 1442
- 1443
- 1444
- 1445
- 1446
- 1447
- 1448
- 1449
- 1450
- 1451
- 1452
- 1453
- 1454
- 1455
- 1456
- 1457
- 1458
- 1459
- 1460
- 1461
- 1462
- 1463
- 1464
- 1465
- 1466
- 1467
- 1468
- 1469
- 1470
- 1471
- 1472
- 1473
- 1474
- 1475
- 1476
- 1477
- 1478
- 1479
- 1480
- 1481
- 1482
- 1483
- 1484
- 1485
- 1486
- 1487
- 1488
- 1489
- 1490
- 1491
- 1492
- 1493
- 1494
- 1495
- 1496
- 1497
- 1498
- 1499
- 1500
- 1501
- 1502
- 1503
- 1504
- 1505
- 1506
- 1507
- 1508
- 1509
- 1510
- 1511
- 1512
- 1513
- 1514
- 1515
- 1516
- 1517
- 1518
- 1519
- 1520
- 1521
- 1522
- 1523
- 1524
- 1525
- 1526
- 1527
- 1528
- 1529
- 1530
- 1531
- 1532
- 1533
- 1534
- 1535
- 1536
- 1537
- 1538
- 1539
- 1540
- 1541
- 1542
- 1543
- 1544
- 1545
- 1546
- 1547
- 1548
- 1549
- 1550
- 1551
- 1552
- 1553
- 1554
- 1555
- 1556
- 1557
- 1558
- 1559
- 1560
- 1561
- 1562
- 1563
- 1564
- 1565
- 1566
- 1567
- 1568
- 1569
- 1570
- 1571
- 1572
- 1573
- 1574
- 1575
- 1576
- 1577
- 1578
- 1579
- 1580
- 1581
- 1582
- 1583
- 1584
- 1585
- 1586
- 1587
- 1588
- 1589
- 1590
- 1591
- 1592
- 1593
- 1594
- 1595
- 1596
- 1597
- 1598
- 1599
- 1600
- 1601
- 1602
- 1603
- 1604
- 1605
- 1606
- 1607
- 1608
- 1609
- 1610
- 1611
- 1612
- 1613
- 1614
- 1615
- 1616
- 1617
- 1618
- 1619
- 1620
- 1621
- 1622
- 1623
- 1624
- 1625
- 1626
- 1627
- 1628
- 1629
- 1630
- 1631
- 1632
- 1633
- 1634
- 1635
- 1636
- 1637
- 1638
- 1639
- 1640
- 1641
- 1642
- 1643
- 1644
- 1645
- 1646
- 1647
- 1648
- 1649
- 1650
- 1651
- 1652
- 1653
- 1654
- 1655
- 1656
- 1657
- 1658
- 1659
- 1660
- 1661
- 1662
- 1663
- 1664
- 1665
- 1666
- 1667
- 1668
- 1669
- 1670
- 1671
- 1672
- 1673
- 1674
- 1675
- 1676
- 1677
- 1678
- 1679
- 1680
- 1681
- 1682
- 1683
- 1684
- 1685
- 1686
- 1687
- 1688
- 1689
- 1690
- 1691
- 1692
- 1693
- 1694
- 1695
- 1696
- 1697
- 1698
- 1699
- 1700
- 1701
- 1702
- 1703
- 1704
- 1705
- 1706
- 1707
- 1708
- 1709
- 1710
- 1711
- 1712
- 1713
- 1714
- 1715
- 1716
- 1717
- 1718
- 1719
- 1720
- 1721
- 1722
- 1723
- 1724
- 1725
- 1726
- 1727
- 1728
- 1729
- 1730
- 1731
- 1732
- 1733
- 1734
- 1735
- 1736
- 1737
- 1738
- 1739
- 1740
- 1741
- 1742
- 1743
- 1744
- 1745
- 1746
- 1747
- 1748
- 1749
- 1750
- 1751
- 1752
- 1753
- 1754
- 1755
- 1756
- 1757
- 1758
- 1759
- 1760
- 1761
- 1762
- 1763
- 1764
- 1765
- 1766
- 1767
- 1768
- 1769
- 1770
- 1771
- 1772
- 1773
- 1774
- 1775
- 1776
- 1777
- 1778
- 1779
- 1780
- 1781
- 1782
- 1783
- 1784
- 1785
- 1786
- 1787
- 1788
- 1789
- 1790
- 1791
- 1792
- 1793
- 1794
- 1795
- 1796
- 1797
- 1798
- 1799
- 1800
- 1801
- 1802
- 1803
- 1804
- 1805
- 1806
- 1807
- 1808
- 1809
- 1810
- 1811
- 1812
- 1813
- 1814
- 1815
- 1816
- 1817
- 1818
- 1819
- 1820
- 1821
- 1822
- 1823
- 1824
- 1825
- 1826
- 1827
- 1828
- 1829
- 1830
- 1831
- 1832
- 1833
- 1834
- 1835
- 1836
- 1837
- 1838
- 1839
- 1840
- 1841
- 1842
- 1843
- 1844
- 1845
- 1846
- 1847
- 1848
- 1849
- 1850
- 1851
- 1852
- 1853
- 1854
- 1855
- 1856
- 1857
- 1858
- 1859
- 1860
- 1861
- 1862
- 1863
- 1864
- 1865
- 1866
- 1867
- 1868
- 1869
- 1870
- 1871
- 1872
- 1873
- 1874
- 1875
- 1876
- 1877
- 1878
- 1879
- 1880
- 1881
- 1882
- 1883
- 1884
- 1885
- 1886
- 1887
- 1888
- 1889
- 1890
- 1891
- 1892
- 1893
- 1894
- 1895
- 1896
- 1897
- 1898
- 1899
- 1900
- 1901
- 1902
- 1903
- 1904
- 1905
- 1906
- 1907
- 1908
- 1909
- 1910
- 1911
- 1912
- 1913
- 1914
- 1915
- 1916
- 1917
- 1918
- 1919
- 1920
- 1921
- 1922
- 1923
- 1924
- 1925
- 1926
- 1927
- 1928
- 1929
- 1930
- 1931
- 1932
- 1933
- 1934
- 1935
- 1936
- 1937
- 1938
- 1939
- 1940
- 1941
- 1942
- 1943
- 1944
- 1945
- 1946
- 1947
- 1948
- 1949
- 1950
- 1951
- 1952
- 1953
- 1954
- 1955
- 1956
- 1957
- 1958
- 1959
- 1960
- 1961
- 1962
- 1963
- 1964
- 1965
- 1966
- 1967
- 1968
- 1969
- 1970
- 1971
- 1972
- 1973
- 1974
- 1975
- 1976
- 1977
- 1978
- 1979
- 1980
- 1981
- 1982
- 1983
- 1984
- 1985
- 1986
- 1987
- 1988
- 1989
- 1990
- 1991
- 1992
- 1993
- 1994
- 1995
- 1996
- 1997
- 1998
- 1999
- 2000
- 2001
- 2002
- 2003
- 2004
- 2005
- 2006
- 2007
- 2008
- 2009
- 2010
- 2011
- 2012
- 2013
- 2014
- 2015
- 2016
- 2017
- 2018
- 2019
- 2020
- 2021
- 2022
- 2023
- 2024
- 2025
- 2026
- 2027
- 2028
- 2029
- 2030
- 2031
- 2032
- 2033
- 2034
- 2035
- 2036
- 2037
- 2038
- 2039
- 2040
- 2041
- 2042
- 2043
- 2044
- 2045
- 2046
- 2047
- 2048
- 2049
- 2050
- 2051
- 2052
- 2053
- 2054
- 2055
- 2056
- 2057
- 2058
- 2059
- 2060
- 2061
- 2062
- 2063
- 2064
- 2065
- 2066
- 2067
- 2068
- 2069
- 2070
- 2071
- 2072
- 2073
- 2074
- 2075
- 2076
- 2077
- 2078
- 2079
- 2080
- 2081
- 2082
- 2083
- 2084
- 2085
- 2086
- 2087
- 2088
- 2089
- 2090
- 2091
- 2092
- 2093
- 2094
- 2095
- 2096
- 2097
- 2098
- 2099
- 2100
- 2101
- 2102
- 2103
- 2104
- 2105
- 2106
- 2107
- 2108
- 2109
- 2110
- 2111
- 2112
- 2113
- 2114
- 2115
- 2116
- 2117
- 2118
- 2119
- 2120
- 2121
- 2122
- 2123
- 2124
- 2125
- 2126
- 2127
- 2128
- 2129
- 2130
- 2131
- 2132
- 2133
- 2134
- 2135
- 2136
- 2137
- 2138
- 2139
- 2140
- 2141
- 2142
- 2143
- 2144
- 2145
- 2146
- 2147
- 2148
- 2149
- 2150
- 2151
- 2152
- 2153
- 2154
- 2155
- 2156
- 2157
- 2158
- 2159
- 2160
- 2161
- 2162
- 2163
- 2164
- 2165
- 2166
- 2167
- 2168
- 2169
- 2170
- 2171
- 2172
- 2173
- 2174
- 2175
- 2176
- 2177
- 2178
- 2179
- 2180
- 2181
- 2182
- 2183
- 2184
- 2185
- 2186
- 2187
- 2188
- 2189
- 2190
- 2191
- 2192
- 2193
- 2194
- 2195
- 2196
- 2197
- 2198
- 2199
- 2200
- 2201
- 2202
- 2203
- 2204
- 2205
- 2206
- 2207
- 2208
- 2209
- 2210
- 2211
- 2212
- 2213
- 2214
- 2215
- 2216
- 2217
- 2218
- 2219
- 2220
- 2221
- 2222
- 2223
- 2224
- 2225
- 2226
- 2227
- 2228
- 2229
- 2230
- 2231
- 2232
- 2233
- 2234
- 2235
- 2236
- 2237
- 2238
- 2239
- 2240
- 2241
- 2242
- 2243
- 2244
- 2245
- 2246
- 2247
- 2248
- 2249
- 2250
- 2251
- 2252
- 2253
- 2254
- 2255
- 2256
- 2257
- 2258
- 2259
- 2260
- 2261
- 2262
- 2263
- 2264
- 2265
- 2266
- 2267
- 2268
- 2269
- 2270
- 2271
- 2272
- 2273
- 2274
- 2275
- 2276
- 2277
- 2278
- 2279
- 2280
- 2281
- 2282
- 2283
- 2284
- 2285
- 2286
- 2287
- 2288
- 2289
- 2290
- 2291
- 2292
- 2293
- 2294
- 2295
- 2296
- 2297
- 2298
- 2299
- 2300
- 2301
- 2302
- 2303
- 2304
- 2305
- 2306
- 2307
- 2308
- 2309
- 2310
- 2311
- 2312
- 2313
- 2314
- 2315
- 2316
- 2317
- 2318
- 2319
- 2320
- 2321
- 2322
- 2323
- 2324
- 2325
- ...
- 2326
- 2327
- 2328
- 2329
- 2330
- 2331
- 2332
- 2333
- 2334
- 2335
- 2336
- 2337
- 2338
- 2339
- 2340
- 2341
- 2342
- 2343
- 2344
- 2345
- 2346
- 2347
- 2348
- 2349
- 2350
- 2351
- 2352
- 2353
- 2354
- 2355
- 2356
- 2357
- 2358
- 2359
- 2360
- 2361
- 2362
- 2363
- 2364
- 2365
- 2366
- 2367
- 2368
- 2369
- 2370
- 2371
- 2372
- 2373
- 2374
- 2375
- 2376
- 2377
- 2378
- 2379
- 2380
- 2381
- 2382
- 2383
- 2384
- 2385
- 2386
- 2387
- 2388
- 2389
- 2390
- 2391
- 2392
- 2393
- 2394
- 2395
- 2396
- 2397
- 2398
- 2399
- 2400
- 2401
- 2402
- 2403
- 2404
- 2405
- 2406
- 2407
- 2408
- 2409
- 2410
- 2411
- 2412
- 2413
- 2414
- 2415
- 2416
- 2417
- 2418
- 2419
- 2420
- 2421
- 2422
- 2423
- 2424
- 2425
- 2426
- 2427
- 2428
- 2429
- 2430
- 2431
- 2432
- 2433
- 2434
- 2435
- 2436
- 2437
- 2438
- 2439
- 2440
- 2441
- 2442
- 2443
- 2444
- 2445
- 2446
- 2447
- 2448
- 2449
- 2450
- 2451
- 2452
- 2453
- 2454
- 2455
- 2456
- 2457
- 2458
- 2459
- 2460
- 2461
- 2462
- 2463
- 2464
- 2465
- 2466
- 2467
- 2468
- 2469
- 2470
- 2471
- 2472
- 2473
- 2474
- 2475
- 2476
- 2477
- 2478
- 2479
- 2480
- 2481
- 2482
- 2483
- 2484
- 2485
- 2486
- 2487
- 2488
- 2489
- 2490
- 2491
- 2492
- 2493
- 2494
- 2495
- 2496
- 2497
- 2498
- 2499
- 2500
- 2501
- 2502
- 2503
- 2504
- 2505
- 2506
- 2507
- 2508
- 2509
- 2510
- 2511
- 2512
- 2513
- 2514
- 2515
- 2516
- 2517
- 2518
- 2519
- 2520
- 2521
- 2522
- 2523
- 2524
- 2525
- 2526
- 2527
- 2528
- 2529
- 2530
- 2531
- 2532
- 2533
- 2534
- 2535
- 2536
- 2537
- 2538
- 2539
- 2540
- 2541
- 2542
- 2543
- 2544
- 2545
- 2546
- 2547
- 2548
- 2549
- 2550
- 2551
- 2552
- 2553
- 2554
- 2555
- 2556
- 2557
- 2558
- 2559
- 2560
- 2561
- 2562
- 2563
- 2564
- 2565
- 2566
- 2567
- 2568
- 2569
- 2570
- 2571
- 2572
- 2573
- 2574
- 2575
- 2576
- 2577
- 2578
- 2579
- 2580
- 2581
- 2582
- 2583
- 2584
- 2585
- 2586
- 2587
- 2588
- 2589
- 2590
- 2591
- 2592
- 2593
- 2594
- 2595
- 2596
- 2597
- 2598
- 2599
- 2600
- 2601
- 2602
- 2603
- 2604
- 2605
- 2606
- 2607
- 2608
- 2609
- 2610
- 2611
- 2612
- 2613
- 2614
- 2615
- 2616
- 2617
- 2618
- 2619
- 2620
- 2621
- 2622
- 2623
- 2624
- 2625
- 2626
- 2627
- 2628
- 2629
- 2630
- 2631
- 2632
- 2633
- 2634
- 2635
- 2636
- 2637
- 2638
- 2639
- 2640
- 2641
- 2642
- 2643
- 2644
- 2645
- 2646
- 2647
- 2648
- 2649
- 2650
- 2651
- 2652
- 2653
- 2654
- 2655
- 2656
- 2657
- 2658
- 2659
- 2660
- 2661
- 2662
- 2663
- 2664
- 2665
- 2666
- 2667
- 2668
- 2669
- 2670
- 2671
- 2672
- 2673
- 2674
- 2675
- 2676
- 2677
- 2678
- 2679
- 2680
- 2681
- 2682
- 2683
- 2684
- 2685
- 2686
- 2687
- 2688
- 2689
- 2690
- 2691
- 2692
- 2693
- 2694
- 2695
- 2696
- 2697
- 2698
- 2699
- 2700
- 2701
- 2702
- 2703
- 2704
- 2705
- 2706
- 2707
- 2708
- 2709
- 2710
- 2711
- 2712
- 2713
- 2714
- 2715
- 2716
- 2717
- 2718
- 2719
- 2720
- 2721
- 2722
- 2723
- 2724
- 2725
- 2726
- 2727
- 2728
- 2729
- 2730
- 2731
- 2732
- 2733
- 2734
- 2735
- 2736
- 2737
- 2738
- 2739
- 2740
- 2741
- 2742
- 2743
- 2744
- 2745
- 2746
- 2747
- 2748
- 2749
- 2750
- 2751
- 2752
- 2753
- 2754
- 2755
- 2756
- 2757
- 2758
- 2759
- 2760
- 2761
- 2762
- 2763
- 2764
- 2765
- 2766
- 2767
- 2768
- 2769
- 2770
- 2771
- 2772
- 2773
- 2774
- 2775
- 2776
- 2777
- 2778
- 2779
- 2780
- 2781
- 2782
- 2783
- 2784
- 2785
- 2786
- 2787
- 2788
- 2789
- 2790
- 2791
- 2792
- 2793
- 2794
- 2795
- 2796
- 2797
- 2798
- 2799
- 2800
- 2801
- 2802
- 2803
- 2804
- 2805
- 2806
- 2807
- 2808
- 2809
- 2810
- 2811
- 2812
- 2813
- 2814
- 2815
- 2816
- 2817
- 2818
- 2819
- 2820
- 2821
- 2822
- 2823
- 2824
- 2825
- 2826
- 2827
- 2828
- 2829
- 2830
- 2831
- 2832
- 2833
- 2834
- 2835
- 2836
- 2837
- 2838
- 2839
- 2840
- 2841
- 2842
- 2843
- 2844
- 2845
- 2846
- 2847
- 2848
- 2849
- 2850
- 2851
- 2852
- 2853
- 2854
- 2855
- 2856
- 2857
- 2858
- 2859
- 2860
- 2861
- 2862
- 2863
- 2864
- 2865
- 2866
- 2867
- 2868
- 2869
- 2870
- 2871
- 2872
- 2873
- 2874
- 2875
- 2876
- 2877
- 2878
- 2879
- 2880
- 2881
- 2882
- 2883
- 2884
- 2885
- 2886
- 2887
- 2888
- 2889
- 2890
- 2891
- 2892
- 2893
- 2894
- 2895
- 2896
- 2897
- 2898
- 2899
- 2900
- 2901
- 2902
- 2903
- 2904
- 2905
- 2906
- 2907
- 2908
- 2909
- 2910
- 2911
- 2912
- 2913
- 2914
- 2915
- 2916
- 2917
- 2918
- 2919
- 2920
- 2921
- 2922
- 2923
- 2924
- 2925
- 2926
- 2927
- 2928
- 2929
- 2930
- 2931
- 2932
- 2933
- 2934
- 2935
- 2936
- 2937
- 2938
- 2939
- 2940
- 2941
- 2942
- 2943
- 2944
- 2945
- 2946
- 2947
- 2948
- 2949
- 2950
- 2951
- 2952
- 2953
- 2954
- 2955
- 2956
- 2957
- 2958
- 2959
- 2960
- 2961
- 2962
- 2963
- 2964
- 2965
- 2966
- 2967
- 2968
- 2969
- 2970
- 2971
- 2972
- 2973
- 2974
- 2975
- 2976
- 2977
- 2978
- 2979
- 2980
- 2981
- 2982
- 2983
- 2984
- 2985
- 2986
- 2987
- 2988
- 2989
- 2990
- 2991
- 2992
- 2993
- 2994
- 2995
- 2996
- 2997
- 2998
- 2999
- 3000
- 3001
- 3002
- 3003
- 3004
- 3005
- 3006
- 3007
- 3008
- 3009
- 3010
- 3011
- 3012
- 3013
- 3014
- 3015
- 3016
- 3017
- 3018
- 3019
- 3020
- 3021
- 3022
- 3023
- 3024
- 3025
- 3026
- 3027
- 3028
- 3029
- 3030
- 3031
- 3032
- 3033
- 3034
- 3035
- 3036
- 3037
- 3038
- 3039
- 3040
- 3041
- 3042
- 3043
- 3044
- 3045
- 3046
- 3047
- 3048
- 3049
- 3050
- 3051
- 3052
- 3053
- 3054
- 3055
- 3056
- 3057
- 3058
- 3059
- 3060
- 3061
- 3062
- 3063
- 3064
- 3065
- 3066
- 3067
- 3068
- 3069
- 3070
- 3071
- 3072
- 3073
- 3074
- 3075
- 3076
- 3077
- 3078
- 3079
- 3080
- 3081
- 3082
- 3083
- 3084
- 3085
- 3086
- 3087
- 3088
- 3089
- 3090
- 3091
- 3092
- 3093
- 3094
- 3095
- 3096
- 3097
- 3098
- 3099
- 3100
- 3101
- 3102
- 3103
- 3104
- 3105
- 3106
- 3107
- 3108
- 3109
- 3110
- 3111
- 3112
- 3113
- 3114
- 3115
- 3116
- 3117
- 3118
- 3119
- 3120
- 3121
- 3122
- 3123
- 3124
- 3125
- 3126
- 3127
- 3128
- 3129
- 3130
- 3131
- 3132
- 3133
- 3134
- 3135
- 3136
- 3137
- 3138
- 3139
- 3140
- 3141
- 3142
- 3143
- 3144
- 3145
- 3146
- 3147
- 3148
- 3149
- 3150
- 3151
- 3152
- 3153
- 3154
- 3155
- 3156
- 3157
- 3158
- 3159
- 3160
- 3161
- 3162
- 3163
- 3164
- 3165
- 3166
- 3167
- 3168
- 3169
- 3170
- 3171
- 3172
- 3173
- 3174
- 3175
- 3176
- 3177
- 3178
- 3179
- 3180
- 3181
- 3182
- 3183
- 3184
- 3185
- 3186
- 3187
- 3188
- 3189
- 3190
- 3191
- 3192
- 3193
- 3194
- 3195
- 3196
- 3197
- 3198
- 3199
- 3200
- 3201
- 3202
- 3203
- 3204
- 3205
- 3206
- 3207
- 3208
- 3209
- 3210
- 3211
- 3212
- 3213
- 3214
- 3215
- 3216
- 3217
- 3218
- 3219
- 3220
- 3221
- 3222
- 3223
- 3224
- 3225
- 3226
- 3227
- 3228
- 3229
- 3230
- 3231
- 3232
- 3233
- 3234
- 3235
- 3236
- 3237
- 3238
- 3239
- 3240
- 3241
- 3242
- 3243
- 3244
- 3245
- 3246
- 3247
- 3248
- 3249
- 3250
- 3251
- 3252
- 3253
- 3254
- 3255
- 3256
- 3257
- 3258
- 3259
- 3260
- 3261
- 3262
- 3263
- 3264
- 3265
- 3266
- 3267
- 3268
- 3269
- 3270
- 3271
- 3272
- 3273
- 3274
- 3275
- 3276
- 3277
- 3278
- 3279
- 3280
- 3281
- 3282
- 3283
- 3284
- 3285
- 3286
- 3287
- 3288
- 3289
- 3290
- 3291
- 3292
- 3293
- 3294
- 3295
- 3296
- 3297
- 3298
- 3299
- 3300
- 3301
- 3302
- 3303
- 3304
- 3305
- 3306
- 3307
- 3308
- 3309
- 3310
- 3311
- 3312
- 3313
- 3314
- 3315
- 3316
- 3317
- 3318
- 3319
- 3320
- 3321
- 3322
- 3323
- 3324
- 3325
- 3326
- 3327
- 3328
- 3329
- 3330
- 3331
- 3332
- 3333
- 3333