tencent cloud

云数据库 Tendis

产品动态
产品简介
产品概述
产品优势
应用场景
产品系列
产品性能
命令兼容性
地域和可用区
相关概念
相关产品
购买指南
计费概述
产品定价
欠费说明
快速入门
创建 Tendis 实例
连接 Tendis 实例
iptable 转发
操作指南
多语言连接
维护管理实例
监控功能
配置安全组
禁用命令
常见问题
使用常见问题
购买相关问题
连接登录问题
联系我们
Tendis 政策
隐私政策
数据处理和安全协议
词汇表

混合存储版

PDF
聚焦模式
字号
最后更新时间: 2024-12-19 20:25:27
云数据库 Tendis 混合存储版(集群架构)基于腾讯内部广泛使用的 KV(key-value)存储引擎 Tendis ,Tendis 是腾讯自研兼容 Redis 协议的 Rocksdb 存储引擎,拥有高性能、高压缩比、高稳定性特性,在腾讯内部有着丰富的运营经验。
混合存储版(集群架构)由缓存 Redis 和引擎 Tendis 两大组件构成,适用于 KV 存储场景,平衡了存储场景中性能和成本之间难题,在冷数据占比较大的场景中可帮业务降低多达80%的运营成本。
混合存储版(集群架构)完全兼容 Redis 4.0 集群版的版本命令,使用门槛低,可以充分利用 Redis 丰富的数据结构和操作命令带来的高效率。
混合存储版(集群架构)的全量数据存储于磁盘,全量 Key 和热 Key 的 Value 缓存于内存。

混合存储版特点

低成本

数据自动降冷自动缓存,全量数据存储于磁盘,热数据缓存于内存,和内存版相比运营成本可降低40% - 80%。
数据落盘自动压缩,采用 LZ4 压缩算法在性能和容量中寻找平衡,最大可降低 90% 的磁盘空间。

高效率

100%兼容 Redis 协议,业务可以完整地体验 Redis 高效的数据组织结构和操作接口。
使用 Tendis 混合存储版,业务无需再处理数据的冷热交换,以及传统缓存方案中数据一致性、缓存击穿、缓存雪崩等问题,降低了业务的复杂性,提升开发效率,降低运维成本。

高性能

提供与 Redis 一致的热数据访问性能,最大提供300万+ QPS
支持高达100万 QPS 的并发写入。

大容量

提供240GB - 32TB的超大存储容量规格。
磁盘数据支持6副本,充分保障数据的可靠性。

混合存储版架构

云数据库 Tendis 混合存储版(集群架构)核心组件由 Proxy、缓存 Redis、引擎 Tendis 组成,每个组件功能介绍如下:
Proxy:负责对客户端请求进行路由分发,将不同的 Key 命令分发到正确的分片,同时 Proxy 还负责部分监控数据的采集,以及高危命令在线禁用等功能。
缓存 Redis:缓存 Redis 组件源于 Redis 4.0 Cluster,为了支持冷数据自动降冷,我们对 Redis 进行了 Value 淘汰、写入数据同步 Tendis、冷数据访问、主备热数据同步、按时间淘汰 Value 等核心功能的改造,改造后的混合存储版100%兼容 Redis Cluster 命令。
引擎 Tendis:腾讯自研的 KV 存储引擎,兼容 Redis 协议,该引擎已经在腾讯内部运营多年,性能和稳定性得到了充分的验证,在混合存储系统中主要负责全量数据的存储和读取,以及数据备份,增量日志备份等功能。

混合存储版规格

说明:
磁盘最小容量必须大于内存容量,否则可能存在数据无法写入的情况。
磁盘配置过小,可能存在内存无法存储足够的 Key(所有 Key 都会缓存至内存,淘汰的只是 Value),请评估好磁盘空间。
最大写入性能是在 Set 命令128字节 value 情况下的测试结果,测试命令如下:
redis-benchmark -h 10.0.0.5 -p 6379 -c 100 -n 60000000 -r 1000000000 -d 128 -t set -a passwd
分片数量
总缓存容量(GB)
总磁盘容量范围(GB)
最大写入性能(QPS)
4
64
240 - 520
60,000
4
128
480 - 960
60,000
4
256
1000 - 2000
60,000
8
128
480 - 960
120,000
8
256
960 - 1920
120,000
8
512
2000 - 4000
120,000
16
256
960 - 1920
240,000
16
512
1920 - 3840
240,000
16
1024
4000 - 8000
240,000
32
512
3840 - 7680
480,000
32
1024
7680 - 15360
480,000
32
2048
16000 - 32000
480,000

数据降冷说明

Value 驱逐策略

value-eviction-policy
value-eviction-policy 参数支持 time-to-eviction、none,默认为 none,表示在内存足够的情况下 Key 默认不被驱逐出内存。
通过设置 value-eviction-policy 为 time-to-eviction,可指定 N 分钟未访问的 Key 自动被驱逐出内存。value-time-to-eviction 参数默认值为10080分钟(7天),可在 控制台 自助调整该参数值。
maxmemory-policy
混合存储版仅支持 allkeys-lru、allkeys-random,默认为 allkeys-lru。
当内存使用到达 maxmemory,系统将按照 maxmemory-policy 从内存策略驱逐 Value。

Value 缓存策略

value-cache-policy 通过该参数,用户可以配置数据何时缓存至 Tendis 缓存,通过以下参数可以避免遍历数据等情况,造成缓存失效的问题。
value-cache-policy-period 参数默认值为300秒(5分钟),可指定 N 秒钟内 Key 访问次数大于等于 N 次(value-cache-policy-threshold 参数值),Tendis 会将 Value 缓存至内存。
value-cache-policy-threshold 参数默认值为1,范围值可设置为1-100,该参数配置为1,冷数据将立即缓存。
Expire 语义说明 对于设置了 Expire Time 的 Key,混合存储版将保持原有的语义,将到期的 Key 和 Value 从内存和磁盘中删除。EXPIRE、EXPIREAT、PEXPIRE、PEXPIREAT 命令对 Key 进行设置过期时间也是相同原理,到期后 Key 和 Value 都会删除。
大 Key 驱逐说明 为保障读性能,混合存储当前版本对于超过8MB或者 filed 超过1000个的复杂结构 Value(非 string),将不从内存中驱逐,因此如果存在大 Hash 等复杂数据结构情况下,降冷效果不明显,后续我们将持续优化。

命令兼容性说明

混合存储版(集群架构)数据是分布式存储的,集群架构命令支持情况分为支持、自定义命令、不支持,详细命令兼容性列表请参见 命令兼容性
不支持的命令 系统将返回如下错误:
keys *
(error) ERR unknown command 'keys'
有限支持的命令 混合存储版(集群架构)兼容 Jediscluster 等智能客户端,为兼容 Jedis cluster 的使用场景,云数据库 Tendis 对 Cluster 支持命令返回对 IP 列表进行了修改,返回信息中每个节点的 IP 地址为实例的 VIP。
CLUSTER NODES
CLUSTER SLOTS
CONFIG GET
跨 Slot 命令支持 混合存储版(集群架构)目前支持跨 Slot 访问的命令,包括 MGET、MSET、DEL,其他多 Key 命令的跨 Slot 访问暂不支持。
自定义命令 混合存储版(集群架构)通过 VIP 封装,在集群模式下提供了单机版的使用体验,对业务的使用带来的极大的便利,但是对运维不够透明,因此通过自定义命令来弥补这块空缺,支持集群中每个节点的访问,支持方式为在原有命令的参数列表最右边新增一个参数【节点ID】,COMMAND arg1 arg2 ... [节点ID],节点 ID 可通过 cluster nodes 命令,或者在 控制台 中获取:
10.1.1.1:2000> cluster nodes
25b21f1836026bd49c52b2d10e09fbf8c6aa1fdc 10.0.0.15:6379@11896 slave 36034e645951464098f40d339386e9d51a9d7e77 0 1531471918205 1 connected
da6041781b5d7fe21404811d430cdffea2bf84de 10.0.0.15:6379@11170 master - 0 1531471916000 2 connected 10923-16383
36034e645951464098f40d339386e9d51a9d7e77 10.0.0.15:6379@11541 myself,master - 0 1531471915000 1 connected 0-5460
53f552fd8e43112ae68b10dada69d3af77c33649 10.0.0.15:6379@11681 slave da6041781b5d7fe21404811d430cdffea2bf84de 0 1531471917204 3 connected
18090a0e57cf359f9f8c8c516aa62a811c0f0f0a 10.0.0.15:6379@11428 slave ef3cf5e20e1a7cf5f9cc259ed488c82c4aa17171 0 1531471917000 2 connected
ef3cf5e20e1a7cf5f9cc259ed488c82c4aa17171 10.0.0.15:6379@11324 master - 0 1531471916204 0 connected 5461-10922

原生命令:
info server
自定义命令:
info server ef3cf5e20e1a7cf5f9cc259ed488c82c4aa17171

SCAN 命令示例:
scan 0 238b45926a528c85f40ae89d6779c802eaa394a2
scan 0 match a* 238b45926a528c85f40ae89d6779c802eaa394a2

KEYS 命令示例:
keys a* 238b45926a528c85f40ae89d6779c802eaa394a2
多数据库(DB)支持 混合存储版(集群架构)不支持多 DB,支持 SELECT 0 命令。
低性能命令
linsert、lrem:List 命令族中的 linsert、lrem 命令不建议使用,这两个命令会在磁盘中遍历 list 节点,命令的执行时间复杂度为 O(n),性能较差,list 节点数较大时,命令会执行超时。
append:append 命令在字符长度超过1MB后性能较差。

帮助和支持

本页内容是否解决了您的问题?

填写满意度调查问卷,共创更好文档体验。

文档反馈