云服务器内容精选

  • Cluster集群实例架构 Cluster版Redis集群兼容开源Redis的Cluster,基于smart client和无中心的设计方案,对服务器进行分片。 Cluster版Redis集群每种实例规格对应的分片数,如表1所示。 在创建D CS Cluster集群实例时,可以自定义分片大小。如果不自定义分片大小,使用系统默认分片,每个分片的大小=实例规格/分片数,例如,集群规格为48GB的实例,分片数为6,则每个集群分片的大小为48GB/6=8GB。 表1 Cluster集群实例规格和分片数的对应关系 集群版规格 分片数 4GB/8GB/16GB/24GB/32GB 3 48GB 6 64GB 8 96GB 12 128GB 16 192GB 24 256GB 32 384GB 48 512GB 64 768GB 96 1024GB 128 2048GB 128 无中心架构 Redis Cluster的任意节点都可以接收请求,但节点会将请求发送到正确的节点上执行,同时,每一个节点也是主从结构,默认包含一个主节点和一个从节点,由Redis Cluster根据选举算法决定节点主从属性。 图1 Redis Cluster无中心架构 数据预分片 Redis Cluster会预先分配16384个slot,每个Redis的server存储所有slot与redis server的映射关系。key存储在哪个slot中,由Crc16(key) mod 16384的值决定。如下图所示: 图2 Redis Cluster预分片示意图 Redis Cluster集群的每个分片也是一个Redis主备实例。当分片上的主节点故障时,该分片上的连接会有秒级中断、不可用,备节点在30秒内自动完成主备切换,单分片故障仅影响该分片上的数据访问,不影响其他分片上的数据访问。 Redis集群单分片主节点故障时,主备切换完成后,该分片原主节点(已切换为从节点)因故障不会立刻恢复,业务继续访问该分片原主节点会失败,可通过配置Redis SDK解决此类情况,具体请参见使用客户端连接Redis。
  • 读写分离实例 图1 读写分离实例 实例示意图说明: VPC终端节点 服务 VPC终端节点服务,主要是将Redis缓存实例配置为VPC终端节点支持的服务,用户可以直接通过VPC终端节点服务的地址访问。 Redis读写分离实例提供的IP地址和 域名 ,即为VPC终端节点服务的地址。 ELB 弹性负载均衡服务器,采用集群高可用方式,支持多可用区部署。 Proxy 代理服务器集群。通过Proxy节点识别用户读写请求,如果是写请求,则转发给主节点,如果是读请求,则转发给备节点,不需要用户在客户端做任何配置。 Sentinel集群 监控主备节点状态,当主节点出现故障或异常时,进行主备倒换,保证服务不中断。 主备实例 读写分离实例,后端是一个主备实例,包含了主和备两个节点。默认开启数据持久化功能,同时保持节点间数据同步。 主备节点支持跨可用区部署。
  • Lazy free机制 解决的痛点/问题 Redis是单线程程序,当运行一个耗时较大的请求时,会导致所有请求排队等待,在请求处理完成前,Redis不能响应其他请求,因此容易引发性能问题。而Redis删除大的集合键时,就属于一种比较耗时的请求。 原理 Redis 4.0提供的一种惰性删除或者说延迟释放机制,主要用于解决删除大key对Redis进程的阻塞,从而避免带来性能与可用性问题。 删除key时,Redis异步延时释放key的内存,把key释放操作放在bio(Background I/O)单独的子线程处理中。 使用方法 主动删除 unlink unlink与del命令目的一样,删除某个key。unlink在删除集合类键时,如果集合键的元素个数大于64个,会把内存释放操作,给单独的bio(Background I/O)线程来执行。因此unlink删除操作能在非常短的时间内完成包含上百万个元素的大key删除。 flushall/flushdb 通过对flushall/flushdb添加ASYNC异步清理选项,Redis在清理整个实例或单个DB时,操作都是异步的。 过期key删除、大key驱逐删除 被动删除有四种场景,每种场景对应一个配置参数,默认都是关闭: lazyfree-lazy-eviction no //针对redis内存使用达到maxmemory,并设置有淘汰策略时,是否采用lazy free机制 lazyfree-lazy-expire no //针对设置有TTL的键,过期后,被redis清理删除时是否采用lazy free机制 lazyfree-lazy-server-del no //针对有些指令在处理已存在的键时,会带有一个隐式的DEL键的操作 slave-lazy-flush no //针对slave进行全量数据同步,slave在加载master的RDB文件前,会运行flushall来清理自己的数据场景
  • Redis的Arm和x86实例有什么差异? 当前华为云DCS Redis实例的CPU架构支持Arm计算和x86计算。Arm Redis和x86的Redis两者功能是一样的。对客户端使用来说完全一样,没有额外的适配工作量。 可能在部分复杂的命令,大key且命令复杂度超过O(N)场景下,x86 Redis单CPU能力会强于Arm Redis。 综合来看,Arm Redis和x86 Redis能力和性能相当,都能满足业务需求,Arm Redis价格略低,请根据需要进行选择。 部分Region已停售“Arm计算”类型,推荐使用“x86计算”类型。 父主题: 实例类型/版本
  • 版本差异 DCS在创建实例时,Redis可选择“版本号”、“实例类型”。 DCS Redis 3.0已下线,暂停售卖,建议使用Redis 4.0/5.0/6.0。 版本号 版本号共有3.0,4.0,5.0,6.0版本可以选择,它们的区别如表1。更多Redis 4.0和Redis 5.0的特性,请参考Redis4.0新特性介绍“”和Redis5.0新特性介绍章节。 表1 不同版本支持的特性、性能差异说明 比较项 Redis 3.0 Redis 4.0 & Redis 5.0 Redis 6.0 兼容开源版本 Redis 3.0兼容开源3.0.7版本 Redis 4.0兼容开源4.0.14版本,Redis 5.0兼容开源5.0.14版本 说明: 2022年2月之前创建的Redis 5.0实例,兼容开源5.0.9版本。 开源版本查询可以参考如何查询Redis实例的原生版本。 如果需要兼容5.0.14版本的Redis,请重新创建实例。目前不支持Redis升级。 Redis 6.0基础版兼容开源6.2.7版本 Redis 6.0企业版兼容开源KeyDB 6.0.16版本 实例部署模式 采用虚机部署 在物理机上容器化部署 在物理机上容器化部署 CPU架构 支持x86 支持x86 支持X86 创建实例耗时 3~15分钟,集群约10~30分钟 约8秒 约8秒 QPS 单节点约10万QPS 单节点约10万QPS 基础版单节点约15万QPS 企业版单节点约40万QPS 公网访问 支持 暂不支持 暂不支持 域名连接 支持VPC内使用域名连接 支持VPC内使用域名连接 支持VPC内使用域名连接 可视化数据管理 不支持 提供Web CLI访问Redis,管理数据 提供Web CLI访问Redis,管理数据 实例类型 支持单机、主备、Proxy集群 支持单机、主备、Proxy集群、Cluster集群 基础版支持单机、主备、Cluster集群 企业版暂只支持主备 实例规格 提供2G、4G、8G直至1024G多种规格 提供2G、4G、8G直至1024G多种规格,同时单机主备还支持128MB、256MB、512MB、1GB四种小规格实例 提供4G、8G、16G、32G、64G多种规格,同时单机主备还支持128MB、256MB、512MB、1GB四种小规格实例 扩容/缩容 支持在线扩容和缩容 支持在线扩容和缩容 支持在线扩容和缩容 备份恢复 主备和Proxy集群实例支持 主备、Proxy集群和Cluster集群实例支持 主备 由于Redis不同版本的底层架构不一样,在创建Redis实例时,确定Redis版本后,将不能修改,如Redis 3.0暂不支持升级到Redis 4.0或者Redis 5.0。如果需要由低版本升级到高版本,建议重新购买高版本实例,然后进行数据迁移。 实例类型 Redis实例类型分为单机、主备、Proxy集群、Cluster集群,它们的架构与应用场景,请参考实例类型章节。 父主题: 实例类型/版本