• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

Session存储到Redis中和存到memcache中哪个更好呢

php 搞代码 4年前 (2022-01-25) 11次浏览 已收录 0个评论
文章目录[隐藏]

谁能综合的评价下有缺点,如果能够提供相关资料就更好了。
比如什么情况下适合存在memcache,什么情况下适合redis?

回复内容:

谁能综合的评价下有缺点,如果能够提供相关资料就更好了。
比如什么情况下适合存在memcache,什么情况下适合redis?

好吧我不是来回答问题的 … 我是来自毁形象的 … 就当抛砖引玉了吧 …

memcache 和 redis 虽然经常被相提并论比来比去 … 但实际上这两个并不是一类 …

memcache … 是个 cache … 而 redis … 是个 database …

而对于这个问题 … 在我有限知识范围和片面的实际观察中 … 我的答案是 …

追求极限完美且应用逻辑简单时适合存到 memcache其余任何情况下都适合存到 redis

更明确的说 … 就是在 99.99% 的情况下 php 的 session 都适合存在 redis 里 …

好吧我知道这答案很伤人 … 欢迎更多的答案来提供不同意见 …

作为国内最早一批使用 memcache 的人 /本文来源gao@!dai!ma.com搞$$代^@码5网@搞代gaodaima码… 我在使用 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 的应用还有分布式什么的 …

想得越多思路就越不清晰 … 行文可能是有点乱 … 将就看一下啦 …

反正我是来自毁形象的 … 无比欢迎 memcache 党来战 …

对于单一的k-v缓存来说,memcache是最佳选择,它的好处就在于简单,速度也相当不错。

但是,如果你需要存储映射或字段,或者如果你要存储定序列表或可排序的集合,那么Redis是最合适的。

我个人认为Redis做DB还是有很多欠缺的,至少在数据持久化方面还是不够完善的。所以,Redis和memcache一样,主要的应用场景还是在缓存这一块儿。

如果只是做Session存储的话,我个人比较建议使用Memcached,速度方面较快而且应用简单,但如果你需要做一些持久化的东西你还是去用Redis。我的建议是你在设计系统的时候把这两块的接口都预留,可以随时切换。


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:Session存储到Redis中和存到memcache中哪个更好呢

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址