云服务器内容精选
-
D CS Memcached(已停售) DCS Memcached已停售,建议使用Redis实例。 Memcached是一种内存Key-Value缓存系统,它支持简单字符串数据的存取,通常作为后端数据库内容缓存,以提升web的应用性能,降低对后端数据库的性能依赖,具体了解请参考Memcached(已停售)典型应用场景。 DCS全面兼容Memcached协议并增强实现了双机热备和数据持久化。 表3 DCS Memcached灵活的实例配置 实例类型 提供单机、主备两种类型,分别适配不同的业务场景。 单机:适用于应用对可靠性要求不高、仅需要缓存临时数据的业务场景。单机实例支持读写高并发,但不做持久化,实例重启后原有缓存数据不会加载。 主备:包含一个主节点和一个备节点,主备节点的数据通过实时复制保持一致,备节点对用户不可见且不能直接读写数据,当主节点故障后,备节点自动升级为主节点。 内存规格 单机和主备实例均提供2G、4G、8G、16G、32G、64G共6种内存规格。 高可用与容灾 主备实例提供Region内的跨可用区部署,实现实例内部节点间的电力、网络层面物理隔离。 有关开源Memcached技术细节,您可以访问Memcached官方网站https://memcached.org/。
-
DCS Redis DCS Redis当前支持的Redis版本为Redis 4.0、Redis 5.0、Redis 6.0、Redis 7.0。 DCS Redis 3.0已暂停售卖,建议使用Redis 4.0及以上版本。 Redis 7.0目前为公测阶段,仅白名单开放,如有需要请联系客服。 Redis是一种支持Key-Value等多种数据结构的存储系统。可用于缓存、事件发布或订阅、高速队列等典型应用场景。Redis使用ANSI C语言编写,提供字符串(String)、哈希(Hash)、列表(List)、集合结构(Set、 Sorted_Set )、流(Stream)等数据类型的直接存取。数据读写基于内存,同时可持久化到磁盘。 DCS Redis拥有灵活的实例配置供您选择: 华为云DCS Redis 4.0/5.0/6.0/7.0基础版。 表1 DCS Redis 4.0/5.0/6.0/7.0基础版 实例类型 提供单机、主备、Proxy集群、Cluster集群、读写分离类型,分别适配不同的业务场景。 单机:适用于应用对可靠性要求不高、仅需要缓存临时数据的业务场景。单机实例支持读写高并发,但不做持久化,实例重启或关闭后原有缓存数据不会加载。 主备:包含一个主节点,一个或多个备节点,主备节点的数据通过实时复制保持一致,当主节点故障后,备节点自动升级为主节点。同时用户可通过读写分离技术,在主节点上写,从备节点读,从而提升缓存的整体读写性能。 Proxy集群:在Cluster集群的基础上,增加挂载Proxy节点和ELB节点,通过ELB节点实现负载均衡,将不同请求分发到Proxy节点,实现客户端高并发请求。每个Cluster集群分片默认是一个双副本的主备实例,当主节点故障后,同一分片中的备节点会升级为主节点来继续提供服务。 Cluster集群:通过分片化分区来增加缓存的容量和并发连接数,每个分片包含一个主节点和0到多个备节点,分片本身对外不可见。分片中主节点故障后,同一分片中备节点会升级为主节点来继续提供服务。用户可通过读写分离技术,在主节点上写,从备节点读,从而提升缓存的整体读写能力。 读写分离:在主备实例的基础上,增加挂载Proxy节点和ELB节点,通过ELB节点实现负载均衡,将不同请求分发到Proxy节点,Proxy节点识别用户读写请求,将请求发送到主节点或备节点,从而实现读写分离。 规格 Redis提供128MB~1024G的多种规格。 兼容开源Redis版本 DCS提供不同的实例版本,分别兼容开源Redis的4.0、5.0、6.0、7.0。 底层架构 在物理机上容器化部署,Redis 4.0、5.0单节点QPS达10万/秒,Redis 6.0、7.0基础版单机、主备实例QPS分别达15万/秒和17万/秒。 高可用与容灾 除单机实例外,其他类型的实例都提供Region内的跨可用区部署,实现实例内部节点间的电力、网络层面物理隔离。 有关开源Redis技术细节,您可以访问Redis官方网站https://redis.io/了解。 华为云DCS Redis 6.0企业版。 华为云DCS 企业版,为华为云全自研的版本,由传统的master-worker线程模型升级为master-N*worker多线程模型,对比传统缓存软件模型,整体性能N倍提升。DCS 企业版100%兼容Redis协议、模块和脚本,如脚本和事务的原子性等,在相同的硬件上,企业版的QPS约是Redis的两倍,且延迟可降低约60%。 多线程高性能版,适用于对单节点性能有超高要求的用户,比如互联网热点事件、大咖直播等高并发访问场景。Redis 6.0之前版本,通常受到慢请求单线程处理的制约,任何一个慢请求的出现都会带来其它用户请求的延时。Redis多线程高性能版对从IO到后端事件处理的全流程,进行了多线程并行优化;通过公平自旋锁实现多线程高效访问缓存数据;通过优化Key逐出算法,提升逐出效率1倍以上;通过支持SubKey过期提高了大Key读写性能。 表2 DCS Redis 6.0企业版 实例类型 Redis 6.0企业版分为高性能型和企业版存储型,目前只支持主备实例类型。(企业版存储型由内存+SSD磁盘组成。) 主备实例包含一个主节点,一个备节点,主备节点的数据通过实时复制保持一致,当主节点故障后,备节点自动升级为主节点。同时用户可通过读写分离技术,在主节点上写,从备节点读,从而提升缓存的整体读写性能。 规格 Redis提供8GB、16GB、32GB、64GB多种规格。 兼容开源版本 DCS企业版完全兼容开源Redis 6。 底层架构 基于虚拟机部署,单节点QPS达40万/秒。 高可用与容灾 除单机实例外,其他类型的实例都提供Region内的跨可用区部署,实现实例内部节点间的电力、网络层面物理隔离。
-
企业版高性能型 Redis 6.0企业版高性能型实例目前只支持主备实例类型,CPU类型为X86结构。 表6 Redis 6.0企业版高性能型实例产品规格 内存规格 (GB) 实例可使用内存 (GB) 最大连接数(默认/最大可配) (个) 基准/最大带宽 (Mbit/s) 参考性能 (QPS) 产品规格编码(对应API的spec_code) 8 8 10,000/50,000 1536/1536 400,000 redis.ha.xu1.large.enthp.8 16 16 10,000/50,000 1536/1536 400,000 redis.ha.xu1.large.enthp.16 32 32 10,000/50,000 1536/1536 400,000 redis.ha.xu1.large.enthp.32 64 64 10,000/50,000 1536/1536 400,000 redis.ha.xu1.large.enthp.64
-
企业版存储型 Redis 6.0企业版存储型实例目前只支持主备实例类型,CPU类型为X86结构。 企业版存储型由内存和SSD磁盘组成,使用内存缓存热数据,全量数据存储在SSD磁盘。下表中的“最大存储容量”即磁盘容量。 表7 Redis 6.0企业版存储型实例产品规格 内存规格 (GB) 最大存储容量 (GB) 最大连接数(默认/最大可配) (个) 基准/最大带宽 (Mbit/s) 参考性能 (QPS) 产品规格编码(对应API的spec_code) 8 64 10000/50000 768/768 70,000 redis.ha.xu1.large.entst.8 16 128 10000/50000 768/768 70,000 redis.ha.xu1.large.entst.16 32 256 10000/50000 768/768 70,000 redis.ha.xu1.large.entst.32
-
基础版主备实例 主备实例默认为2副本(包含1个主节点和1个备节点),支持设置副本数。 同一个内存规格,x86主备实例、Arm主备实例、主备不同副本数实例有如下差异: 可使用内存、连接数上限、基准/最大带宽、QPS:都一样。 产品规格编码(实例规格名称):表2中仅列出了默认副本数为2的实例规格名称,如果是其他副本个数,名称中相应修改副本数量,例如,8G规格的x86架构主备实例,主备2副本的名称为redis.ha.xu1.large.r2.8,3副本为redis.ha.xu1.large.r3.8,以此类推。 占用IP个数:占用的IP个数=主节点个数*副本个数。例如: 主备2副本实例,占用IP个数=1*2=2; 主备3副本实例,占用IP个数=1*3=3。 表2 Redis 6.0/7.0基础版主备实例产品规格 内存规格 (GB) 实例可使用内存 (GB) 最大连接数(默认/最大可配) (个) 基准/最大带宽 (Mbit/s) 参考性能 (QPS) 产品规格编码(对应API的spec_code) 0.125 0.125 10,000/10,000 40/40 80,000 x86:redis.ha.xu1.tiny.r2.128 Arm:redis.ha.au1.tiny.r2.128 0.25 0.25 10,000/10,000 80/80 80,000 x86:redis.ha.xu1.tiny.r2.256 Arm:redis.ha.au1.tiny.r2.256 0.5 0.5 10,000/10,000 80/80 80,000 x86:redis.ha.xu1.tiny.r2.512 Arm:redis.ha.au1.tiny.r2.512 1 1 10,000/50,000 80/80 80,000 x86:redis.ha.xu1.large.r2.1 Arm:redis.ha.au1.large.r2.1 2 2 10,000/50,000 128/128 80,000 x86:redis.ha.xu1.large.r2.2 Arm:redis.ha.au1.large.r2.2 4 4 10,000/50,000 192/192 80,000 x86:redis.ha.xu1.large.r2.4 Arm:redis.ha.au1.large.r2.4 8 8 10,000/50,000 192/192 100,000 x86:redis.ha.xu1.large.r2.8 Arm:redis.ha.au1.large.r2.8 16 16 10,000/50,000 256/256 100,000 x86:redis.ha.xu1.large.r2.16 Arm:redis.ha.au1.large.r2.16 24 24 10,000/50,000 256/256 100,000 x86:redis.ha.xu1.large.r2.24 Arm:redis.ha.au1.large.r2.24 32 32 10,000/50,000 256/256 100,000 x86:redis.ha.xu1.large.r2.32 Arm:redis.ha.au1.large.r2.32 48 48 10,000/50,000 256/256 100,000 x86:redis.ha.xu1.large.r2.48 Arm:redis.ha.au1.large.r2.48 64 64 10,000/50,000 384/384 100,000 x86:redis.ha.xu1.large.r2.64 Arm:redis.ha.au1.large.r2.64
-
基础版单机实例 表1 Redis 6.0/7.0基础版单机实例产品规格 内存规格 (GB) 实例可使用内存 (GB) 最大连接数(默认/最大可配) (个) 基准/最大带宽 (Mbit/s) 参考性能 (QPS) 产品规格编码(对应API的spec_code) 0.125 0.125 10,000/10,000 40/40 80,000 x86:redis.single.xu1.tiny.128 Arm:redis.single.au1.tiny.128 0.25 0.25 10,000/10,000 80/80 80,000 x86:redis.single.xu1.tiny.256 Arm:redis.single.au1.tiny.256 0.5 0.5 10,000/10,000 80/80 80,000 x86:redis.single.xu1.tiny.512 Arm:redis.single.au1.tiny.512 1 1 10,000/50,000 80/80 80,000 x86:redis.single.xu1.large.1 Arm:redis.single.au1.large.1 2 2 10,000/50,000 128/128 80,000 x86:redis.single.xu1.large.2 Arm:redis.single.au1.large.2 4 4 10,000/50,000 192/192 80,000 x86:redis.single.xu1.large.4 Arm:redis.single.au1.large.4 8 8 10,000/50,000 192/192 100,000 x86:redis.single.xu1.large.8 Arm:redis.single.au1.large.8 16 16 10,000/50,000 256/256 100,000 x86:redis.single.xu1.large.16 Arm:redis.single.au1.large.16 24 24 10,000/50,000 256/256 100,000 x86:redis.single.xu1.large.24 Arm:redis.single.au1.large.24 32 32 10,000/50,000 256/256 100,000 x86:redis.single.xu1.large.32 Arm:redis.single.au1.large.32 48 48 10,000/50,000 256/256 100,000 x86:redis.single.xu1.large.48 Arm:redis.single.au1.large.48 64 64 10,000/50,000 384/384 100,000 x86:redis.single.xu1.large.64 Arm:redis.single.au1.large.64
-
主备实例 主备实例默认为2副本(包含1个主节点和1个备节点),支持设置副本数。 同一个内存规格,x86主备实例、Arm主备实例、主备不同副本数实例有如下差异: 可使用内存、连接数上限、基准/最大带宽、QPS:都一样。 产品规格编码(实例规格名称):表2中仅列出了默认副本数为2的实例规格名称,如果是其他副本个数,名称中相应修改副本数量,例如,8G规格的x86架构主备实例,主备2副本的名称为redis.ha.xu1.large.r2.8,3副本为redis.ha.xu1.large.r3.8,以此类推。 占用IP个数:占用的IP个数=主节点个数*副本个数。例如: 主备2副本实例,占用IP个数=1*2=2; 主备3副本实例,占用IP个数=1*3=3。 表2 Redis 4.0和Redis 5.0主备实例产品规格 内存规格 (GB) 实例可使用内存 (GB) 最大连接数(默认/最大可配) (个) 基准/最大带宽 (Mbit/s) 参考性能 (QPS) 产品规格编码(对应API的spec_code) 0.125 0.125 10,000/10,000 40/40 80,000 x86:redis.ha.xu1.tiny.r2.128 Arm:redis.ha.au1.tiny.r2.128 0.25 0.25 10,000/10,000 80/80 80,000 x86:redis.ha.xu1.tiny.r2.256 Arm:redis.ha.au1.tiny.r2.256 0.5 0.5 10,000/10,000 80/80 80,000 x86:redis.ha.xu1.tiny.r2.512 Arm:redis.ha.au1.tiny.r2.512 1 1 10,000/50,000 80/80 80,000 x86:redis.ha.xu1.large.r2.1 Arm:redis.ha.au1.large.r2.1 2 2 10,000/50,000 128/128 80,000 x86:redis.ha.xu1.large.r2.2 Arm:redis.ha.au1.large.r2.2 4 4 10,000/50,000 192/192 80,000 x86:redis.ha.xu1.large.r2.4 Arm:redis.ha.au1.large.r2.4 8 8 10,000/50,000 192/192 100,000 x86:redis.ha.xu1.large.r2.8 Arm:redis.ha.au1.large.r2.8 16 16 10,000/50,000 256/256 100,000 x86:redis.ha.xu1.large.r2.16 Arm:redis.ha.au1.large.r2.16 24 24 10,000/50,000 256/256 100,000 x86:redis.ha.xu1.large.r2.24 Arm:redis.ha.au1.large.r2.24 32 32 10,000/50,000 256/256 100,000 x86:redis.ha.xu1.large.r2.32 Arm:redis.ha.au1.large.r2.32 48 48 10,000/50,000 256/256 100,000 x86:redis.ha.xu1.large.r2.48 Arm:redis.ha.au1.large.r2.48 64 64 10,000/50,000 384/384 100,000 x86:redis.ha.xu1.large.r2.64 Arm:redis.ha.au1.large.r2.64
-
单机实例 表1 Redis 4.0和Redis 5.0单机实例产品规格 内存规格 (GB) 实例可使用内存 (GB) 最大连接数(默认/最大可配) (个) 基准/最大带宽 (Mbit/s) 参考性能 (QPS) 产品规格编码(对应API的spec_code) 0.125 0.125 10,000/10,000 40/40 80,000 x86:redis.single.xu1.tiny.128 Arm:redis.single.au1.tiny.128 0.25 0.25 10,000/10,000 80/80 80,000 x86:redis.single.xu1.tiny.256 Arm:redis.single.au1.tiny.256 0.5 0.5 10,000/10,000 80/80 80,000 x86:redis.single.xu1.tiny.512 Arm:redis.single.au1.tiny.512 1 1 10,000/50,000 80/80 80,000 x86:redis.single.xu1.large.1 Arm:redis.single.au1.large.1 2 2 10,000/50,000 128/128 80,000 x86:redis.single.xu1.large.2 Arm:redis.single.au1.large.2 4 4 10,000/50,000 192/192 80,000 x86:redis.single.xu1.large.4 Arm:redis.single.au1.large.4 8 8 10,000/50,000 192/192 100,000 x86:redis.single.xu1.large.8 Arm:redis.single.au1.large.8 16 16 10,000/50,000 256/256 100,000 x86:redis.single.xu1.large.16 Arm:redis.single.au1.large.16 24 24 10,000/50,000 256/256 100,000 x86:redis.single.xu1.large.24 Arm:redis.single.au1.large.24 32 32 10,000/50,000 256/256 100,000 x86:redis.single.xu1.large.32 Arm:redis.single.au1.large.32 48 48 10,000/50,000 256/256 100,000 x86:redis.single.xu1.large.48 Arm:redis.single.au1.large.48 64 64 10,000/50,000 384/384 100,000 x86:redis.single.xu1.large.64 Arm:redis.single.au1.large.64
-
Redis版本差异 DCS在创建实例时,Redis可选择“版本号”、“实例类型”。 DCS Redis 3.0已下线,暂停售卖,建议使用Redis 4.0及以上版本。 Redis 7.0目前为公测阶段,仅白名单开放,如有需要请联系客服。 由于Redis不同版本的底层架构不一样,在创建Redis实例时,确定Redis版本后,将不能修改,如Redis 4.0暂不支持升级到Redis 5.0或者Redis 6.0。如果需要由低版本升级到高版本,建议重新购买高版本实例,然后进行数据迁移。 版本号 Redis版本号有3.0,4.0,5.0,6.0,7.0,它们的区别如表1。更多Redis特性,请参考Redis4.0新特性介绍、Redis5.0新特性介绍和Redis6.0新特性介绍。 表1 不同版本支持的特性、性能差异说明 比较项 Redis 3.0(已停售) Redis 4.0 & Redis 5.0 Redis 6.0 & Redis 7.0 兼容开源版本 DCS Redis 3.0兼容开源Redis 3.x,具体请参考如何查询Redis实例的原生版本 DCS Redis 4.0、Redis 5.0分别兼容开源Redis 4.x、Redis 5.x,具体请参考如何查询Redis实例的原生版本 DCS Redis 6.0、Redis 7.0分别兼容开源Redis 6.x、Redis 7.x,具体请参考如何查询Redis实例的原生版本 实例部署模式 采用虚拟机部署 在物理机上容器化部署 基础版在物理机上容器化部署 企业版采用虚拟机部署 创建实例耗时 3~15分钟,集群约10~30分钟 约8秒 基础版:约8秒 企业版:5~15分钟 QPS 单节点约10万QPS 具体每种实例规格对应的QPS请参考Redis 3.0实例(已停售) 单节点约10万QPS 具体每种实例规格对应的QPS请参考Redis 4.0/5.0实例 基础版单节点约10万QPS 企业版单节点约40万QPS 具体每种实例规格对应的QPS请参考Redis 6.0/7.0实例 域名 连接 支持VPC内使用域名连接 支持VPC内使用域名连接 支持VPC内使用域名连接 可视化数据管理 不支持 提供Web CLI访问Redis,管理数据 提供Web CLI访问Redis,管理数据 实例类型 支持单机、主备、Proxy集群 支持单机、主备、读写分离、Proxy集群、Cluster集群 Redis 6.0基础版:单机、主备、读写分离、Proxy集群、Cluster集群 Redis 6.0企业版:主备 Redis 7.0:单机、主备、Cluster集群 扩容/缩容 支持在线扩容和缩容 支持在线扩容和缩容 支持在线扩容和缩容 备份恢复 主备和Proxy集群实例支持 主备、Proxy集群、Cluster集群和读写分离实例支持 主备、Proxy集群、Cluster集群和读写分离实例支持 实例类型 Redis实例类型分为单机、主备、Proxy集群、Cluster集群和读写分离,它们的架构与应用场景,请参考DCS实例类型。 父主题: 产品规格差异
-
Redis企业版与基础版差异 DCS企业版为全自研的版本,100%兼容开源Redis软件,由传统的单master-单worker线程模型升级为master-N*worker线程模型,每个worker线程都可承担端口监听(监听建立网络链接的请求)、accept请求(接纳并建立网络链接)、读取数据(从网络链接如socket读写数据)和解析协议(解析并处理Redis命令等),依托于服务器计算能力的提升,整体性能N倍提升。 表1 企业版和基础版的能力对比 对比项 DCS基础版 DCS企业版 兼容开源Redis版本 兼容开源Redis 4.0/5.0/6.0/7.0,单线程 兼容开源Redis 6.0,多线程 性能 单分片QPS达10万/秒,最大时延1ms 企业版高性能型:单分片QPS达40万/秒 企业版存储型:单分片QPS达7万/秒 最大时延1ms 实例规格 提供单机、主备、集群、读写分离多种实例类型: 单机、主备实例可选择128MB-64G缓存容量 读写分离实例可选择8G-32G多种缓存容量 集群实例最大规格达2048GB 目前仅提供主备实例类型,可选择企业版高性能型和企业版存储型: 企业版高性能型可选择8GB-64GB内存容量 企业版存储型可选择8GB-32GB内存容量,最大存储容量(SSD磁盘容量)可达256GB 更多企业版高性能型和存储型的差异请参考表2。 数据安全 支持细粒度授权和IP白名单 除单机实例外,均支持持久化和数据备份 支持跨AZ容灾 支持异常自动切换 支持一键在线扩容和变更缓存类型 支持细粒度授权和安全组配置 支持持久化和数据备份 支持跨AZ容灾 支持异常自动切换 支持一键在线扩容 表2 企业版高性能型和存储型的差异 对比项 企业版高性能型 企业版存储型 QPS 单分片QPS达40万/秒,性能高于存储型。 单分片QPS达7万/秒。 存储方式 不支持SSD存储,纯内存。 使用aof的方式做数据持久化。 内存+SSD磁盘。 使用内存缓存热数据,全量数据存储在SSD磁盘中。 支持的备份文件格式 aof、rdb。 rdb。 父主题: 产品规格差异
-
约束与限制 只有当实例处于“运行中”状态,才能执行此操作。 只有Redis 4.0及以上版本实例支持该操作,Redis 3.0不支持该功能。 在Web CLI中,部分命令被禁用,详情请参考Web CLI中支持和禁用命令。 请勿通过Web CLI输入敏感信息,以免敏感信息泄露。 当前在Web CLI下所有命令参数暂不支持中文且key和value不支持空格。 当value值为空时,执行get命令返回nil。
-
DCS实例配置建议 连接池化 因lettuce底层采用基于netty的NIO模式,和redis server进行通信,不同于jedis的BIO模式。底层采用长连接 + 队列的组合模式,借助TCP顺序发、顺序收的特性,来实现同时处理多请求发送和多响应接收,单条连接可支撑的QPS在3K~5K不等,线上系统建议不要超过3K。lettuce本身不支持池化,且在springboot中默认不开启池化,如需开启池化,需通过手动引入commons-pool2组件,并关闭LettuceConnectionFactory.shareNativeConnection(共享连接)来实现池化。 因每条lettuce连接默认需要配置两个线程池-I/O thread pools、computation thread pool,用于支撑IO事件读取和异步event处理,如配置成连接池形式使用,每个连接都将会创建两个线程池,对内存资源的占用偏高。鉴于lettuce的底层模型实现,及单连接突出的处理能力,不建议通过池化的方式使用lettuce。 拓扑刷新 在连接cluster类型实例中,lettuce会在初始化时,向配置的节点列表随机发送cluster nodes来获取集群slot的分布信息。如后续cluster扩/缩容、主备切换等,会导致集群拓扑结构发生变化,lettuce默认是不感知的,需手动开启主动感知拓扑结构变化,如下: 基于application.properties配置 # 开启自适应拓扑刷新 spring.redis.lettuce.cluster.refresh.adaptive=true # 开启每10s定时刷新拓扑结构 spring.redis.lettuce.cluster.refresh.period=10S 基于API配置 ClusterTopologyRefreshOptions topologyRefreshOptions = ClusterTopologyRefreshOptions.builder() .enableAllAdaptiveRefreshTriggers() .enablePeriodicRefresh(Duration.ofMillis(redisClusterTopologyRefreshPeriodMillis)) .build(); ClusterClientOptions clientOptions = ClusterClientOptions.builder() ... ... .topologyRefreshOptions(topologyRefreshOptions) .build(); 爆炸半径 因lettuce底层采用的是单长连接 + 请求队列的组合模式,一旦遇到网络抖动/闪断,或连接失活,将影响所有请求,尤其是在连接失活场景中,将尝试tcp重传,直至重传超时关闭连接,待连接重建后才能恢复。在重传期间请求队列会不断堆积请求,上层业务非常容易出现批量超时,甚至在部分操作系统内核中的重传超时配置过长,致使业务系统长时间处于不可用状态。因此,不推荐使用lettuce组件,建议用jedis组件替换。
-
SSL连接配置(可选配置) 当实例开启了SSL,通过SSL连接实例时,请使用以下内容替换基于Bean方式配置中的LettuceClientConfiguration构造方法clientConfiguration()。Redis实例支持SSL的情况请参考配置Redis SSL 数据加密 传输。 单机、主备、读写分离、Proxy集群实例配置 @Bean public LettuceClientConfiguration clientConfiguration() { SocketOptions socketOptions = SocketOptions.builder().connectTimeout(Duration.ofMillis(redisConnectTimeout)).build(); SslOptions sslOptions = SslOptions.builder() .trustManager(new File(certificationPath)) .build(); ClientOptions clientOptions = ClientOptions.builder() .sslOptions(sslOptions) .autoReconnect(true) .pingBeforeActivateConnection(true) .cancelCommandsOnReconnectFailure(false) .disconnectedBehavior(ClientOptions.DisconnectedBehavior.ACCEPT_COMMANDS) .socketOptions(socketOptions) .build(); LettuceClientConfiguration clientConfiguration = LettuceClientConfiguration.builder() .commandTimeout(Duration.ofMillis(redisReadTimeout)) .readFrom(ReadFrom.MASTER) .clientOptions(clientOptions) .useSsl() .build(); return clientConfiguration; } Cluster集群实例配置 @Bean public LettuceClientConfiguration clientConfiguration() { SocketOptions socketOptions = SocketOptions.builder().connectTimeout(Duration.ofMillis(redisConnectTimeout)).build(); SslOptions sslOptions = SslOptions.builder() .trustManager(new File(certificationPath)) .build(); ClusterTopologyRefreshOptions topologyRefreshOptions = ClusterTopologyRefreshOptions.builder() .enableAllAdaptiveRefreshTriggers() .enablePeriodicRefresh(Duration.ofMillis(redisClusterTopologyRefreshPeriodMillis)) .build(); ClusterClientOptions clientOptions = ClusterClientOptions.builder() .sslOptions(sslOptions) .autoReconnect(true) .pingBeforeActivateConnection(true) .cancelCommandsOnReconnectFailure(false) .disconnectedBehavior(ClientOptions.DisconnectedBehavior.ACCEPT_COMMANDS) .socketOptions(socketOptions) .topologyRefreshOptions(topologyRefreshOptions) .build(); LettuceClientConfiguration clientConfiguration = LettuceClientConfiguration.builder() .commandTimeout(Duration.ofMillis(redisReadTimeout)) .readFrom(ReadFrom.MASTER) .clientOptions(clientOptions) .useSsl() .build(); return clientConfiguration; }
-
测试步骤 创建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
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格