redis如何解决key冲突_redis-cli连接redis数据库

redis如何解决key冲突_redis-cli连接redis数据库如果现在的我们离开了互联网,生活会是什么样子? 互联网++++,已经深刻渗透到人们的生活中。 不知道大家有没有想过?每一个互联网+结合的背后都是海量的存储需求。你查看的每一个商品、组建的每一个战队、阅

KeeWiDB:兼容Redis协议,领跑NoSQL

如果现在的我们离开了互联网,生活会是什么样子?

互联网++++,已经深刻渗透到人们的生活中。

不知道大家有没有想过?每一个互联网+结合的背后都是海量的存储需求。你查看的每一个商品、组建的每一个战队、阅读的每一篇文章,基于互联网的每一个兴趣爱好,都有它的key和value。

在 key-value 数据库领域,Redis 因其高吞吐、低延迟、丰富的数据结构一直受开发者欢迎,但 Redis 全内存方案无法解决海量数据所带来的规模与成本问题,数据可靠性也面临挑战

目前业界也有很多基于磁盘的键值存储方案,比如RocksDB、SSDB等。这些存储引擎设计之初是为了发挥磁盘的极致性能,很难在命中内存访问的时候提供Redis级的吞吐;同时磁盘本身的延迟远远高于内存,吞吐也是有限的。

讲道理,我们的市场需要一款产品既要保证用户的极致体验,又要确保海量数据的高可靠,还要尽可能低的成本。

怎么办呢?这里为大家介绍我们的新朋友:KeeWiDB,它可以给开发者提供一个高可靠、高效率、低成本的键值数据库解决方案。

KeeWiDB,什么来头?

KeeWiDB 是腾讯云数据库团队推出的新一代分布式KV存储数据库,兼容 Redis 协议和数据结构,上手门槛低(开发者狂喜)。

也就是说,Redis 有的它都有!它有的,就是它才有。那 KeeWiDB 有什么呢?

它可以,通过 WAL 机制支持数据的高速持久化,实现写入即存储;通过内存和持久内存提供热数据的极致读写性能,NVMe SSD磁盘提供大容量、低成本的存储能力,实现数据的冷热分级,优化存储成本。

总的来说,KeeWiDB 拥有前瞻的架构设计、行业领先的性能表现,可助力企业提升生产效率、降低运营成本。

接下来展开说说什么是前瞻的架构设计。

file
图:KeeWiDB总体架构图

proxy:兼容主从版、集群版客户端,客户端请求通过 proxy 实现智能路由和结果聚合;同时,proxy 还提供了流量控制和请求统计等功能。

集群设计:通过改进原生 Redis 的 gossip 方案,KeeWiDB 可有效降低在大集群场景下gossip 本身的流量消耗。数据 sharding 则采用 Redis 集群版策略,将所有 key 划分为16384个 slot,每个 shard 服务若干个 slot,key通过crc16(key) % 16384来获得 slot,再根据slot信息路由到对应节点。

分级存储:创新性地提供内存(DRAM),持久内存(PMEM),固态硬盘(SSD)分级存储解决方案,根据数据访问热度自动分级,将不同访问密度的数据存储到不同成本的介质中,有效实现了性能和成本的平衡。

file
图:KeeWiDB分级存储架构

在该架构中,DRAM 主要存储少量高速索引,如果查询操作直接命中高速索引,则可以直接定位到 value 的位置,最多仅需要一次 IO。

为了降低内存消耗,DRAM 层不存储 key,只存储 hashcode,这样可把 key 大小和索引容量解耦。举个例子,假设一个索引占用内存 hashcode(4) + posinfo(6),共计 10 个字节,100w key索引仅需要占用 10MB 内存。

假如高速缓存未命中,则需要通过 PMEM 来做查找,PMEM 的读取速度还是比较快的,假设按照 DRAM 100ns计算, PMEM可达到 1000ns。KeeWiDB 通过常规的 clock-sweep 算法淘汰不常访问的冷数据到 SSD,PMEM 保存的则是热数据,如果访问的是key 命中,性能将大幅提升。

如果命中的是冷数据,则需要到磁盘(SSD)读取,得益于 SSD 的快速发展,也可实现高性能。目前 KeeWiDB 的设备上,单盘 4k 随机读取 iops 可达到40w+,单盘 4k 随机写入也可以达到 15w+。因此实际使用中,特别是在主要读的场景下,即使PMEM和数据的比例达到 1:10,依然可以获得不错的性能。

KeeWiDB,有多强?

写入即存储

KeeWiDB 采用WAL(预写日志)持久机制,保障数据的原子性和持久性。日志内容会持久化到 PMEM 层,后台进行数据异步落盘,在保证数据实时持久化的同时实现数据的高速、低延迟写入。

极致性能

KeeWiDB 为 KV 场景定制了新一代存储引擎,大部分数据组织都是采用Hash的存取方式,同时与持久内存(PMEM)耦合,单节点最大性能可达到18万写入、28万读取,P99延迟小于2ms,同时可水平堆叠,性能线性提升。

分级存储

基于内存(DRAM)+持久内存(PMEM)+NVMe SSD磁盘搭建分级存储架构,由持久内存(PMEM)缓存访问热数据,磁盘(SSD)存储全量数据,持久内存和磁盘的容量可灵活配置。同时支持数据的冷热分离、自动升热降冷。无需在业务中处理缓存和存储的交换逻辑,可大幅提高版本迭代效率。

大容量低成本

KeeWiDB的原生分布式架构可以提供单实例百TB 级规模;通过持久内存(PMEM)和磁盘(SSD)提供更加灵活的存储方式,在满足业务性能要求的同时提供低成本方案。

智能运维

通过智能proxy和引擎层的多路采集,KeeWiDB 提供丰富的性能、时延、网络、容量、命中率等监控指标,帮助用户提前预警风险,快速定位和解决问题

KeeWiDB,怎么用?

电商场景

电商类应用通常拥有海量的商品数据,使用 KeeWiDB 可以轻松突破内存容量限制,并且大幅降低业务成本。在正常业务请求中,活跃的商品数据会从持久内存中读取,而不活跃的商品数据将从磁盘读取。KeeWiDB 新一代存储引擎带来更强劲的读取能力,单节点最大支持 28W + QPS、P99 延迟小于 2ms,轻松应对百万请求。在电商活动期间,可通过缓存资源的无损扩缩容,快速支撑陡增的性能需求。

游戏全服务

游戏业务包括登陆服务、匹配服务、组队服务、战队服务、社交服务等,需要存储不同的数据结构,比如 Hash 存储玩家信息、Zset 存储排行榜。KeeWiDB 兼容 Redis 的数据结构,对开发者非常友好,同时可将在线活跃的玩家数据持续缓存,未登录的玩家数据落冷至磁盘,玩家上线后数据自动缓存,从而大幅降低成本,保证热数据的极致性能,无需在业务侧处理缓存和存储交换的逻辑,可极大提升开发效率

新闻/内容平台

随着业务运营时间越来越长,内容数据在业务稳定后会有线性的增长,而客户访问的内容以近期、热点数据为主,所以热数据的容量比较稳定,冷数据会不断增大。KeeWiDB 可替换类似 Redis + MySQL 的缓存加存储方案,一体化的缓存+存储架构设计,解决缓存一致性问题的同时,提升业务开发效率,降低存储成本。

画像/推荐业务

当前互联网公司的核心资产是用户,基于用户行为的画像和推荐系统也成为互联网的基础设施,画像、特征、embedding 给企业带来了海量的 KV 存储需求,请求以点读和批量导入为主。KeeWiDB 通过冷热分级存储提供大容量、低成本的 KV 存储能力;通过命令级持久化,实现高速写入,缩短批量导入的窗口时间;通过分布式架构,能够提供百TB 的存储规模。

也说了不少了,大家应该对新朋友 KeeWiDB 有了一定的认识。

想详细了解 KeeWiDB 的高性能之路?且听下回分解。

腾讯云数据库一直致力于非关系型数据库产品的研发和投入,目前已经涵盖了包括缓存、文档、时序、KV在内的七款数据库产品,并且在持续丰富数据库服务的种类。目前,腾讯云 NoSQL 数据库服务了金融、电商、游戏、视频等数十个行业应用场景。

原文地址:https://www.cnblogs.com/tencentdb/archive/2022/09/21/16717213.html

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
转载请注明出处: https://daima100.com/4739.html

(0)
上一篇 2023-06-06 20:30
下一篇 2023-06-07

相关推荐

  • Linux虚拟机扩容根分区CentOs6.9 VMware14

    Linux虚拟机扩容根分区CentOs6.9 VMware141、首先关闭虚拟机点击编辑虚拟机设置 2、点击想要扩容的硬盘点击扩容 3、增加容量 输入想增加的容量,因为我本身是30G写到35G是加了5G不是增加30G.(此处为了演示只增加5G) 4、开启虚拟机

    2022-12-23
    141
  • 用Python正则表达式实现文本匹配和替换功能

    用Python正则表达式实现文本匹配和替换功能正则表达式是一种强大的文本处理工具,它可以帮助我们在一定规则下找到需要处理的内容,并进行相应的处理操作,比如查找、替换、匹配等。Python作为一门强大的编程语言,提供了re模块来支持正则表达式的操作。接下来,我们将从以下几个方面来详细阐述如何用Python正则表达式实现文本匹配和替换功能。

    2024-03-14
    85
  • sql递归查询父子节点「终于解决」

    sql递归查询父子节点「终于解决」一、表结构 二、递归查询当前节点的所有父节点 select * from test start with id = 3 connect by prior pid = id 三、递归查询当前节点的所有…

    2023-03-05
    159
  • 用Python计算100的平方根

    用Python计算100的平方根Python中可以通过调用math模块中的sqrt()函数来计算一个数的平方根。在上面的代码中,我们导入了math模块,并使用sqrt()方法对100进行计算,最终打印出结果为10。

    2024-04-11
    77
  • python中常用的for循环(Python For循环)

    python中常用的for循环(Python For循环)最简单的for i in range(5):循环5次,其中i第一次为0,第二次为1,以此类推,最后一次是4

    2023-11-24
    128
  • 制作MySQL RPM安装包Spec「建议收藏」

    制作MySQL RPM安装包Spec「建议收藏」适用环境: 数据库版本:MySQL 5.7.26 操作系统:CentOS 7 制作思路: 将数据库初始化和配置工作放到安装脚本中方便定制: 1、打包MySQL应用目录 2、不自动生成配置文件 3、不自

    2022-12-30
    168
  • 解决Python中tuple对象没有属性的问题

    解决Python中tuple对象没有属性的问题Python是一门非常强大的编程语言,特别适用于数据处理和科学计算领域。其中,tuple对象是一种常见的数据类型,用于存储一组有序的数据。虽然tuple对象在Python中非常重要,但是经常出现一个问题,即tuple对象没有属性。这就导致,如果要修改tuple对象中的某个元素,或者对tuple对象进行其他一些操作,就需要先将tuple对象转换成其他类型的对象。这对程序开发和数据处理过程都带来了极大的不便。

    2023-12-25
    109
  • 使用Python绘制简单的点图

    使用Python绘制简单的点图在数据分析与可视化领域,我们经常需要绘制各种类型的图表来展示数据。而在Python中,Matplotlib是一个常用的数据可视化工具库。如果你想绘制一个简单的点图,那么Matplotlib就可以轻松胜任这个任务。这篇文章将介绍如何使用Python以及Matplotlib库绘制简单的点图。

    2024-05-29
    57

发表回复

您的电子邮箱地址不会被公开。 必填项已用*标注