云服务器内容精选
-
支持SSL Redis 6.0开始⽀持SSL/TLS⽅式的加密连接及加密传输,可通过在服务控制台上开启SSL服务,⽣成实例的SSL/TLS证书及密钥,在使⽤客户端连接时,指定该证书/密钥即可,连接⽰例如下: redis-cli --tls --cert /etc/redis/ssl/redis.crt --key /etc/redis/ssl/redis.key --cacert /etc/redis/ssl/redis.crt 详情请参见:SSL设置。
-
RESP3协议 在Redis 6.0中,推出了下⼀代Redis协议-RESP3,相比于RESP2协议,增加了⼀部分新的数据类型。 Null:空值,替代RESP2中的*-1、$-1 Array:有序集合 Simple string:节省空间的安全字符串(非⼆进制) Blob string:⼆进制格式的安全字符串 Simple error:节省空间的安全错误码/错误信息(非⼆进制) Blob Error:⼆进制格式的安全错误码/错误信息 Boolean:True/False,布尔类型 Number:有符号的64位整数 Big Number:⼤数字类型 Double:浮点数 Verbatim string:⼆进制格式的安全字符串,带文本格式 Map:无序的键值对 Set:⽆序的不重复元素集合 Attribute:属性键值对,类似于Map PUSH:带外数据,类似于Array,⽤于Redis服务端主动向客户端推送数据 Hello:hello命令返回的响应类型,⽤于客户端、服务端建立连接时使⽤
-
客户端缓存 Redis 6.0中通过TRACKING模块实现了主动通知客户端刷新缓存的机制,根据协议类型,实现⽅式如下: RESP3 普通模式 ⼴播模式 RESP2 转发模式 开启客户端缓存通知的格式如下: CLIENT TRACKING ON|OFF [REDIRECT client-id] [PREFIX prefix] [BCAST] [OPTIN][OPTOUT] [NOLOOP] 在RESP3协议中,主要是借助了PUSH类型的消息来实现服务端的主动推送通知。在普通模式中,Redis会记住每个客户端请求的key,当该key所对应的value发⽣变化时,将会发送失效消息(invalidation message)通知对应的客户端集合,但对于每个客户端仅会通知⼀次,即使后续该key所对应的value有其他操作改动,除非客户端在接收到失效消息后,再次通过读取该key的⽅式开启通知。开启普通模式的track功能命令如下 : CLIENT TRACKING ON 对于⼴播模式,则根据所track的key prefix来决定在符合key prefix的key所对应的value有所变化时,通知给所有的客户端,如key prefix所匹配的key数量较多,或改动较多,将会导致服务端发送⼤量的失效⼴播消息,消耗⽹络带宽。开启⼴播模式的track功能命令如下: CLIENT TRACKING ON BCAST PREFIX key-prefix 如客户端SDK不⽀持RESP3协议,只能采⽤RESP2协议的转发模式来实现客户端缓存主动更新通知,需要准备⼀个专⻔⽀持RESP3协议的客户端来作为中转节点,转发来⾃Redis的失效消息(invalidation message)⾄特定的订阅频道。⼯作原理如下: 图1 工作原理
-
内存使用优化 Redis 5.0在上一版本基础上,在内存使用上做了进一步优化。 主动碎片整理 当key被频繁修改,value长度不断变化时,Redis会为key分配新的内存空间。由于Redis追求高性能,实现了自己的内存分配器来管理内存,因此并不会将原有内存释放给OS,从而导致出现内存碎片。当used_memory_rss/used_memory高于1.5,一般认为内存碎片占比过高,内存利用率低。 因此,合理规划和使用缓存数据,规范数据写入,有助于减少内存碎片的产生。 Redis 3.0及以下:可以通过定期重启服务解决内存碎片问题。建议实际缓存数据不超过配置可用内存的50%。 Redis 4.0:支持主动整理内存碎片,服务在运行期间进行自动内存碎片清理。同时Redis 4.0支持通过memory purge命令手动清理内存碎片。 Redis 5.0:增强版主动碎片整理,配合Jemalloc版本更新,更快更智能,延时更低。 HyperLogLog算法优化 HyperLogLog是一种基数计数方法,使用少量的内存空间完成海量数据的计数统计,在Redis 5.0中,HyperLogLog算法得到改进,优化了计数统计时的内存使用效率。 举个例子:B树计数效率非常高,但是内存消耗也比较多。而HyperLogLog可节省大量存储空间。当B树需要1M内存统计,HyperLogLog只需要1kb。 内存信息统计报告能力增强 INFO命令返回信息更加详实。
-
RDB支持存储LFU、LRU Redis 5.0开始,RDB快照文件中增加存储key逐出策略LRU和LFU: FIFO:先进先出。最早存储的数据,优先被淘汰。 LRU:最近最少使用。长期未使用的数据,优先被淘汰。 LFU:最不经常使用。在一段时间内,使用次数最少的数据,优先被淘汰。 Redis 5.0的RDB文件格式有变化,向下兼容。因此如果使用快照的方式迁移,可以从Redis低版本迁移到Redis 5.0,但不能从Redis 5.0迁移到低版本。
-
Stream数据结构 Stream是Redis 5.0引入的一种新数据类型,它是一个全新的支持多播的可持久化消息队列。 Redis Stream的结构示意图如图1所示,它是一个可持久化的数据结构,用一个消息链表,将所有加入进来的消息都串起来。 Stream数据结构具有以下特性: Stream中可以有多个消费者组。 每个消费组都含有一个Last_delivered_id,指向消费组当前已消费的最后一个元素(消息)。 每个消费组可以含有多个消费者对象,消费者共享消费组中的Last_delivered_id,相同消费组内的消费者存在竞争关系,即一个元素只能被其中一个消费者进行消费。 消费者对象内还维持了一个Pending_ids,Pending_ids记录已发送给客户端,但是还没完成ACK(消费确认)的元素id。 Stream与Redis其他数据结构的比较,见表1。 图1 Stream数据结构示意图 表1 Stream与Redis现有数据结构比较 比较项 Stream List、Pub/Sub、Zset 复杂度 获取元素高效,复杂度为O(logN) List获取元素的复杂度为O(N) offset 支持offset,每个消息元素有唯一id。不会因为新元素加入或者其他元素淘汰而改变id。 List没有offset概念,如果有元素被逐出,无法确定最新的元素 持久化 支持消息元素持久化,可以保存到AOF和RDB中。 Pub/Sub不支持持久化消息。 消费分组 支持消费分组 Pub/Sub不支持消费分组 消息确认 支持ACK(消费确认) Pub/Sub不支持 性能 Stream性能与消费者数量无明显关系 Pub/Sub性能与客户端数量正相关 逐出 允许按时间线逐出历史数据,支持block,给予radix tree和listpack,内存开销少。 Zset不能重复添加相同元素,不支持逐出和block,内存开销大。 删除元素 不能从中间删除消息元素。 Zset支持删除任意元素 Stream相关命令介绍 接下来按照使用流程中出现的顺序介绍Stream相关命令。详细命令见表2 首先使用XADD添加流元素,即创建Stream,添加流元素时可指定消息数量最大保存范围。 然后通过XGROUP创建消费者组。 消费者使用XREADGROUP指令进行消费。 客户端消费完毕后使用XACK命令确认消息已消费成功。 图2 Stream相关命令介绍 表2 Stream的详细命令 命令 说明 语法 XACK 从流的消费者组的待处理条目列表(简称PEL)中删除一条或多条消息。 XACK key group ID [ID ...] XADD 将指定的流条目追加到指定key的流中。 如果key不存在,作为运行这个命令的副作用,将使用流的条目自动创建key。 XADD key ID field string [field string ...] XCLAIM 在流的消费者组上下文中,此命令改变待处理消息的所有权, 因此新的所有者是在命令参数中指定的消费者。 XCLAIM key group consumer min-idle-time ID [ID ...] [IDLE ms] [TIME ms-unix-time] [RETRYCOUNT count] [FORCE] [JUSTID] XDEL 从指定流中移除指定的条目,并返回成功删除的条目的数量,在传递的ID不存在的情况下, 返回的数量可能与传递的ID数量不同。 XDEL key ID [ID ...] XGROUP 该命令用于管理流数据结构关联的消费者组。使用XGROUP你可以: 创建与流关联的新消费者组。 销毁一个消费者组。 从消费者组中移除指定的消费者。 将消费者组的最后交付ID设置为其他内容。 XGROUP [CREATE key groupname id-or-$] [SETID key id-or-$] [DESTROY key groupname] [DELCONSUMER key groupname consumername] XINFO 检索关于流和关联的消费者组的不同的信息。 XINFO [CONSUMERS key groupname] key key [HELP] XLEN 返回流中的条目数。如果指定的key不存在,则此命令返回0,就好像该流为空。 XLEN key XPENDING 通过消费者组从流中获取数据。检查待处理消息列表的接口,用于观察和了解消费者组中哪些客户端是活跃的,哪些消息在等待消费,或者查看是否有空闲的消息。 XPENDING key group [start end count] [consumer] XRANGE 返回流中满足给定ID范围的条目。 XRANGE key start end [COUNT count] XREAD 从一个或者多个流中读取数据,仅返回ID大于调用者报告的最后接收ID的条目。 XREAD [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...] XREADGROUP XREAD命令的特殊版本,指定消费者组进行读取。 XREADGROUP GROUP group consumer [COUNT count] [BLOCK milliseconds] STREAMS key [key ...] ID [ID ...] XREVRANGE 与XRANGE相同,但显著的区别是以相反的顺序返回条目,并以相反的顺序获取开始-结束参数 XREVRANGE key end start [COUNT count] XTRIM XTRIM将流裁剪为指定数量的项目,如有需要,将驱逐旧的项目(ID较小的项目)。 XTRIM key MAXLEN [~] count 消息(流元素)消费确认 Stream与相比Pub/Sub,不仅增加消费分组模式,还支持消息消费确认。 当一条消息被某个消费者调用XREADGROUP命令读取或调用XCLAIM命令接管的时候, 服务器尚不确定它是否至少被处理了一次。 因此,一旦消费者成功处理完一条消息,它应该调用XACK知会Stream,这样这个消息就不会被再次处理, 同时关于此消息的PEL(pending_ids)条目也会被清除,从Redis服务器释放内存。 某些情况下,因为网络问题等,客户端消费完毕后没有调用XACK,这时候PEL内会保留对应的元素ID。待客户端重新连上后,XREADGROUP的起始消息ID建议设置为0-0,表示读取所有的PEL消息及自last_id之后的消息。同时,消费者消费消息时需要能够支持消息重复传递。 图3 ACK机制解读
-
单机实例特点 系统资源消耗低,支持高QPS 单机实例不涉及数据同步、数据持久化所需消耗的系统开销,因此能够支撑更高的并发。Memcached的单机实例QPS达到10万以上。 进程监控,故障后自动恢复 D CS 部署了业务高可用探测,单机实例故障后,30秒内会重启一个新的进程,恢复业务。 即开即用,数据不做持久化 单机实例开启后不涉及数据加载,即开即用。如果服务QPS较高,可以考虑进行数据预热,避免给后端数据库产生较大的并发冲击。 低成本,适用于开发测试 单机实例各种规格的成本相对主备减少40%以上。适用于开发、测试环境搭建。 总体说来,单机实例支持读写高并发,但不做持久化,实例重启时不保存原有数据。单机实例主要服务于数据不需要由缓存实例做持久化的业务场景,如数据库前端缓存,用以提升数据读取效率,减轻后端并发压力。当缓存中查询不到数据,可穿透至磁盘数据库中获取,同时,重启服务、缓存实例时,可从磁盘数据库中获取数据进行预热,降低后端服务在启动初期的压力。
-
实例架构设计 DCS的Memcached单机实例架构,如图1所示。 图1 Memcached单机实例示意图 示意图说明: VPC 虚拟私有云。实例的内部所有服务器节点,都运行在相同VPC中。 Memcached单机实例不支持公网访问,客户端需要与实例处于相同VPC,并且配置安全组访问规则。 相关参考:如何选择和配置Redis实例以及客户端的安全组。 客户应用 运行在ECS上的客户应用程序,即实例的客户端。 Memcached实例兼容开源协议,可直接使用开源客户端进行连接,关于多语言客户端连接示例,请参考用户指南的连接缓存实例。 DCS缓存实例 DCS实例,单机实例只有1个节点,1个Memcached进程。 DCS实时探测实例可用性,当Memcached进程故障后,DCS为实例重新拉起一个新的Memcached进程,恢复业务。 Memcached实例访问端口为11211。
更多精彩内容
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格