设为首页 收藏本站
查看: 1362|回复: 0

[经验分享] memcache和redis的比较

[复制链接]

尚未签到

发表于 2018-11-6 13:31:34 | 显示全部楼层 |阅读模式
  memcache 和 redis 虽然经常被相提并论比来比去 ... 但实际上这两个并不是一类 ...
  memcache ... 是个 cache ... 而 redis ... 是个 database ...
  而对于这个问题 ... 在我有限知识范围和片面的实际观察中 ... 我的答案是 ...
  在 追求极限完美且应用逻辑简单时适合存到 memcache ... 其余任何情况下都适合存到 redis ...
  更明确的说 ... 就是在 99.99% 的情况下 php 的 session 都适合存在 redis 里 ...
  好吧我知道这答案很伤人 ... 欢迎更多的答案来提供不同意见 ...
  作为国内最早一批使用 memcache 的人 ... 我在使用 redis 之后没多久就基本放弃 memcache 了 ...
  memcache 并不是一无是处 ... 它与现在的 redis 相比 ... 唯一的优势 ... 就是快 ...
  同样的环境下同样的负载同样的 k/v 结构数据 ...
  在单条数据比较小的时候 ... 不管是读还是写 ... memcache 永远比 redis 快那么几十 μs ...
  虽然差距微乎其微但 redis 从未赢过 ...
  如果你非常非常的在乎这一点点的时间差距 ... 恩 ... 你有成为 0.01% 的潜质 ... 但还不是 ...
  现在来看你的应用场景 ... 想成为那 0.01% ... 你的 session 里面只能存储一个单位 ...
  比如只存储用户名来获得一个 key 到 username 的对应 ... 而不能是数组 ...
  因为不管是 serialize / set 还是 get / unserialize 都慢于 hSet 和 hGet ...
  之前我们好不容易争取了几十 μs ... 结果就这样被白白消耗掉了 ...
  如果你能做好这个架构 ... 0.01% 俱乐部的大门正在为你打开 ...
  但等等 ... 抛开性能 ... 再设想两个场景 ...
  场景一 ... 假如存储 session 的机器被重启了 ...
  用 memcache 的后果是 ... 所有用户都必须重新获得 session ... 瞬时数据库压力会很大 ...
  而用 redis 就不会 ... 充其量只是丢失那些还没来得及保存的 session ...
  场景二 ... 假如突然涌来大量用户产生了很多数据把存储 session 的机器内存占满了 ...
  memcache 会罢工 ... 所有 key 都没过期的话就不停的覆盖最后写入的数据 ...
  而 redis 只是会变慢 ... 不会影响程序的逻辑 ...
  如果你确认这些都不会发生 ... 欢迎使用 memcache 来获得满足你对极限完美效率的追求 ...
  基本上现在还在使用 memcache 存储 session 的据我所知只有两类人 ...
  第一类是为了追求完美以及炫技 ... 也就是那 0.01% ...
  第二类是食古不化或者代码实在太复杂导致无法更换 ...
  如果你不属于这两类人 ... 欢迎使用主流的 redis ...
  大体来说就是这样 ... 一边想一边写也不知道自己写了多少 ...
  这话题其实不太好回答 ... 要展开的话能展开到超大 ... 攒成一篇论文都行 ...
  我这就是想到哪里写到哪里 ... 有些点能想到但落实到文字上又不知道该怎么去描述 ...
  比如内存管理 ... 对多核 CPU 的应用还有分布式什么的 ...
  想得越多思路就越不清晰 ... 行文可能是有点乱 ... 将就看一下啦 ...


运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-631602-1-1.html 上篇帖子: memcache和redis的比较 下篇帖子: python 分析redis
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表