Redis和Memcache对比与如何选择

 更新时间:2020年07月19日 21:47:39   作者:EE_NovRain  
我这段时间在用redis,感觉挺方便的,但比较疑惑在选择内存数据库的时候到底什么时候选择redis,什么时候选择memcache,然后就查到下面对应的资料,是来自redis作者的说法(stackoverflow上面)
(福利推荐:【腾讯云】服务器最新限时优惠活动,云服务器1核2G仅99元/年、2核4G仅768元/3年,立即抢购>>>:9i0i.cn/qcloud

(福利推荐:你还在原价购买阿里云服务器?现在阿里云0.8折限时抢购活动来啦!4核8G企业云服务器仅2998元/3年,立即抢购>>>:9i0i.cn/aliyun

我这段时间在用redis,感觉挺方便的,但比较疑惑在选择内存数据库的时候到底什么时候选择redis,什么时候选择memcache,然后就查到下面对应的资料,是来自redis作者的说法(stackoverflow上面)。

You should not care too much about performances. Redis is faster per core with small values, but memcached is able to use multiple cores with a single executable and TCP port without help from the client. Also memcached is faster with big values in the order of 100k. Redis recently improved a lot about big values (unstable branch) but still memcached is faster in this use case. The point here is: nor one or the other will likely going to be your bottleneck for the query-per-second they can deliver.

You should care about memory usage. For simple key-value pairs memcached is more memory efficient. If you use Redis hashes, Redis is more memory efficient. Depends on the use case.

You should care about persistence and replication, two features only available in Redis. Even if your goal is to build a cache it helps that after an upgrade or a reboot your data are still there.

You should care about the kind of operations you need. In Redis there are a lot of complex operations, even just considering the caching use case, you often can do a lot more in a single operation, without requiring data to be processed client side (a lot of I/O is sometimes needed). This operations are often as fast as plain GET and SET. So if you don't need just GEt/SET but more complex things Redis can help a lot (think at timeline caching).

有网友翻译如下[1]:

    没有必要过多的关注性能。由于Redis只使用单核,而Memcached可以使用多核,所以在比较上,平均每一个核上Redis在存储小数据时比Memcached性能更高。而在100k以上的数据中,Memcached性能要高于Redis,虽然Redis最近也在存储大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。说了这么多,结论是,无论你使用哪一个,每秒处理请求的次数都不会成为瓶颈。

    你需要关注内存使用率。对于key-value这样简单的数据储存,memcache的内存使用率更高。如果采用hash结构,redis的内存使用率会更高。当然,这些都依赖于具体的应用场景。

    你需要关注关注数据持久化和主从复制时,只有redis拥有这两个特性。如果你的目标是构建一个缓存在升级或者重启后之前的数据不会丢失的话,那也只能选择redis。

    你应该关心你需要的操作。redis支持很多复杂的操作,甚至只考虑内存的使用情况,在一个单一操作里你常常可以做很多,而不需要将数据读取到客户端中(这样会需要很多的IO操作)。这些复杂的操作基本上和纯GET和POST操作一样快,所以你不只是需要GET/SET而是更多的操作时,redis会起很大的作用。

    对于两者的选择还是要看具体的应用场景,如果需要缓存的数据只是key-value这样简单的结构时,我在项目里还是采用memcache,它也足够的稳定可靠。如果涉及到存储,排序等一系列复杂的操作时,毫无疑问选择redis。

关于redis和memcache的不同,下面罗列了一些相关说法,供记录:

redis和memecache的不同在于[2]:

    1、存储方式:
    memecache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小
    redis有部份存在硬盘上,这样能保证数据的持久性,支持数据的持久化(笔者注:有快照和AOF日志两种持久化方式,在实际应用的时候,要特别注意配置文件快照参数,要不就很有可能服务器频繁满载做dump)。
    2、数据支持类型:
    redis在数据支持上要比memecache多的多。
    3、使用底层模型不同:
    新版本的redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
    4、运行环境不同:
    redis目前官方只支持LINUX 上去行,从而省去了对于其它系统的支持,这样的话可以更好的把精力用于本系统 环境上的优化,虽然后来微软有一个小组为其写了补丁。但是没有放到主干上

个人总结一下,有持久化需求或者对数据结构和处理有高级要求的应用,选择redis,其他简单的key/value存储,选择memcache。

到此这篇关于Redis和Memcache对比与如何选择的文章就介绍到这了,更多相关Redis和Memcache对比内容请搜索程序员之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持程序员之家!

相关文章

  • 详解百度https认证提示"请将您的http站点301重定向到https站点"的解决办法

    详解百度https认证提示"请将您的http站点301重定向到https站点"的解决办法

    对于301重定向这一概念玩SEO的同志们都不陌生了,近些年来https协议越来越火,百度大大已经明确了对https的扶持政策,这篇文章主要介绍了详解百度https认证提示"请将您的http站点301重定向到https站点"的解决办法,感兴趣的小伙伴们可以参考一下
    2018-12-12
  • 生产级K8S基础环境部署配置流程

    生产级K8S基础环境部署配置流程

    这篇文章主要为大家介绍了生产级K8S入门之基础环境的部署过程,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多
    2022-03-03
  • 阿里云ECS云服务器快照概念及使用教程

    阿里云ECS云服务器快照概念及使用教程

    这篇文章主要介绍了阿里云ECS云服务器快照概念以及使用,阿里云快照服务相当于一种数据备份手段,可以为所有类型的ECS云盘创建快照,用于备份或者恢复云盘的数据,是一种高效的数据容灾手段,需要的朋友可以参考下
    2022-04-04
  • 快速分辨清楚 IaaS、PaaS、BaaS和SaaS

    快速分辨清楚 IaaS、PaaS、BaaS和SaaS

    上到BAT的百度云、腾讯云、阿里云,再到各大手机厂商的华为云、OPPO云、联想云,甚至电商里的京东云、苏宁云等等。一时间,仿佛谁家不出一个云服务就不好意思说自己是互联网企业
    2017-06-06
  • Dubbo?系列JDK?SPI?原理解析

    Dubbo?系列JDK?SPI?原理解析

    这篇文章主要为大家介绍了Dubbo?系列JDK?SPI?原理解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-02-02
  • 教你如何搭建一个时间服务器

    教你如何搭建一个时间服务器

    这篇文章主要介绍了教你如何搭建一个时间服务器,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • Linux阿里云服务器中安装Nginx命令的详细过程

    Linux阿里云服务器中安装Nginx命令的详细过程

    这篇文章主要介绍了Linux(阿里云服务器)中安装Nginx命令,主要包括安装nginx依赖和配置环境变量的相关知识,本文给大家介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • 服务器Apache与Tomcat和Nginx的理解和对比分析详解

    服务器Apache与Tomcat和Nginx的理解和对比分析详解

    今天小编就为大家分享一篇关于服务器Apache与Tomcat和Nginx的理解和对比分析详解,小编觉得内容挺不错的,现在分享给大家,具有很好的参考价值,需要的朋友一起跟随小编来看看吧
    2019-04-04
  • github的使用_动力节点Java学院整理

    github的使用_动力节点Java学院整理

    这篇文章主要为大家详细介绍了github使用的相关资料,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-08-08
  • Keepalived+HAProxy高可用集群K8S实现

    Keepalived+HAProxy高可用集群K8S实现

    这篇文章主要为大家介绍了Keepalived+HAProxy实现高可用集群K8S的构建方式,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步
    2022-03-03

最新评论

?


http://www.vxiaotou.com