memcahe比redis好在哪里(Redis和Memcache的区别总结)
您好,今天帅帅来为大家解答以上的问题。memcahe比redis好在哪里,Redis和Memcache的区别总结相信很多小伙伴还不知道,现在让我们一起来看看吧!
1、1. Redis是什么这个问题的结果影响了我们怎么用Redis。
2、如果你认为Redis是一个key value store, 那可能会用它来代替MySQL;如果认为它是一个可以持久化的cache, 可能只是它保存一些频繁访问的临时数据。
3、Redis是REmote DIctionary Server的缩写,在Redis在官方网站的的副标题是A persistent key-value database with built-in net interface written in ANSI-C for Posix systems,这个定义偏向key value store。
4、还有一些看法则认为Redis是一个memory database,因为它的高性能都是基于内存操作的基础。
5、另外一些人则认为Redis是一个data structure server,因为Redis支持复杂的数据特性,比如List, Set等。
6、对Redis的作用的不同解读决定了你对Redis的使用方式。
7、互联网数据目前基本使用两种方式来存储,关系数据库或者key value。
8、但是这些互联网业务本身并不属于这两种数据类型,比如用户在社会化平台中的关系,它是一个list,如果要用关系数据库存储就需要转换成一种多行记录的形式,这种形式存在很多冗余数据,每一行需要存储一些重复信息。
9、如果用key value存储则修改和删除比较麻烦,需要将全部数据读出再写入。
10、Redis在内存中设计了各种数据类型,让业务能够高速原子的访问这些数据结构,并且不需要关心持久存储的问题,从架构上解决了前面两种存储需要走一些弯路的问题。
11、2. Redis不可能比Memcache快很多开发者都认为Redis不可能比Memcached快,Memcached完全基于内存,而Redis具有持久化保存特性,即使是异步的,Redis也不可能比Memcached快。
12、但是测试结果基本是Redis占绝对优势。
13、一直在思考这个原因,目前想到的原因有这几方面。
14、Libevent。
15、和Memcached不同,Redis并没有选择libevent。
16、Libevent为了迎合通用性造成代码庞大(目前Redis代码还不到libevent的1/3)及牺牲了在特定平台的不少性能。
17、Redis用libevent中两个文件修改实现了自己的epoll event loop(4)。
18、业界不少开发者也建议Redis使用另外一个libevent高性能替代libev,但是作者还是坚持Redis应该小巧并去依赖的思路。
19、一个印象深刻的细节是编译Redis之前并不需要执行./configure。
20、CAS问题。
21、CAS是Memcached中比较方便的一种防止竞争修改资源的方法。
22、CAS实现需要为每个cache key设置一个隐藏的cas token,cas相当value版本号,每次set会token需要递增,因此带来CPU和内存的双重开销,虽然这些开销很小,但是到单机10G+ cache以及QPS上万之后这些开销就会给双方相对带来一些细微性能差别(5)。
23、3. 单台Redis的存放数据必须比物理内存小Redis的数据全部放在内存带来了高速的性能,但是也带来一些不合理之处。
24、比如一个中型网站有100万注册用户,如果这些资料要用Redis来存储,内存的容量必须能够容纳这100万用户。
25、但是业务实际情况是100万用户只有5万活跃用户,1周来访问过1次的也只有15万用户,因此全部100万用户的数据都放在内存有不合理之处,RAM需要为冷数据买单。
26、这跟操作系统非常相似,操作系统所有应用访问的数据都在内存,但是如果物理内存容纳不下新的数据,操作系统会智能将部分长期没有访问的数据交换到磁盘,为新的应用留出空间。
27、现代操作系统给应用提供的并不是物理内存,而是虚拟内存(Virtual Memory)的概念。
28、基于相同的考虑,Redis 2.0也增加了VM特性。
29、让Redis数据容量突破了物理内存的限制。
30、并实现了数据冷热分离。
31、4. Redis的VM实现是重复造轮子Redis的VM依照之前的epoll实现思路依旧是自己实现。
32、但是在前面操作系统的介绍提到OS也可以自动帮程序实现冷热数据分离,Redis只需要OS申请一块大内存,OS会自动将热数据放入物理内存,冷数据交换到硬盘,另外一个知名的“理解了现代操作系统(3)”的Varnish就是这样实现,也取得了非常成功的效果。
33、作者antirez在解释为什么要自己实现VM中提到几个原因(6)。
34、主要OS的VM换入换出是基于Page概念,比如OS VM1个Page是4K, 4K中只要还有一个元素即使只有1个字节被访问,这个页也不会被SWAP, 换入也同样道理,读到一个字节可能会换入4K无用的内存。
35、而Redis自己实现则可以达到控制换入的粒度。
36、另外访问操作系统SWAP内存区域时block进程,也是导致Redis要自己实现VM原因之一。
37、5. 用get/set方式使用Redis作为一个key value存在,很多开发者自然的使用set/get方式来使用Redis,实际上这并不是最优化的使用方法。
38、尤其在未启用VM情况下,Redis全部数据需要放入内存,节约内存尤其重要。
39、假如一个key-value单元需要最小占用512字节,即使只存一个字节也占了512字节。
40、这时候就有一个设计模式,可以把key复用,几个key-value放入一个key中,value再作为一个set存入,这样同样512字节就会存放10-100倍的容量。
41、这就是为了节约内存,建议使用hashset而不是set/get的方式来使用Redis,详细方法见参考文献(7)。
42、6. 使用aof代替snapshotRedis有两种存储方式,默认是snapshot方式,实现方法是定时将内存的快照(snapshot)持久化到硬盘,这种方法缺点是持久化之后如果出现crash则会丢失一段数据。
43、因此在完美主义者的推动下作者增加了aof方式。
44、aof即append only mode,在写入内存数据的同时将操作命令保存到日志文件,在一个并发更改上万的系统中,命令日志是一个非常庞大的数据,管理维护成本非常高,恢复重建时间会非常长,这样导致失去aof高可用性本意。
45、另外更重要的是Redis是一个内存数据结构模型,所有的优势都是建立在对内存复杂数据结构高效的原子操作上,这样就看出aof是一个非常不协调的部分。
46、其实aof目的主要是数据可靠性及高可用性,在Redis中有另外一种方法来达到目的:Replication。
47、由于Redis的高性能,复制基本没有延迟。
48、这样达到了防止单点故障及实现了高可用。
49、小结要想成功使用一种产品,我们需要深入了解它的特性。
50、Redis性能突出,如果能够熟练的驾驭,对国内很多大型应用具有很大帮助。
本文就为大家分享到这里,希望小伙伴们会喜欢。
免责声明:本文由用户上传,与本网站立场无关。财经信息仅供读者参考,并不构成投资建议。投资者据此操作,风险自担。 如有侵权请联系删除!
-
亚马逊的气候友好承诺认证(Climate Pledge Friendly),俗称绿标认证,是平台对环保产品的权威认可。获得...浏览全文>>
-
亚马逊气候承诺友好认证(Climate Pledge Friendly)是平台为响应全球减碳趋势推出的战略性计划,旨在通过绿色...浏览全文>>
-
截至2024年,大众探岳GTE的售价可能会因地区、配置和促销活动而有所不同。一般来说,2024款探岳GTE的价格可能...浏览全文>>
-
关于2025款途观L的价格信息,目前还没有官方发布。不过,根据以往的市场规律和车型更新周期,我们可以大致推测...浏览全文>>
-
根据您提供的信息,2024款广东东莞威然的最低售价为22 99万元起。关于具体的落地价,需要考虑以下因素:1 ...浏览全文>>
-
根据您的描述,生活家PHEV 2025款的最低售价为 63 98万元起。如果目前有促销活动或优惠政策,建议尽快咨询...浏览全文>>
-
奔腾T99作为一汽奔腾旗下的旗舰SUV车型,凭借其大气的外观设计、丰富的科技配置以及出色的性能表现,吸引了众...浏览全文>>
-
当然可以!以下是一个简单的试驾预约流程,帮助您轻松开启智蓝G5新能源的试驾之旅:1 确定需求- 车型选择...浏览全文>>
-
特斯拉的赛博越野旅行车(Cybertruck)自发布以来就引发了广泛关注。这款车型结合了皮卡的实用性、SUV的多功能...浏览全文>>
-
江淮悍途EV是一款纯电动皮卡,如果您想预约试驾,通常需要满足以下条件和准备以下信息:1 基本条件 - 年...浏览全文>>
- 山东济南途观L新能源价格大公开,买车不花冤枉钱
- 东莞途岳最新价格2025款全分析,买车不踩坑
- 济南探岳GTE新车报价2024款,换代前的购车良机,不容错过
- 郑州ID.7 VIZZION多少钱 2024款落地价,配置升级,值不值得买?
- 郑州途锐新能源最新价格2024款,优惠购车,最低售价67.98万起
- 瑞虎7 PLUS新车报价2025款,买车前的全方位指南
- 广东东莞揽巡价格走势,市场优惠力度持续加大
- 轩逸新车报价2025款,买车前的全方位指南
- 飞凡R7新车报价2025款,换代前的购车良机,不容错过
- 试驾风光ix5,轻松搞定试驾
- 捷途山海L7预约试驾,从预约到试驾的完美旅程
- 试驾E福顺,从预约到试驾的完美旅程
- 长安星卡EV多少钱?选车指南与落地价全解析
- 凯翼E5 EV多少钱?如何挑选性价比高的车
- 标致408X预约试驾,快速操作,轻松体验驾驶乐趣
- 试驾星际牛魔王,新手必看的操作流程
- 岚图汽车岚图梦想家试驾预约,轻松几步,畅享豪华驾乘
- 影豹多少钱?全方位对比助你选车
- 豪运最新价格2023款,豪华配置超值价来袭
- 缤智多少钱 2025款落地价全解买车必看