用户指南
文档版本 01
发布日期 2022-02-17
版权所有 © 华为技术有限公司 2022。 保留一切权利。
非经本公司书面许可,任何单位和个人不得擅自摘抄、复制本文档内容的部分或全部,并不得以任何形式传 播。
商标声明
和其他华为商标均为华为技术有限公司的商标。
本文档提及的其他所有商标或注册商标,由各自的所有人拥有。
注意
您购买的产品、服务或特性等应受华为公司商业合同和条款的约束,本文档中描述的全部或部分产品、服务或 特性可能不在您的购买或使用范围之内。除非合同另有约定,华为公司对本文档内容不做任何明示或暗示的声 明或保证。
由于产品版本升级或其他原因,本文档内容会不定期进行更新。除非另有约定,本文档仅作为使用指导,本文 档中的所有陈述、信息和建议不构成任何明示或暗示的担保。
目 录
1 使用前必读... 1
1.1 管理和使用分布式缓存服务... 1
1.2 分布式缓存服务控制台简介... 2
2 权限管理...4
2.1 创建用户并授权使用 DCS...4
2.2 DCS 自定义策略... 5
3 购买缓存实例... 7
3.1 购买前准备... 7
3.2 准备实例依赖资源... 8
3.3 购买 Redis 实例... 9
3.4 购买 Memcached 实例(即将下线)... 13
4 连接 Redis 缓存实例... 17
4.1 Redis 连接约束...17
4.2 公网连接 Redis 3.0(已下线)... 17
4.2.1 步骤一:检查实例是否支持公网访问...17
4.2.2 步骤二:开启 Redis 实例的公网访问... 19
4.2.3 步骤三:连接 Redis 实例(Windows 版)...20
4.2.4 步骤三:连接 Redis 实例(Linux 版)... 25
4.3 多语言连接... 30
4.3.1 Redis-cli 连接... 30
4.3.2 Java 客户端...33
4.3.2.1 Jedis... 33
4.3.2.2 Lettuce... 36
4.3.2.3 Redisson... 37
4.3.3 php 客户端... 39
4.3.3.1 phpredis... 39
4.3.3.2 Predis... 41
4.3.4 C++Redis 客户端(hiredis)... 42
4.3.5 Python Redis 客户端... 44
4.3.6 NodeJs Redis 客户端... 46
4.3.7 C# Redis 客户端... 49
4.3.8 Go Redis 客户端...51
4.3.9 redis 集群对接 springboot... 53
4.4 控制台连接 Redis 4.0/5.0/Redis 6.0... 54
5 连接 Memcached 缓存实例...56
5.1 Telnet 客户端... 56
5.2 Java Memcached 客户端... 57
5.3 Python 客户端...60
5.4 C++客户端... 62
5.5 PHP 客户端... 65
6 实例日常操作...70
6.1 查看实例信息...70
6.2 变更规格... 72
6.3 开启实例... 75
6.4 重启实例... 75
6.5 删除实例... 76
6.6 主备切换... 78
6.7 清空实例数据...78
6.8 导出实例列表...79
6.9 命令重命名... 79
7 实例配置管理...81
7.1 配置管理说明...81
7.2 修改配置参数...81
7.2.1 修改单实例配置参数... 81
7.2.2 批量修改实例配置参数...87
7.3 修改实例维护时间窗... 93
7.4 修改实例安全组... 93
7.5 查看实例后台任务... 94
7.6 查看 Redis 3.0 Proxy 集群实例的数据存储统计信息...95
7.7 管理标签... 95
7.8 管理分片与副本... 97
7.9 缓存分析... 97
7.9.1 分析 Redis 实例大 Key 和热 Key... 98
7.9.2 过期 key 扫描... 102
7.10 管理实例白名单... 106
7.11 Redis 实例慢查询...107
7.12 查询 Redis 实例运行日志... 108
7.13 实例诊断... 109
8 实例备份恢复管理...110
8.1 备份与恢复说明...110
8.2 设置备份策略... 112
8.3 手动备份实例... 113
8.4 实例恢复... 114
8.5 下载实例 rdb 和 aof 文件... 115
9 实例数据迁移...117
9.1 使用 DCS 迁移介绍... 117
9.2 备份文件导入方式-OBS 桶... 118
9.3 备份文件导入方式-Redis 实例...121
9.4 在线迁移方式... 122
9.5 实例交换 IP... 125
10 参数模板... 128
10.1 查看参数模板信息... 128
10.2 创建自定义参数模板...133
10.3 修改自定义参数模板...138
10.4 删除自定义参数模板...143
11 密码管理... 144
11.1 关于实例连接密码的说明... 144
11.2 修改缓存实例密码... 144
11.3 重置缓存实例密码... 145
11.4 修改 Redis 实例的访问方式... 146
11.5 修改 Memcached 实例的访问方式...147
12 调整配额... 149
13 监控... 151
13.1 支持的监控指标... 151
13.2 常用的监控指标... 195
13.3 查看性能监控...197
13.4 必须配置的监控告警...197
14 审计... 206
14.1 云审计服务支持的 DCS 操作列表... 206
14.2 查看云审计日志... 208
1 使用前必读
1.1 管理和使用分布式缓存服务
管理 DCS 缓存实例
DCS提供了Web化的服务管理平台,即管理控制台,还提供了基于HTTPS请求的 RESTful API(Application programming interface)管理方式。
● Web管理控制台方式
您注册后登录管理控制台,从主页选择“分布式缓存服务”即可进入DCS的管理 界面。
Web管理控制台DCS缓存实例的相关管理功能,具体操作,请参见本手册购买缓 存实例到密码管理。
DCS各项指标的监控数据会记录在云监控服务中,如果您需要查看相关监控数据 或配置监控告警规则,请登录云监控控制台查看,具体操作,请参考查看性能监 控。
如果您开启了云审计服务,系统会将对DCS实例的操作记录到云审计服务,您可 以登录云审计服务控制台查看,具体查看操作,请参考查看云审计日志。
● API方式
DCS提供了基于RESTful的API接口,支持您将分布式缓存服务集成到自己的应用 系统,实现自动化统一管理,有关API的调用说明与具体的API接口内容,请参考
《分布式缓存服务API参考》。
须知
1. 已开放的API功能,可分别使用Web管理控制台方式和API方式操作,API方 式,请参考《分布式缓存服务API参考》;如果是没有开放API调用的功能,请 使用Web管理控制台操作。
2. 监控与审计的API请参考云监控服务以及云审计服务的帮助手册。
使用 DCS 缓存实例
您购买DCS缓存实例后,可参考连接Redis缓存实例,了解如何连接缓存实例。兼容开 源Redis/Memcached协议的客户端都可以连接DCS的Redis/Memcached缓存实例,客 户端连接成功后,您就可以开始享受DCS带来的高效数据读写。
须知
DCS本身不涉及用户敏感信息。使用DCS处理数据的目的、范围、处理方式、时限等请 遵从当地适用的法律法规。DCS本身不建议传输和存储敏感数据,如果传输和存储敏 感数据,请自行加密后再传输和存储。
访问缓存实例的方法,如图1-1所示。
图1-1 访问 DCS 服务简图
说明
● 目前,客户端所在弹性云服务器(Elastic Cloud Server)必须和缓存实例处于同一虚拟私有 云(Virtual Private Cloud)。
● Redis缓存实例如果开启公网访问功能,也可通过弹性IP(Elastic IP address)访问。
1.2 分布式缓存服务控制台简介
您可以登录分布式缓存服务管理控制台,购买缓存实例、进行实例日常操作和维护,
查看实例状态和实例内存使用情况,进行在线咨询,解决使用过程的问题。
图1-2 分布式缓存控制台页面
● 切换Region
切换不同Region,您可以选择接近您的应用程序的区域。
● 切换云服务
切换到其他云服务的Console页面,例如,虚拟私有云服务、云监控服务。
● 购买入口
购买Redis、Memcached实例入口。
● 菜单区域
提供缓存实例日常操作、数据迁移等功能入口。
● 热门活动区域
主要显示当前阶段分布式缓存服务新上线的功能,以及优惠活动。
● 实例数
显示当前用户下所有的资源实例总数,以及故障实例数量。
● 实例监控和告警
显示当前用户下实例内存使用率排行较前的实例。如果您需要了解单个实例的信 息,可参考查看实例信息。
您可以为自己的实例创建告警规则,当产生告警时,可以第一时间处理。设置操 作,请参考配置告警。
● 常用操作指导
提供分布式缓存服务中常用的操作指导链接,您可以进入操作文档,了解更多业 务细节。
● 在线帮助
在产品使用过程中有任何疑问,可以使用智能客服进行在线咨询。
2 权限管理
2.1 创建用户并授权使用 DCS
如果您需要对您所拥有的DCS服务进行精细的权限管理,您可以使用统一身份认证服 务(Identity and Access Management,简称IAM),通过IAM,您可以:
● 根据企业的业务组织,在您的华为云帐号中,给企业中不同职能部门的员工创建 IAM用户,让员工拥有唯一安全凭证,并使用DCS资源。
● 根据企业用户的职能,设置不同的访问权限,以达到用户之间的权限隔离。
● 将DCS资源委托给更专业、高效的其他华为云帐号或者云服务,这些帐号或者云 服务可以根据权限进行代运维。
如果华为云帐号已经能满足您的要求,不需要创建独立的IAM用户,您可以跳过本章 节,不影响您使用DCS服务的其它功能。
本章节以创建用户并授予“DCS ReadOnlyAccess”权限为例,为您介绍对用户授权的 方法,操作流程如图2-1所示。
前提条件
给用户组授权之前,请您了解用户组可以添加的DCS系统策略,并结合实际需求进行 选择,DCS支持的系统策略及策略间的对比,请参见DCS系统策略。若您需要对除DCS 之外的其它服务授权,IAM支持服务的所有策略请参见权限策略。
示例流程
图2-1 给用户授权 DCS 权限流程
1. 创建用户组并授权
在IAM控制台创建用户组,并授予分布式缓存服务的只读权限“DCS ReadOnlyAccess”。
2. 创建用户并加入用户组
在IAM控制台创建用户,并将其加入1中创建的用户组。
3. 用户登录并验证权限
新创建的用户登录控制台,验证分布式缓存服务的只读权限。
2.2 DCS 自定义策略
如果系统预置的DCS权限,不满足您的授权要求,可以创建自定义策略。自定义策略 中可以添加的授权项(Action)请参考细粒度策略支持的授权项 。
目前华为云支持以下两种方式创建自定义策略:
● 可视化视图创建自定义策略:无需了解策略语法,按可视化视图导航栏选择云服 务、操作、资源、条件等策略内容,可自动生成策略。
● JSON视图创建自定义策略:可以在选择策略模板后,根据具体需求编辑策略内 容;也可以直接在编辑框内编写JSON格式的策略内容。
具体创建步骤请参见:创建自定义策略。本章为您介绍常用的DCS自定义策略样例。
说明
由于缓存的存在,对用户、用户组以及企业项目授予OBS相关的细粒度策略后,大概需要等待5 分钟细粒度策略才能生效。
DCS 自定义策略样例
● 示例1:授权用户删除缓存实例、重启实例及清空实例数据。
{ "Version": "1.1", "Statement": [ {
"Effect": "Allow", "Action": [ "
dcs:instance:delete dcs:instance:modifyStatus "
] } ] }
● 示例2:拒绝用户删除缓存实例
拒绝策略需要同时配合其他策略使用,否则没有实际作用。用户被授予的策略 中,一个授权项的作用如果同时存在Allow和Deny,则遵循Deny优先。
如果您给用户授予DCS FullAccess的系统策略,但不希望用户拥有DCS FullAccess 中定义的删除缓存实例权限,您可以创建一条拒绝删除缓存实例的自定义策略,
然后同时将DCS FullAccess和拒绝策略授予用户,根据Deny优先原则,则用户可 以对DCS执行除了删除缓存实例外的所有操作。拒绝策略示例如下:
{ "Version": "1.1", "Statement": [ {
"Effect": "Deny", "Action": [
"dcs:instance:delete"
] } ] }
3 购买缓存实例
3.1 购买前准备
在购买实例之前,请先根据您的实际业务需要,明确购买需求,完成以下工作:
1. 确定缓存类型。
在购买前,需要您根据业务情况选择合适的缓存类型,选择了缓存类型后,不支 持更改缓存类型。
– 若要了解Redis和Memcached,请参考DCS Redis和DCS Memcached的介 绍。
– 若要了解Redis和Memcached的区别,请参考Redis与Memcached之间如何 选择。
2. 确定缓存实例版本。
只有缓存类型选择的是Redis,才涉及此操作,如果缓存类型是Memcached,则 不涉及。
说明
DCS Redis 3.0已下线,暂停售卖,建议使用Redis 4.0/5.0。
不同的Redis版本,特性会不同,可参考不同Redis版本支持的特性差异说明,了 解不同版本的Redis。
3. 确定缓存实例类型。
确定缓存类型后,当前支持的实例类型有单机、主备、Proxy集群和Cluster集群。
实例规格特点和架构,可参考选择实例类型。
4. 确定实例规格。
确定实例类型后,需要明确购买规格大小。实例支持的连接数和内网带宽,可参 考产品规格。
5. 确定选择的区域以及实例是否跨可用区部署。
选择的区域,建议选择接近您应用程序的区域,减少网络延时。例如,所在城市 为中国-广州,可就近选择“华南-广州”。
一个区域对应多个可用区(AZ),当前DCS支持将主备实例/集群实例部署在不同 的AZ内,节点间电力与网络均物理隔离。您可以将应用程序也进行跨AZ部署,从 而达到数据与应用全部高可用。
说明
● 当主备或者集群Redis实例进行跨可用区部署时,如果其中一个可用区故障,另一个可 用区的节点不受影响。备节点会自动升级为主节点,对外提供服务,从而提供更高的容 灾能力。
● 由于实例跨可用区部署时网络访问效率略低于部署在同一可用区内,因此Redis实例跨 可用区部署时,主备节点之间同步效率会略有降低。
6. 确定实例是否配置备份策略。
当前只有主备、Proxy集群、Cluster集群实例支持配置备份恢复策略。关于备份恢 复,可参考备份与恢复说明。
3.2 准备实例依赖资源
概述
在创建DCS实例前您需要提前准备相关依赖资源,包括VPC、子网和安全组,并配置安 全组。每个DCS实例都部署在某个虚拟私有云(VPC)中,并绑定具体的子网和安全 组,通过这样的方式为DCS提供一个隔离的、用户自主配置和管理的虚拟网络环境以 及安全保护策略,提升实例的安全性。
如果已有VPC、子网和安全组,可重复使用,不需要多次创建。
准备依赖资源
DCS实例所需资源的具体要求和创建指导如下所示。
表3-1 DCS 依赖资源
准备资源 要求 创建指导
VPC和子网 不同的DCS实例可以重复使用相同 的VPC和子网,也可以使用不同的 VPC和子网,请根据实际需要进行 配置。在创建VPC和子网时应注意 如下要求:
● 创建的VPC与使用的DCS服务应 在相同的区域。
● 创建VPC和子网时,如无特殊需 求,配置参数使用默认配置即 可。
创建VPC和子网的操作指导,请 参考创建虚拟私有云和子网,若 需要在已有VPC上创建和使用新 的子网,请参考为虚拟私有云创 建新的子网。
准备资源 要求 创建指导 安全组
说明 仅创建Redis 3.0 和Memcach ed实例需 要。
不同的DCS实例可以重复使用相同 的安全组,也可以使用不同的安全 组,请根据实际需要进行配置。在 创建安全组时应注意如下要求:
● 创建安全组时,“模板”选择
“自定义”。
● 安全组创建后,请保留系统默认 添加的入方向“允许安全组内的 弹性云服务器彼此通信”规则和 出方向“放通全部流量”规则。
● 使用DCS服务要求必须添加表 3-2所示安全组规则,其他规则 请根据实际需要添加。
创建安全组的操作指导,请参考 创建安全组,为安全组添加规则 的操作指导请参考添加安全组规 则。
(可选)弹性公网IP
说明仅Redis 3.0实例支 持绑定弹 性公网IP。
若需要通过公网访问DCS,则需要 申请弹性公网IP,否则不需要申请 弹性公网IP。
申请弹性公网IP的操作指导请参 考申请弹性公网IP。
表3-2 安全组规则
方向 协议 端口 源地址 说明
入方向 TCP 36379 0.0.0.0/0 通过公网访问Redis(开启SSL 加密)。
入方向 TCP 6379 0.0.0.0/0 通过公网访问Redis(关闭SSL 加密)。
入方向 TCP 6379 0.0.0.0/0 通过内网访问Redis(不支持 SSL加密)。
入方向 TCP 11211 0.0.0.0/0 通过公网访问Memcached
(不支持SSL加密)。
3.3 购买 Redis 实例
您可以根据业务需要购买相应计算能力和存储空间的Redis实例,同时可购买多个Redis 实例。
说明
DCS Redis 3.0已下线,暂停售卖,建议使用Redis 4.0/5.0。
前提条件
注册华为云后,如果需要对华为云上的资源进行精细管理,请使用IAM服务创建IAM用 户及用户组,并授权,以使得IAM用户获得具体的操作权限。具体操作,请参考权限 管理。
购买 Redis 实例
步骤1 登录分布式缓存服务管理控制台。
步骤2 在管理控制台左上角单击 ,选择区域和项目。
说明
此处请选择与您的应用服务相同的区域。
步骤3 单击“购买缓存实例”,进入购买页面。
步骤4 选择“计费模式”。
步骤5 在“区域”下拉列表中,选择靠近您应用程序的区域,可降低网络延时、提高访问速 度。
步骤6 根据购买前准备,设置以下基本信息;
1. 在“缓存类型”区域,选择缓存实例类型。
本章节选择“Redis”。
2. 在“版本号”区域,选择Redis版本。
当前DCS支持的Redis版本有:3.0、4.0、5.0和Redis 6.0。
3. 在“实例类型”区域,选择单机、主备、Proxy集群、Cluster集群、读写分离实例 类型。
4. 选择“CPU架构”,当前支持“x86计算”和“Arm计算”。
5. 在“副本数”区域,选择实例副本数,默认为2副本。
当选择Redis 4.0和Redis 5.0,且实例类型为主备、Cluster集群时,页面才显示
“副本数”。
6. 如果选择了Cluster集群,页面增加显示“规格选择模式”,选择实例规格。
快速选择:保持默认实例规格选择。
自定义分片:自定义每个分片的容量,然后选择实例规格。
7. 在“可用区”区域,您可根据实际情况选择。
说明
如果提高访问速度,可选择和应用同一个可用区。
如果“实例类型”选择了主备、Proxy集群、Cluster集群,页面增加显示“备可用 区”,您需要在“备可用区”为备节点设置备可用区。
8. 在“实例规格”区域,选择符合您的规格。
您的默认配额请以控制台显示为准。
您如需增加配额,单击规格下方的“申请扩大配额”,即可跳转到工单管理界面 提交工单,增加配额。
配置的实例基本信息,如图3-1所示。
图3-1 购买 Redis 实例
步骤7 设置实例网络环境信息。
1. 在“虚拟私有云”区域,选择已经创建好的虚拟私有云、子网。
2. 设置实例IP地址。
Redis 3.0、Redis 4.0、Redis 5.0和Redis 6.0,都支持自动分配IP和手动分配IP地 址,如果您需要自定义实例IP地址(即内网IP),您需要选择手动分配IP地址。
如果购买的Redis版本为4.0或5.0,支持自定义端口,自定义端口范围为1~65535 的任意数字;如果未自定义,则使用默认端口6379。
如果购买的Redis版本为Redis 6.0,支持自定义端口,自定义端口范围为1~65535 的任意数字;如果未自定义,则使用默认端口6379。
如果购买的Redis版本为3.0,不支持自定义端口,端口为6379。
3. 在“安全组”下拉列表,可以选择已经创建好的安全组。
安全组是一组对弹性云服务器的访问规则的集合,为同一个VPC内具有相同安全 保护需求并相互信任的弹性云服务器提供访问策略。
Redis 4.0和Redis 5.0是基于VPCEndpoint,暂不支持安全组,当选择的redis版本 为4.0或5.0,不需要设置实例“安全组”。
Redis 6.0也是基于VPCEndpoint,暂不支持安全组,当选择的redis版本为6.0时,
不需要设置实例“安全组”。
如果选择的安全组没有开放6379端口,页面增加显示“开放6379端口”的复选框 并默认勾选,表示实例创建后,会默认放开该实例安全组的6379端口。如果所选 的安全组没有放开6379端口,将无法连接到该实例。
图3-2 购买 Redis 时设置网络环境信息
步骤8 设置实例密码。
● “访问方式”:支持“密码访问”和“免密访问”,您可以设置访问实例时是否 要进行密码验证。
说明
– 选择免密访问方式时,存在安全风险,请谨慎使用。
– 若需要打开“公网访问”开关,您必须选择“密码访问”方式,并设置密码。
– 若申请免密模式的Redis实例,申请成功后,可以通过重置密码进行密码设置,具体可 参考修改Redis实例的访问方式章节。
● “密码”和“确认密码”:只有“访问方式”为“密码访问”时,才会显示该参 数,表示连接Redis实例的密码。
说明
DCS服务出于安全考虑,在密码访问模式下,连接使用Redis实例时,需要先进行密码认 证。请妥善保存密码,并定期更新密码。
步骤9 设置参数配置。
“参数配置”支持“系统默认”和“使用自定义模板”,您在购买实例时可以设置是 否使用自定义参数模板。
说明
● 目前只有在北京四Region购买实例时,支持设置参数配置,若其他Region也需使用此功能,
请您在控制台提交工单,技术人员在后台为您进行开通。
● 创建页面参数配置默认使用系统默认参数模板。
● 创建页面自定义模板只支持Redis缓存类型,只能选择该版本号和实例类型下的自定义模板。
步骤10 设置实例购买时长和数量。
步骤11 设置实例的“名称”和企业项目。
创建单个实例时,名称长度为4到64位的字符串。批量创建实例时,名称长度为4到56 位的字符串,且实例名称格式为“自定义名称-n”,其中n从000开始,依次递增。例 如,批量创建两个实例,自定义名称为dcs_demo,则两个实例的名称为
dcs_demo-000和dcs_demo-001。
步骤12 单击“更多配置”,设置实例其他信息,包括公网访问、备份策略、重命名高危命令 等配置。
1. 设置实例的“描述”。
2. 设置实例备份策略。
只有当实例类型为主备或者集群时显示该参数。关于实例备份的说明及备份策略 的设置请参考备份与恢复说明。
3. 重命名实例高危命令。
当购买的是Redis 4.0、Redis 5.0和Redis 6.0实例时,支持重命名高危命令。当前 支持的高危命令有command、keys、flushdb、flushall和hgetall,其他命令暂时 不支持重命名。
4. 设置实例维护时间窗。
设置DCS服务运维对实例进行维护的时间,在维护前,服务运维会提前和您沟通 确认。
5. 设置“标签”。
标签用于标识云资源,当您拥有相同类型的许多云资源时,可以使用标签按各种 维度(例如用途、所有者或环境)对云资源进行分类。
– 如果您已经预定义了标签,在“标签键”和“标签值”中选择已经定义的标 签键值对。另外,您可以单击右侧的“查看预定义标签”,系统会跳转到标 签管理服务页面,查看已经预定义的标签,或者创建新的标签。
– 您也可以直接在“标签键”和“标签值”中设置标签。
当前每个DCS实例最多支持设置10个不同标签,标签的命名规格,请参考管理标 签章节。
步骤13 实例信息配置完成后,单击“立即购买”,进入规格确认页面。
页面显示申请的分布式缓存服务的实例名称、缓存版本和实例规格等信息。
步骤14 确认实例信息无误后,提交请求。
步骤15 缓存实例创建成功后,您可以在“缓存管理”页面,查看并管理自己的缓存实例。
----结束
购买实例操作视频
如果需要详细了解购买实例的操作,请单击以下链接观看视频。
创建缓存实例操作视频
3.4 购买 Memcached 实例(即将下线)
您可以根据业务需要购买相应计算能力和存储空间的Memcached实例,同时可购买多 个Memcached实例。
说明
DCS Memcached即将下线,部分Region已暂停售卖,建议使用Redis 4.0/5.0。
前提条件
注册华为云后,如果需要对华为云上的资源进行精细管理,请使用IAM服务创建IAM用 户及用户组,并授权,以使得IAM用户获得具体的操作权限。具体操作,请参考权限 管理。
购买 Memcached 实例
步骤1 登录分布式缓存服务管理控制台。
步骤2 在管理控制台左上角单击 ,选择区域和项目。
说明
此处请选择与您的应用服务相同的区域。
步骤3 单击左侧菜单栏的“缓存管理”,进入“缓存管理”页面。
步骤4 单击“购买缓存实例”,进入购买页面。
步骤5 选择“计费模式”。
步骤6 在“区域”下拉列表中,选择靠近你应用程序的区域,可降低网络延时、提高访问速 度。
步骤7 根据购买前准备,设置以下基本信息;
1. 在“缓存类型”区域,选择缓存类型。
本章节单击选择“Memcached”。
2. 在“实例类型”区域,选择实例类型。
Memcached只支持“单机”和“主备”实例类型。
3. 在“可用区”区域,您可根据实际情况选择。
说明
如果提高访问速度,可选择和应用同一个可用区;如果提高可靠性,可选择和应用不在同 一个可用区。
如果“实例类型”选择了主备,页面增加显示“备可用区”参数,您需要在“备 可用区”为备实例设置备可用区。
4. 在“实例规格”区域,选择符合您的规格。
您的默认配额请以控制台显示为准。
您如需增加配额,单击规格下方的“申请扩大配额”,即可跳转到工单管理界面 提交工单,增加配额。
配置的实例基本信息,如图3-3所示。
图3-3 购买 Memcached 实例
步骤8 设置实例网络环境信息。
1. 在“虚拟私有云”区域,选择已经创建好的虚拟私有云、子网、IP。
支持自动分配IP地址和手动分配IP地址,用户可以输入一个在当前子网下可用的 IP。
2. 在“安全组”下拉列表,可以选择已经创建好的安全组。
安全组是一组对弹性云服务器的访问规则的集合,为同一个VPC内具有相同安全 保护需求并相互信任的弹性云服务器提供访问策略。
如果选择的安全组没有开放11211端口,页面增加显示“开放11211端口”的复选 框并默认勾选,表示实例创建后,会默认放开该实例安全组的11211端口。如果 所选的安全组没有放开11211端口,将无法连接到该实例。
图3-4 购买 Memcached 时设置网络环境信息
步骤9 设置实例密码。
● “访问方式”:支持“密码访问”和“免密访问”,您可以设置访问Memcached 实例时是否要进行密码验证。
说明
– 选择“免密访问”,存在安全风险,请谨慎使用。
– 实例申请成功后,可以通过“重置密码”进行密码重新设置或者修改为免密访问,具体 可参考修改Memcached实例的访问方式章节。
– Memcached密码访问模式下,实例只能使用二进制访问且需要进行SASL鉴权。
● “用户名”:连接Memcached实例的用户名。
说明
只有“免密访问”开关为关闭状态时,才会显示该参数。
● “密码”和“确认密码”:只有“访问方式”为“密码访问”时,才会显示该参 数,表示连接Memcached实例的密码。
说明
DCS服务出于安全考虑,在密码访问模式下,连接使用Memcached实例时,需要先进行密 码认证。请妥善保存密码,并定期更新密码。
步骤10 设置实例购买时长和数量。
步骤11 设置实例的“名称”和企业项目。
创建单个实例时,名称长度为4到64位的字符串。批量创建实例时,名称长度为4到56 位的字符串,且实例名称格式为“自定义名称-n”,其中n从000开始,依次递增。例 如,批量创建两个实例,自定义名称为dcs_demo,则两个实例的名称为
dcs_demo-000和dcs_demo-001。
步骤12 单击“更多配置”,设置实例其他信息,包括备份恢复策略、实例标签等配置。
1. 设置实例的“描述”。
2. 设置实例备份策略。
只有当实例类型为“主备”时显示该参数。关于实例备份的说明及备份策略的设 置请参考备份与恢复说明。
3. 设置实例维护时间窗。
您可以设置DCS服务运维对实例进行维护的时间,可选择22:00-02:00、
02:00-06:00、06:00-10:00、10:00-14:00、14:00-18:00和18:00-22:00,在选择的 时间段内,则可对实例节点进行维护操作。
4. 设置“标签”。
标签用于标识云资源,当您拥有相同类型的许多云资源时,可以使用标签按各种 维度(例如用途、所有者或环境)对云资源进行分类。
– 如果您已经预定义了标签,在“标签键”和“标签值”中选择已经定义的标 签键值对。另外,您可以单击右侧的“查看预定义标签”,系统会跳转到标 签管理服务页面,查看已经预定义的标签,或者创建新的标签。
– 您也可以直接在“标签键”和“标签值”中设置标签。
当前每个DCS实例最多支持设置10个不同标签,标签的命名规格,请参考管理标 签章节。
步骤13 实例信息配置完成后,单击“立即购买”,进入确认页面。
页面显示申请的分布式缓存服务的实例名称、缓存版本和实例规格等信息。
步骤14 确认实例信息无误后,提交请求。
步骤15 缓存实例创建成功后,您可以在“缓存管理”页面,查看并管理自己的缓存实例。
1. 创建缓存实例大约需要5到15分钟。
2. 缓存实例创建成功后,默认“状态”为“运行中”。
----结束
4 连接 Redis 缓存实例
4.1 Redis 连接约束
任何兼容Redis协议的客户端都可以访问DCS的Redis实例,您可以根据自身应用特点选 用任何Redis客户端,Redis支持的客户端列表请参见Redis客户端。
说明
DCS Redis 3.0已下线,暂停售卖,建议使用Redis 4.0/5.0。
● 使用同一VPC内弹性云服务器ECS上的客户端访问Redis实例时,需要满足以下约 束:
– 安装了客户端的弹性云服务器必须与Redis实例属于同一个VPC,如果是Redis 3.0实例,需配置相同的安全组或者不同安全组时配置安全组连通规则,如果 是Redis 4.0/5.0/Redis 6.0实例,需将弹性云服务器的IP地址加入实例白名 单,以确保弹性云服务器与Redis实例的网络是连通的。
– 如果弹性云服务器与Redis实例不在相同VPC中,可以通过建立VPC对等连接 方式连通网络,具体请参考常见问题:缓存实例是否支持跨VPC访问?
● 使用公网访问Redis 3.0实例时,需要满足以下约束:
Redis缓存实例配置了正确的安全组规则。当SSL加密功能关闭时,Redis实例的安 全组入方向规则,必须允许外部地址访问6379端口;当SSL加密功能开启时,则 必须允许外部地址访问36379端口。具体配置请参考常见问题:如何选择和配置 安全组?
● 如果客户端服务器和Redis实例不在同一Region,需要跨Region访问Redis实例 时,实例域名无法跨Region解析,无法通过域名访问。可以通过在hosts中手动配 置域名与IP绑定关系或使用IP进行访问。
4.2 公网连接 Redis 3.0(已下线)
4.2.1 步骤一:检查实例是否支持公网访问
华为云DCS支持通过公网地址访问Redis 3.0实例,公网访问与VPC内访问相比,可能存 在网络丢包和抖动等情况,且访问时延有所增加,因此建议仅在业务开发测试阶段开 启公网访问Redis实例。
在进行公网连接Redis实例之前,您首先需要检查实例是否支持公网访问:
● Redis 3.0实例
目前只有Redis 3.0版本实例支持公网访问。可通过公网访问开关来控制是否使用 公网访问实例。
● Redis 4.0和Redis 5.0实例
Redis 4.0&5.0实例暂不支持公网访问,如单机、主备、Proxy集群实例确有公网 访问场景,可使用Nginx方案,利用与Redis实例相同VPC与安全组的ECS做跳转。
具体方案,请参考使用Nginx实现公网访问Redis4.0/5.0实例。
Cluster集群暂无公网访问方案。
● Memcached实例
暂不支持公网访问,您必须通过同一虚拟私有云下的弹性云服务器来访问缓存实 例,以确保缓存数据的安全。如果您在应用开发调试阶段,可以通过ssh代理方 式,实现本地环境访问实例。具体操作参考云下开发环境怎样连接DCS缓存实 例。
检查实例的操作步骤
您需要在实例“概览”页确认以下信息:
● 缓存类型:必须为Redis 3.0版本。如果不是,则不支持公网访问。
● 访问方式:必须为密码访问。如果是免密方式,请先参考常见问题修改为密码访 问方式。
● 公网访问:必须是已开启状态。如果没有开启,参考步骤二:开启Redis实例的公 网访问。
图4-1 检查实例的缓存类型、密码访问和公网访问开关
常见问题
● 实例为免密访问,公网访问开关置灰没法开启,怎么办?
解决办法:在实例“概览”页,右上角单击“更多 > 重置密码”,输入密码,重 置成功后,“访问方式”修改为“密码访问”状态。此时,公网访问的开关就可 以修改了。
● 实例开启了公网访问,如何关闭SSL开关?
解决办法:在公网开启时,SSL加密是默认开启的。如果需要关闭SSL加密,建议 按照以下操作执行:
a. 打开修改公网访问页面。
b. 在“修改公网访问”页面,关闭“SSL加密”,单击“确定”。
c. 在实例详情页面的连接信息区域,显示“SSL加密”为已关闭。关闭SSL加密 操作完成。
4.2.2 步骤二:开启 Redis 实例的公网访问
如果实例已经开启了公网访问,不需要执行本章节。
如果实例没有开启公网访问,可参考本章节,开启公网访问开关,在开启公网访问 时,您可以选择是否使用SSL加密传输。
说明
● 通过公网SSL加密方式访问Redis实例时,建议使用前先下载CA证书,并使用CA证书来验证 DCS缓存实例的证书,以提高安全性。
● 通过公网直接(未开启SSL加密)访问实例时,请直接访问Redis实例的弹性公网IP与6379端 口,不需下载证书,也不需要在客户端安装Stunnel工具。
● 推荐使用SSL加密Redis客户端与DCS实例之间的传输通道,确保数据传输安全。
操作步骤
步骤1 登录分布式缓存服务管理控制台。
步骤2 在管理控制台左上角单击 ,选择区域和项目。
说明
此处请选择与您的应用服务相同的区域。
步骤3 单击左侧菜单栏的“缓存管理”。
步骤4 单击对应Redis实例的名称,进入该实例的基本信息页面。
步骤5 单击“公网访问”右侧的 ,弹出“修改公网访问”页面。
步骤6 单击 ,打开公网访问开关。
步骤7 从“弹性IP地址”下拉列表中选择一个弹性IP。
如果没有弹性IP,可单击右侧的“查看弹性IP”,系统会跳转到网络控制台的弹性公网 IP页面,创建弹性公网IP。创建完之后,单击“弹性IP地址”右侧的刷新按钮,即可选 择新建的公网IP。
步骤8 (可选)根据需要选择是否开启SSL加密功能。
建议使用SSL加密Redis客户端与DCS实例之间的传输通道,确保数据传输安全。
步骤9 单击“确定”,开启公网访问功能。
开启公网访问功能大约需要1~2分钟,请耐心等待。
当前页面会自动跳转到“后台任务”页签,并显示当前任务的操作进度。任务状态为
“成功”,表示开启公网访问成功。
----结束
4.2.3 步骤三:连接 Redis 实例(Windows 版)
本文以本地环境为Windows设备为例,提供使用Redis-cli客户端通过公网地址连接 Redis 3.0实例的具体操作。
公网访问功能便于开发人员在本地搭建开发或测试环境,提高开发效率。在生产环境
(正式环境)中,请通过VPC内连接方式访问Redis实例,保障访问效率。
前提条件
使用Redis-cli客户端通过公网访问Redis实例时:
● 实例必须为Redis 3.0实例,且已经开启了公网访问功能。
● 如果访问Redis实例需要使用证书,可根据查看实例信息,进入到缓存实例详情页 面提前下载该证书。
连接 Redis 操作步骤(开启实例 SSL 加密时)
步骤1 确认Redis实例的安全组入方向规则是否配置正确,即是否允许外部地址访问36379端 口。
当SSL加密功能开启时,必须允许36379端口被外部地址访问。放开后,需要安装 Stunnel客户端,然后访问Redis的公网地址。
图4-2 安全组规则(端口配置为 36379)
步骤2 获取待连接Redis实例的公网访问地址、证书。
● 公网访问地址:单击实例,进入实例详情页即可查看,如下所示。
● 证书:单击“证书下载”,下载解压之后,获得dcs-ca.cer和dcs-ca-bundle.pem 文件,dcs-ca.cer为公网访问时需要的二进制格式公钥证书,dcs-ca-bundle.pem 为文本格式证书文件。
图4-3 查看公网访问地址(开启 SSL,端口为 36379)
步骤3 下载Stunnel安装包。从https://www.stunnel.org/downloads.html下载最新版本的 Windows版Stunnel安装包(以exe结尾的安装包,例如,stunnel-5.44-win32- installer.exe)到本地Windows设备。
步骤4 运行Stunnel安装程序,安装Stunnel客户端。
步骤5 配置Stunnel客户端。在任务栏单击图标 右键,选择“Edit Configuration”,新增 如下配置内容,然后保存退出。
[redis-client]
client = yes
CAfile = D:\tmp\dcs\dcs-ca.cer accept = 8000
connect = {公网访问地址}
参数需要根据以下说明修改,其他参数不用修改:
● client值固定填yes,表示为Stunnel客户端。
● CAfile为CA证书,为可选参数。如果需要,根据步骤2的操作,使用下载之后解压 得到dcs-ca.cer证书;如果不需要,可不配置,删除此参数。
● accept为Stunnel监听端口,可以自定义。Redis客户端访问实例时填写此端口。
● connect为服务端连接地址,此处填Redis实例的弹性公网IP与端口,替换为步骤2 获取的公网访问地址即可。
已开启了SSL加密功能的配置为例,如下所示:
[redis-client]
client = yes
CAfile = D:\tmp\dcs\dcs-ca.cer accept = 8000
connect = 49.**.**.211:36379
步骤6 在任务栏单击图标 右键,选择“Reload Configuration”。
步骤7 打开命令提示符工具cmd.exe,执行以下命令,查看127.0.0.1:8000是否已经被监听。
netstat -an |find "8000"
假设客户端的监听端口配置为“8000”。
返回列表行中显示有“127.0.0.1:8000”,状态为“LISTENING”,表示stunnel客户 端正常运行。Redis客户端连接“127.0.0.1:8000”,stunnel会将请求转发给DCS的 Redis实例。
步骤8 连接Redis实例。
1. 获取Redis客户端安装包到本地Windows设备,并解压安装包。
Windows版本的Redis客户端安装包,下载请单击这里。
2. 打开命令提示符工具cmd.exe,并执行以下命令,进入Redis客户端安装包的解压 目录。
以解压目录D:\redis-64.3.0.503为例,命令如下:
D:
cd D:\redis-64.3.0.503 3. 执行以下命令连接Redis实例。
redis-cli -h 127.0.0.1 -p 8000 -a <password>
注意
连接命令中-h后的连接地址应该为Stunnel客户端地址,-p后的端口为Stunnel客 户端监控端口,不要使用控制台展示的公网连接地址和端口,连接地址保持 127.0.0.1即可;连接端口为步骤5中accept字段配置的Stunnel监听端口,本文示 例定义的是8000。
<password>为创建Redis实例时自定义的密码,请按实际情况修改后执行。
连接成功后,回显信息如下:
127.0.0.1:8000>
输入“info”可正常返回Redis实例信息。如果不能正常返回,或者连接异常断 开,可在任务栏找到Stunnel图标,并右键单击,选择“Show Log Window”,
打开Stunnel客户端的日志查看原因。
----结束
连接 Redis 操作步骤(关闭实例 SSL 加密时)
步骤1 确认Redis实例的安全组入方向规则是否配置正确,即是否允许外部地址访问6379端 口。
当SSL加密功能关闭时,必须允许6379端口被外部地址访问。放开后,即可直接访问 Redis的公网地址。
图4-4 安全组规则(端口配置为 6379)
步骤2 查看并获取待连接Redis实例的公网访问地址。
单击实例,进入实例详情页即可查看,如下所示。
图4-5 查看公网访问地址(关闭 SSL,端口为 6379)
步骤3 获取Redis客户端安装包到本地Windows设备,并解压安装包。
Windows版本的Redis客户端安装包,下载请单击这里。
步骤4 打开命令提示符工具cmd.exe,并执行以下命令,进入Redis客户端安装包的解压目 录。
以解压目录D:\redis-64.3.0.503为例,命令如下:
D:
cd D:\redis-64.3.0.503 步骤5 执行以下命令连接Redis实例。
redis-cli -h {公网访问IP} -p 6379 -a <password>
其中,{公网访问IP}替换为步骤2中获取的Redis实例的IP,<password>为创建Redis实 例时自定义的密码,请按实际情况修改后执行。
连接成功后,回显信息如下:
139.**.**.175:6379>
输入“info”可正常返回Redis实例信息。
----结束
故障排除
● Error: Connection reset by peer或者出现:远程主机强迫关闭一个现有的连接 原因1:安全组没有配置正确,需要参考放通36379端口或放通6379端口。
原因2:开启了SSL加密传输,连接时没有配置Stunnel,直接使用界面提示的IP地 址进行连接。开启SSL加密时,您需要按照连接Redis操作步骤(开启实例SSL加 密时)的操作步骤执行。
● 更多连接失败的问题,请查看Redis实例连接失败的原因排查。
4.2.4 步骤三:连接 Redis 实例(Linux 版)
本文以本地环境为Linux设备为例,提供使用Redis-cli客户端通过公网连接Redis 3.0实 例的具体操作。
公网访问功能便于开发人员在本地搭建开发或测试环境,提高开发效率。在生产环境
(正式环境)中,请通过VPC内连接方式访问Redis实例,保障访问效率。
前提条件
使用Redis-cli客户端通过公网访问Redis实例时:
● 实例必须为Redis 3.0实例,且已经开启了公网访问功能。
● 如果访问Redis实例需要使用证书,可根据查看实例信息,进入到缓存实例详情页 面提前下载该证书。
连接 Redis 操作步骤(开启 SSL 加密时)
步骤1 确认Redis实例的安全组入方向规则是否配置正确,即是否允许外部地址访问36379端 口。
当SSL加密功能开启时,必须允许36379端口被外部地址访问。需要安装Stunnel客户 端,然后访问Redis的公网地址。
图4-6 安全组规则(端口配置为 36379)
步骤2 获取待连接Redis实例的公网访问地址、证书。
● 公网访问地址:单击实例,进入实例详情页即可查看,如下所示。
● 证书:单击“证书下载”,下载解压之后,获得dcs-ca.cer和dcs-ca-bundle.pem 文件,dcs-ca.cer为公网访问时需要的二进制格式公钥证书,dcs-ca-bundle.pem 为文本格式证书文件。
图4-7 查看公网访问地址(开启 SSL,端口为 36379)
步骤3 登录本地Linux设备。
步骤4 安装Stunnel客户端。
这里主要介绍Stunnel客户端的几种常见安装方法,您可以选择其中一种方式进行操 作。
说明
推荐使用apt和yum两种安装方式,常见Linux系统,一般至少支持其中一种。
其他常见系统下的Stunnel客户端安装请参考:
“Mac下的Stunnel客户端安装”。
● apt-get方式安装。
apt-get管理deb格式的软件包,适用于Debian类操作系统,如Ubuntu。命令如 下:
apt install stunnel或apt-get install stunnel
如果命令执行后提示找不到Stunnel,可以尝试执行apt update,更新配置后再安 装Stunnel。
● yum方式安装。
管理rpm格式的软件包,适用于Fedora、CentOS、Red Hat等操作系统。命令如 下:
yum install stunnel
步骤5 打开Stunnel配置文件stunnel.conf。
● 如果是apt-get安装方式,默认路径为/etc/stunnel/stunnel.conf。
如果路径不存在或者路径下无配置文件,可新增。
● 如果是yum安装方式,默认路径为/usr/local/stunnel/stunnel.conf。
如果路径不存在或者路径下无配置文件,可新增。
说明
● 如果不确定配置文件应该存储在哪,可以在安装后直接输入stunnel命令,获取文件路径提 示。
● 配置文件可以存储在任何路径,在Stunnel启动的时候指定该配置文件即可。
步骤6 在配置文件stunnel.conf中新增如下内容,然后保存退出。
debug = 4
output = /var/log/stunnel.log sslVersion = all
[redis-client]
client = yes accept = 8000
connect = {公网访问地址}
CAfile = /etc/stunnel/dcs-ca.cer
参数需要根据以下说明修改,其他参数不用修改:
● client值固定填yes,表示为Stunnel客户端。
● CAfile为CA证书,为可选参数。如果需要,根据步骤2的操作,使用下载之后解压 得到dcs-ca.cer证书;如果不需要,可不配置,删除此参数。
● accept为Stunnel监听端口,可以自定义。Redis客户端访问缓存实例时填写此端 口。
● connect为Stunnel转发地址与端口,此处填Redis缓存实例的弹性IP与端口,替换 为步骤2获取的公网访问地址即可。
配置示例如下:
[redis-client]
client = yes
CAfile = D:\tmp\dcs\dcs-ca.cer accept = 8000
connect = 49.**.**.211:36379
步骤7 执行以下命令,启动stunnel服务。
stunnel /
{customdir}
/stunnel.conf其中{customdir}为步骤5中stunnel.conf配置文件的存储路径。命令示例如下:
stunnel /etc/stunnel/stunnel.conf 说明
Ubuntu环境下,启动命令可以使用/etc/init.d/stunnel4 start。Stunnel4.x的版本,服务/进程 名为stunnel4。
启动后可执行ps -ef|grep stunnel确认进程是否正常运行。
步骤8 执行以下命令,查看Stunnel是否已经被监听。
netstat -plunt |grep
8000
|grep "LISTEN"其中,8000替换为步骤6中accept字段配置的Stunnel监听端口。
返回信息有包含8000的端口的记录行,表示stunnel客户端正常运行。Redis客户端连 接“127.0.0.1:8000”,Stunnel会将请求转发给DCS的Redis实例。
步骤9 连接Redis实例。
1. 登录本地Linux设备。
2. 获取Redis客户端源码,下载路径为http://download.redis.io/releases/
redis-5.0.8.tar.gz。
wget http://download.redis.io/releases/redis-5.0.8.tar.gz
说明
您也可以使用yum、apt方式安装Redis客户端。
– yum方式,执行命令:yum install redis – apt方式,执行命令:apt install redis-server 3. 执行如下命令,解压Redis客户端源码包。
tar -xzf redis-5.0.8.tar.gz
4. 进入Redis目录并编译Redis客户端源码。
cd redis-5.0.8 make
5. 执行以下命令连接Redis实例。
cd src
./redis-cli -h 127.0.0.1 -p
8000
注意
连接命令中-h后的连接地址应该为Stunnel客户端地址,-p后的端口为Stunnel客 户端监控端口,不要使用控制台展示的公网连接地址和端口,连接地址保持 127.0.0.1即可;连接端口为步骤6中accept字段配置的Stunnel监听端口,本文示 例定义的是8000。
6. 输入密码,校验通过后才可进行缓存数据读写。
auth <password>
其中,<password>为创建Redis实例时自定义的密码,请按实际情况修改后执 行。
连接成功后,回显信息如下:
OK 127.0.0.1:8000>
----结束
连接 Redis 操作步骤(关闭 SSL 加密时)
步骤1 确认Redis实例的安全组入方向规则是否配置正确,即是否允许外部地址访问6379端 口。
当SSL加密功能关闭时,必须允许6379端口被外部地址访问。放开后,即可直接访问 Redis的公网地址。
图4-8 安全组规则(端口配置为 6379)
步骤2 查看并获取待连接Redis实例的公网访问地址。
单击实例,进入实例详情页即可查看,如下所示。
图4-9 查看公网访问地址(关闭 SSL,端口为 6379)
步骤3 登录本地Linux设备。
步骤4 获取Redis客户端源码,下载路径为http://download.redis.io/releases/
redis-5.0.8.tar.gz。
wget http://download.redis.io/releases/redis-5.0.8.tar.gz 说明
您也可以使用yum、apt方式安装Redis客户端。
● yum方式,执行命令:yum install redis
● apt方式,执行命令:apt install redis-server 步骤5 执行如下命令,解压Redis客户端源码包。
tar -xzf redis-5.0.8.tar.gz
步骤6 进入Redis目录并编译Redis客户端源码。
cd redis-5.0.8 make
步骤7 执行以下命令连接Redis实例。
cd src
./redis-cli -h {公网访问IP} -p 6379
其中,{公网访问IP}替换为步骤2中获取的Redis实例的IP即可。示例如下:
./redis-cli -h 49.**.**.211 -p 6379
步骤8 输入密码,校验通过后才可进行缓存数据读写。
auth <password>
其中,<password>为创建Redis实例时自定义的密码,请按实际情况修改后执行。
连接成功后,回显信息如下:
OK 49.**.**.211:6379>
----结束
故障排除
● Error: Connection reset by peer
原因:安全组没有配置正确,需要参考放通36379端口或放通6379端口。
● 使用redis-cli连接实例,会出现:远程主机强迫关闭一个现有的连接。
原因:开启了SSL加密传输,连接时没有配置Stunnel,直接使用界面提示的IP地 址进行连接。开启SSL加密时,您需要按照连接Redis操作步骤(开启SSL加密 时)的操作步骤执行。
● 更多连接失败的问题,请查看Redis实例连接失败的原因排查。
4.3 多语言连接
4.3.1 Redis-cli 连接
介绍使用同一VPC内弹性云服务器ECS上的Redis-Cli连接Redis实例的方法,更多客户 端的使用方法请参考Redis客户端。
如果是公网访问Redis实例,请参考步骤三:连接Redis实例(Windows版)。
说明
● Redis 3.0不支持定义端口,端口固定为6379,Redis 4.0和Redis 5.0支持定义端口,如果不自 定义端口,则使用默认端口6379。本文操作步骤涉及实例端口时,统一以默认端口6379为 例,如果已自定义端口,请根据实际情况替换。
● 在使用Redis-cli连接Cluster集群时,请注意连接命令是否已加上-c。在连接Cluster集群节 点时务必正确使用连接命令,否则会出现连接失败的问题。
● Cluster集群连接命令:
./redis-cli -h {dcs_instance_address} -p 6379 -a {password} -c
● 单机、主备、Proxy集群连接命令:
./redis-cli -h{dcs_instance_address} -p 6379 -a {password}
具体连接操作, 请查看步骤3和步骤4。
前提条件
● 已成功申请Redis实例,且状态为“运行中”。
● 已创建弹性云服务器,创建弹性云服务器的方法,请参见创建弹性云服务器 。
● 如果弹性云服务器为Linux系统,该弹性云服务器必须已经安装gcc编译环境。
操作步骤(Linux 版)
步骤1 查看并获取待连接Redis实例的IP地址/域名和端口。
具体步骤请参见查看实例信息。
步骤2 安装Redis-cli客户端详请参考安装客户端。
以下步骤以客户端安装在Linux系统上为例进行描述。
1. 登录弹性云服务器。
2. 执行以下命令,获取Redis客户端源码,下载路径为http://download.redis.io/
releases/redis-5.0.8.tar.gz。
wget http://download.redis.io/releases/redis-5.0.8.tar.gz 3. 执行如下命令,解压Redis客户端源码包。
tar -xzf redis-5.0.8.tar.gz
4. 进入Redis目录并编译Redis客户端源码。
cd redis-5.0.8 make
cd src
步骤3 连接Redis非Cluster集群实例。
如果是Redis 3.0、Redis 4.0单机/主备/Proxy集群、Redis 5.0单机/主备/Proxy集群实 例,请执行以下操作。
1. 执行以下命令连接Redis实例。
./redis-cli -h {dcs_instance_address} -p 6379
其中
{dcs_instance_address}
为Redis实例的IP地址/域名,“6379”为Redis实例 的端口。IP地址/域名和端口获取见步骤1。说明
如果是Redis Proxy集群实例,{dcs_instance_address}可以为Redis实例的“连接地址”、
“域名地址”、“后端服务地址”,获取方法,在控制台单击实例进入实例详情页面即可 查看,如图4-10所示。
– “连接地址”和“域名地址”为负载均衡器地址,系统将请求分发到不同的Proxy节点 上。
– 使用“后端服务地址”,可以直接连接到指定的Proxy节点。
图4-10 获取 Proxy 集群实例连接地址
以下以使用Redis实例的域名地址为示例,具体请根据实际情况修改:
[root@ecs-redis redis-5.0.8]# cd src
[root@ecs-redis src]# ./redis-cli -h redis-069949a-dcs-lxy.dcs.huaweicloud.com -p 6379 redis-069949a-dcs-lxy.dcs.huaweicloud.com:6379>
2. 如果Redis实例设置了密码访问,则执行本步骤输入密码,校验通过后才可进行缓 存数据读写。
auth <password>
其中“<password>”为创建Redis实例时自定义的密码,请按实际情况修改后执 行。
密码访问回显示例如下:
redis-069949a-dcs-lxy.dcs.huaweicloud.com:6379> auth *******
OKredis-069949a-dcs-lxy.dcs.huaweicloud.com:6379>
步骤4 连接Redis Cluster集群实例。
如果是Redis 4.0 Cluster集群、Redis 5.0 Cluster集群实例,请执行以下操作。
1. 执行以下命令连接Redis实例。
./redis-cli -h {dcs_instance_address} -p 6379 -a {password} -c
其中,{dcs_instance_address}为Redis实例的IP地址/域名,“6379”为Redis实 例的端口,{password}为Cluster集群实例的密码,-c连接集群节点时使用。IP地 址/域名和端口获取见步骤1。
说明
{dcs_instance_address}参数的值可以为Redis实例“连接地址”、“域名地址”、“实例 拓扑”图中分片上的“节点连接地址”。获取方法,在控制台单击实例进入实例详情页面 即可查看,如图4-11所示。
– “连接地址”字段中提供了两个IP,这两个IP地址均可用于连接实例,在连接时,可任 选其中一个连接,都表示可以连接上集群实例,在进行数据读写时,key存储在哪个 slot中,由Crc16(key) mod 16384的值决定。
– 实例拓扑图中分片上的“节点连接地址”,可以直接连接到指定的分片。
图4-11 获取 Cluster 集群实例连接地址
– 以下以使用Redis实例的IP连接为示例,具体请根据实际情况修改:
root@ecs-redis:~/redis-5.0.8/src# ./redis-cli -h 192.168.0.85 -p 6379 -a ****** -c 192.168.0.85:6379>
– 以下以使用Redis实例的域名连接为示例,具体请根据实际情况修改:
root@ecs-redis:~/redis-5.0.8/src# ./redis-cli -h redis-51e463c-dcs-lxy.dcs.huaweicloud.com -p 6379 -a ****** -c
redis-51e463c-dcs-lxy.dcs.huaweicloud.com:6379>
2. 查看Cluster集群节点信息。
cluster nodes
Cluster集群每一个分片都是一主一从的双副本结构,执行该命令可以查看该实例 的所有节点信息,如下所示。
192.168.0.85:6379> cluster nodes
0988ae8fd3686074c9afdcce73d7878c81a33ddc 192.168.0.231:6379@16379 slave f0141816260ca5029c56333095f015c7a058f113 0 1568084030
000 3 connected
1a32d809c0b743bd83b5e1c277d5d201d0140b75 192.168.0.85:6379@16379 myself,master - 0 1568084030000 2 connected 5461-10922
c8ad7af9a12cce3c8e416fb67bd6ec9207f0082d 192.168.0.130:6379@16379 slave 1a32d809c0b743bd83b5e1c277d5d201d0140b75 0 1568084031
000 2 connected
7ca218299c254b5da939f8e60a940ac8171adc27 192.168.0.22:6379@16379 master - 0 1568084030000 1 connected 0-5460
f0141816260ca5029c56333095f015c7a058f113 192.168.0.170:6379@16379 master - 0 1568084031992 3 connected 10923-16383
19b1a400815396c6223963b013ec934a657bdc52 192.168.0.161:6379@16379 slave 7ca218299c254b5da939f8e60a940ac8171adc27 0 1568084031
000 1 connected
备节点只能进行只读操作,不能进行写操作。在进行数据写入时,key存储在哪个 slot中,由Crc16(key) mod 16384的值决定。
如下所示,数据写入时,根据Crc16(key) mod 16384的值决定key存储位置,并 跳转到该slot所在的节点上。
192.168.0.170:6379> set hello world
-> Redirected to slot [866] located at 192.168.0.22:6379 OK192.168.0.22:6379> set happy day
OK192.168.0.22:6379> set abc 123
-> Redirected to slot [7638] located at 192.168.0.85:6379 OK192.168.0.85:6379> get hello
-> Redirected to slot [866] located at 192.168.0.22:6379
"world"
192.168.0.22:6379> get abc
-> Redirected to slot [7638] located at 192.168.0.85:6379
"123"
192.168.0.85:6379>
----结束
操作步骤(Windows 版)
Windows版本的Redis客户端安装包,下载请单击这里。下载后直接解压安装包,然后 使用cmd工具进入解压目录,执行以下命令连接redis实例:
redis-cli -h
XXX
-p6379
其中:“XXX”为Redis实例的IP地址/域名,“6379”为Redis实例的端口。IP地址/域 名和端口获取见查看实例信息,请按实际情况修改后执行。
连接 Redis 实例操作视频
如果需要详细了解连接redis实例的操作,请单击以下链接观看视频。
访问缓存实例操作视频
4.3.2 Java 客户端
4.3.2.1 Jedis
介绍使用同一VPC内弹性云服务器ECS上的Jedis连接Redis实例的方法。更多的客户端 的使用方法请参考Redis客户端。
前提条件
● 已成功申请Redis实例,且状态为“运行中”。
● 已创建弹性云服务器,创建弹性云服务器的方法,请参见创建弹性云服务器。
● 如果弹性云服务器为Linux系统,该弹性云服务器必须已经安装java编译环境。
操作步骤
步骤1 查看并获取待连接Redis实例的IP地址/域名和端口。
具体步骤请参见查看实例信息。
步骤2 登录弹性云服务器。
步骤3 使用Redis Java (Jedis)客户端连接实例。
获取Redis Java (Jedis)客户端源码,具体方法可参考获取Jedis源码。Jedis客户端访问 DCS Redis服务,有以下两种方法:
● Jedis单连接
● Jedis连接池连接 具体示例如下:
1. jedis单连方式连接Redis单机/主备/Proxy集群示例。
// 密码模式创建连接
String host = "192.168.0.150";
int port = 6379;
String pwd = "passwd";
Jedis client = new Jedis(host, port);
client.auth(pwd);
client.connect();
// 执行set指令
String result = client.set("key-string", "Hello, Redis!");
System.out.println( String.format("set指令执行结果:%s", result) );
// 执行get指令
String value = client.get("key-string");
System.out.println( String.format("get指令执行结果:%s", value) );
// 免密模式创建连接
String host = "192.168.0.150";
int port = 6379;
Jedis client = new Jedis(host, port);
client.connect();
// 执行set指令
String result = client.set("key-string", "Hello, Redis!");
System.out.println( String.format("set指令执行结果:%s", result) );
// 执行get指令
String value = client.get("key-string");
System.out.println( String.format("get指令执行结果:%s", value) );
其中,host为Redis实例的IP地址/域名,port为Redis实例的端口。IP地址/域名和 端口获取见步骤1,请按实际情况修改后执行。pwd为创建Redis实例时自定义的 密码,请按实际情况修改后执行。
2. jedis连接池连接Redis单机/主备/Proxy集群示例。
// 密码模式生成连接池配置信息 String ip = "192.168.0.150";
int port = 6379;
String pwd = "passwd";
GenericObjectPoolConfig config = new GenericObjectPoolConfig();
config.setTestOnBorrow(false);
config.setTestOnReturn(false);
config.setMaxTotal(100);
config.setMaxIdle(100);
config.setMaxWaitMillis(2000);
JedisPool pool = new JedisPool(config, ip, port, 100000, pwd);// 在应用初始化的时候生成连接池 // 在业务操作时,从连接池获取连接
Jedis client = pool.getResource();
try { // 执行指令
String result = client.set("key-string", "Hello, Redis!");
System.out.println( String.format("set指令执行结果:%s", result) );
String value = client.get("key-string");
System.out.println( String.format("get指令执行结果:%s", value) );
} catch (Exception e) { // TODO: handle exception } finally {
// 业务操作完成,将连接返回给连接池 if (null != client) {
pool.returnResource(client);
}
} // end of try block
// 应用关闭时,释放连接池资源 pool.destroy();
// 免密模式生成连接池配置信息 String ip = "192.168.0.150";
int port = 6379;
GenericObjectPoolConfig config = new GenericObjectPoolConfig();
config.setTestOnBorrow(false);
config.setTestOnReturn(false);
config.setMaxTotal(100);
config.setMaxIdle(100);
config.setMaxWaitMillis(2000);
JedisPool pool = new JedisPool(config, ip, port, 100000);// 在应用初始化的时候生成连接池 // 在业务操作时,从连接池获取连接
Jedis client = pool.getResource();
try { // 执行指令
String result = client.set("key-string", "Hello, Redis!");
System.out.println( String.format("set指令执行结果:%s", result) );
String value = client.get("key-string");
System.out.println( String.format("get指令执行结果:%s", value) );
} catch (Exception e) { // TODO: handle exception } finally {
// 业务操作完成,将连接返回给连接池 if (null != client) {
pool.returnResource(client);
}
} // end of try block
// 应用关闭时,释放连接池资源 pool.destroy();
其中,ip为Redis实例的IP地址/域名,port为Redis实例的端口。IP地址/域名和端 口获取见步骤1,请按实际情况修改后执行。pwd为创建Redis实例时自定义的密 码,请按实际情况修改后执行。
3. 单连接方式连接Redis Cluster集群代码示例。
– 加密访问的实例:
// 以下是加密访问 int port = 6379;
String host = "192.168.144.37";
// 创建jediscluster
Set<HostAndPort> nodes = new HashSet<HostAndPort>();
nodes.add(new HostAndPort(host, port));
JedisCluster cluster = new JedisCluster(nodes, 5000, 3000, 10, "password", new JedisPoolConfig());
cluster.set("key", "value");
System.out.println("Connected to RedisCluster:" + cluster.get("key"));
cluster.close();