首页 数据库 mysql教程 为什么使用 Redis及其产品定位 (转载自http://www.infoq.com/cn/articles/tq-w

为什么使用 Redis及其产品定位 (转载自http://www.infoq.com/cn/articles/tq-w

Jun 07, 2016 pm 05:37 PM
http redis 为什么 产品 使用 定位

传统MySQL+Memcached架构遇到的问题 实际MySQL 是适合进行海量存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题: 1. MySQL需要不断的进行拆库

传统MySQL+Memcached架构遇到的问题

实际MySQL 是适合进行海量存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量的不断增加,和访问量的持续增长,我们遇到了很多问题:

1. MySQL需要不断的进行拆库拆表,Memcached也需不断跟着扩容,扩容和维护工作占据大量开发时间。

2. Memcached与MySQL数据库数据一致性问题。

3. Memcached数据命中率低或down机,大量访问直接穿透到DB,MySQL无法支撑。

4. 跨机房cache同步问题。

 

众多NoSQL百花齐放,如何选择

最近几年,业界不断涌现出很多各种各样的NoSQ产品,那么如何才能正确地使用好这些作品,最大化地发挥其长处,是我们需要深入研究和思考的问题,实际归根结底最重要的是了解这些产品的定位,并且了解到每款产品的tradeoffs,在实际应用中做到扬长避短,总体上这些NoSQL主要用于解决以下几种问题

1. 少量数据存储,高速读写访问。此类产品通过数据全部in-momery的方式保证高速访问,同时提供数据落地的功能,实际这正是Radis最主要的适用场景。

2. 海量数据存储,分布式系统支持,数据一致性保证,方便的集群节点添加/删除。

3. 这方面最具代表性的是dynamo和bigtables 2篇论文所阐述的思路。前者是一个完全无中心的设计,节点之间通过gossip方式传递集群信息,数据保证最终一致性,后者是一个中心化的方案设计,通过类似一个分布式锁服务来保证强一致性,数据写入先写内存和redo log,然后定期compat归并到磁盘上,将随机写优化为顺序写,提高写入性能。

4. Schema free,auto-sharding等。比如目前常见的一些文档数据库都是支持schema-free的,直接存储json格式数据,并且支持auto-sharding等功能,,比如mongodb。

面对这些不同类型的NoSQL产品,我们需要根据我们的业务场景选择最合适的产品。

Redis适用场景,如何正确的使用

前面已经分析过,Redis最适合所有数据in-momory的场景,虽然Redis也提供持久化功能,但实际更多的是一个disk-backed的功能,跟传统意义上的持久化有比较大的差别,那么可能大家就会有疑问,似乎Redis更像一个加强版的Memcached,那么何时使用Memcached,何时使用Redis呢?

1.网络IO模型

Memcached是多线程,非阻塞IO复用的网络模型,分为监听主线程和worker子线程,监听线程监听网络连接,接受请求后,将连接描述字pipe 传递给worker线程,进行读写IO, 网络层使用libevent封装的事件库,多线程模型可以发挥多核作用,但是引入了cache coherency和锁的问题,比如,Memcached最常用的stats 命令,实际Memcached所有操作都要对这个全局变量加锁,进行计数等工作,带来了性能损耗。

 

(Memcached网络IO模型)

Redis使用单线程的IO复用模型,自己封装了一个简单的AeEvent事件处理框架,主要实现了epoll、kqueue和select,对于单纯只有IO操作来说,单线程可以将速度优势发挥到最大,但是Redis也提供了一些简单的计算功能,比如排序、聚合等,对于这些操作,单线程模型实际会严重影响整体吞吐量,CPU计算过程中,整个IO调度都是被阻塞住的。

2.内存管理方面

Memcached使用预分配的内存池的方式,使用slab和大小不同的chunk来管理内存,Item根据大小选择合适的chunk存储,内存池的方式可以省去申请/释放内存的开销,并且能减小内存碎片产生,但这种方式也会带来一定程度上的空间浪费,并且在内存仍然有很大空间时,新的数据也可能会被剔除,原因可以参考Timyang的文章:

Redis使用现场申请内存的方式来存储数据,并且很少使用free-list等方式来优化内存分配,会在一定程度上存在内存碎片,Redis跟据存储命令参数,会把带过期时间的数据单独存放在一起,并把它们称为临时数据,非临时数据是永远不会被剔除的,即便物理内存不够,导致swap也不会剔除任何非临时数据(但会尝试剔除部分临时数据),这点上Redis更适合作为存储而不是cache。

Redis更适合作为存储而不是cache。

3.数据一致性问题

Memcached提供了cas命令,可以保证多个并发访问操作同一份数据的一致性问题。 Redis没有提供cas 命令,并不能保证这点,不过Redis提供了事务的功能,可以保证一串 命令的原子性,中间不会被任何操作打断。

4.存储方式及其它方面

Memcached基本只支持简单的key-value存储,不支持枚举,不支持持久化和复制等功能

Redis除key/value之外,还支持list,set,sorted set,hash等众多数据结构,提供了KEYS

进行枚举操作,但不能在线上使用,如果需要枚举线上数据,Redis提供了工具可以直接扫描其dump文件,枚举出所有数据,Redis还同时提供了持久化和复制等功能。

5.关于不同语言的客户端支持

在不同语言的客户端方面,Memcached和Redis都有丰富的第三方客户端可供选择,不过因为Memcached发展的时间更久一些,目前看在客户端支持方面,Memcached的很多客户端更加成熟稳定,而Redis由于其协议本身就比Memcached复杂,加上作者不断增加新的功能等,对应第三方客户端跟进速度可能会赶不上,有时可能需要自己在第三方客户端基础上做些修改才能更好的使用。

 

根据以上比较不难看出,当我们不希望数据被踢出,或者需要除key/value之外的更多数据类型时,或者需要落地功能时,使用Redis比使用Memcached更合适。

关于Redis的一些周边功能

Redis除了作为存储之外还提供了一些其它方面的功能,比如聚合计算、pubsub、scripting等,对于此类功能需要了解其实现原理,清楚地了解到它的局限性后,才能正确的使用,比如pubsub功能,这个实际是没有任何持久化支持的,消费方连接闪断或重连之间过来的消息是会全部丢失的,又比如聚合计算和scripting等功能受Redis单线程模型所限,是不可能达到很高的吞吐量的,需要谨慎使用。

总的来说Redis作者是一位非常勤奋的开发者,可以经常看到作者在尝试着各种不同的新鲜想法和思路,针对这些方面的功能就要求我们需要深入了解后再使用。

总结:

后续关于Redis文章计划:

关于作者

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

免费的行情软件app网站 免费的行情软件app网站 Mar 05, 2025 pm 09:03 PM

本文介绍了免费的数字资产行情软件APP和网站,它们能为投资者提供实时价格、价格图表、交易量、涨跌幅、市场深度和新闻资讯等关键信息,帮助投资者做出明智的决策。 与收费软件相比,免费软件具有无需成本、功能丰富、操作简便等优势。 文章还指导用户如何选择合适的行情软件,并提醒用户注意数据来源、信息准确性和避免过度依赖等问题,最终助力投资者更好地把握数字资产市场动向。 想要了解如何高效利用免费行情软件?赶紧阅读全文!

Finalbosu空投全解:参与、赚取和加入白名单 Finalbosu空投全解:参与、赚取和加入白名单 Mar 05, 2025 pm 01:09 PM

Finalbosu是一个建立在抽象链上的社区驱动的NFT专案,将令人惊叹的动漫风格艺术作品与动态游戏玩法相结合,让玩家沉浸在一个丰富、不断发展的宇宙中。Finalbosu的座右铭是“克服一切困难”,旨在通过允许持有者塑造其角色、故事情节和品牌方向的未来,寻求在Web3游戏和NFT生态系统中开辟自己的利基市场。该专案已经获得了巨大的吸引力,其原始收藏的底价为1.9ETH——证明了强劲的市场需求和其不断壮大的社区的坚实支援。现在,随着Finalbo

Coinbase交易所登录入口2025 Coinbase交易所登录入口2025 Mar 21, 2025 pm 05:51 PM

Coinbase安全登录指南:如何避免钓鱼网站和诈骗? 网络钓鱼和诈骗日益猖獗,安全访问Coinbase官方登录入口至关重要。本文提供实用指南,帮助用户安全地找到并使用Coinbase最新官方登录入口,保护数字资产安全。我们将介绍如何识别钓鱼网站,以及如何通过官方网站、移动应用或可信第三方平台安全登录,并提供加强账户安全的建议,例如使用强密码和启用双重验证。 避免因错误登录导致资产损失,请务必仔细阅读本文!

不收钱的行情软件app网站有哪些 不收钱的行情软件app网站有哪些 Mar 05, 2025 pm 08:57 PM

本文提供免费数字资产行情软件全方位指南,助您零成本掌握市场脉搏。 在数字资产交易中,及时精准的行情数据至关重要,但昂贵的付费软件令许多新手望而却步。 幸运的是,众多免费的APP和网站提供实时价格追踪、历史数据回顾、交易量监控等功能,帮助您洞悉市场动态,做出明智决策。 文章将详细介绍免费行情软件的类型、选择技巧及注意事项,让您在风险极高的数字资产市场中,安全高效地进行投资。

Huobi交易所官网登录入口最新版 Huobi交易所官网登录入口最新版 Mar 05, 2025 pm 08:39 PM

本文提供Huobi交易所官网登录入口的最新信息,并强调获取最新入口的重要性,因为过时链接可能导致无法访问或安全风险。文章指出获取最新入口的途径包括:官方网站公告、Huobi官方客服以及可信的第三方平台。 此外,文章还提醒用户访问Huobi交易所时需注意核对域名、检查安全证书、启用双重验证以及谨防诈骗信息,以保障账户安全和资金安全。 选择正规渠道登录Huobi交易所,才能安全进行数字资产交易。

欧易交易所网页版注册入口 欧易注册入口 欧易交易所网页版注册入口 欧易注册入口 Mar 20, 2025 pm 05:48 PM

本文详细介绍了如何在欧易OKX交易所官网注册账户,并开始加密货币交易。欧易作为全球领先的加密货币交易所,提供丰富的交易品种、多种交易方式和强大的安全保障,并支持多种法币和加密货币的便捷出金。文章涵盖了欧易官网注册入口查找方法、详细注册步骤(包括邮箱/手机注册、信息填写、验证码验证等),以及注册后的注意事项(KYC认证、安全设置等),并解答了常见问题,帮助新手用户快速安全地完成欧易账户注册,开启加密货币投资之旅。

Analog(ANLOG)币是什么?ANLOG代币经济学及未来前景如何? Analog(ANLOG)币是什么?ANLOG代币经济学及未来前景如何? Mar 05, 2025 am 11:03 AM

Analog:Layer0区块链互操作性解决方案,实现多链生态无缝交互Analog是一款专注于区块链互操作性的Layer0协议,它利用其独有的时间链(Timechain)技术实现跨链通信和事件数据验证。其核心目标是解决多链生态的碎片化问题,通过去中心化的通用消息传递框架(GMP),让不同区块链能够无缝协作。Analog还创新性地采用了PoT(时间证明)共识机制,在时间链上生成可验证的事件数据,助力开发者构建新一代基于事件的应用。ANLOG代币:生态系统核心ANLOG是Anal

炒比特币属于炒股吗?为什么?两者区别有哪些? 炒比特币属于炒股吗?为什么?两者区别有哪些? Mar 05, 2025 pm 02:24 PM

比特币:数字黄金还是炒股衍生品?深度解析其投资本质比特币作为一种新兴的投资方式,其价格波动剧烈,与股票市场交易规则存在相似之处,引发了人们对其投资本质的疑问:炒比特币究竟是否等同于炒股?本文将从定义、性质、发行机制等方面深入探讨,揭开比特币投资的神秘面纱。比特币与股票:本质区别答案是:炒比特币并不等同于炒股。比特币是一种去中心化的数字货币,属于数字资产或虚拟资产范畴,其交易完全由用户自主控制,采用点对点(P2P)传输模式,形成去中心化的支付系统。这一概念由中本聪于2009年提出。不同于传统货币,

See all articles