redismemcache非常像的,都是key,value的方式,将数据存放内存中。最近在学习redis,在网上看了一些这方面的资料,有三种观点:

  1. redis读写内存比memcache
  2. memcache读写内存比redis
  3. memcache读写内存比redis快,但是redis整体性能优于memcache
    所以我做了一下测试.

redis的测试结果

第一次

root@ubuntu:/home/yamatamain/download/webbench-1.5# webbench -c 10000 -t 30 http://localhost/php-redis/test_redis.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://localhost/php-redis/test_redis.php
10000 clients, running 30 sec.
Speed=48324 pages/min, 40318471 bytes/sec.
Requests: 22599 susceed, 1563 failed.
telnet 127.0.0.1 6379

telnet登录一下,把test对应的值清除掉,保重测试的公平性

del test

第二次

root@ubuntu:/home/yamatamain/download/webbench-1.5# webbench -c 10000 -t 30 http://localhost/php-redis/test_redis.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://localhost/php-redis/test_redis.php
10000 clients, running 30 sec.
Speed=53570 pages/min, 41217689 bytes/sec.
Requests: 23106 susceed, 3679 failed.
telnet 127.0.0.1 6379
del test

第三次

root@ubuntu:/home/yamatamain/download/webbench-1.5# webbench -c 10000 -t 30 http://localhost/php-redis/test_redis.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://localhost/php-redis/test_redis.php
10000 clients, running 30 sec.
Speed=49450 pages/min, 39694073 bytes/sec.
Requests: 22301 susceed, 2424 failed.
telnet 127.0.0.1 6379
del test

memcache测试结果

第一次
root@ubuntu:/home/yamatamain/download/webbench-1.5# webbench -c 10000 -t 30 http://localhost/php-redis/test_memcache.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://localhost/php-redis/test_memcache.php
10000 clients, running 30 sec.
Speed=61632 pages/min, 52228667 bytes/sec.
Requests: 29205 susceed, 1611 failed.
telnet 127.0.0.1 11211

telnet登录一下,把test1对应的值清除掉,保重测试的公平性

delete test1

第二次

root@ubuntu:/home/yamatamain/download/webbench-1.5# webbench -c 10000 -t 30 http://localhost/php-redis/test_memcache.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://localhost/php-redis/test_memcache.php
10000 clients, running 30 sec.
Speed=64160 pages/min, 52601449 bytes/sec.
Requests: 29426 susceed, 2654 failed.
telnet 127.0.0.1 11211
delete test1

第三次

root@ubuntu:/home/yamatamain/download/webbench-1.5# webbench -c 10000 -t 30 http://localhost/php-redis/test_memcache.php
Webbench - Simple Web Benchmark 1.5
Copyright (c) Radim Kolar 1997-2004, GPL Open Source Software.
Benchmarking: GET http://localhost/php-redis/test_memcache.php
10000 clients, running 30 sec.
Speed=65190 pages/min, 52506614 bytes/sec.
Requests: 29348 susceed, 3247 failed.
telnet 127.0.0.1 11211
delete test1

从上面比较结果,可以看出,memcacheredis快的。rediskey,value的管理,更灵活。有很多人把redis归于nosql的范围,细细想,还真是那么一回事。redis还可以把内在中的数据,放到磁盘中,这一点上,redis更像memcachedb。那么问题来了,到底是用redis还是memcached呢?
查到下面对应的资料,是来自redis作者的说法(stackoverflow上面)。

You should not care too much about performances. Redis is faster per corewith 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操作)。这些复杂的操作基本上和纯GETPOST操作一样快,所以你不只是需要GET/SET而是更多的操作时,redis会起很大的作用。

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

redismemecache的不同在于:

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

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

转载于:https://www.cnblogs.com/YamatAmain/p/9597317.html

redis memcache 性能比较相关推荐

  1. redis memcache 性能比较

    From: http://blog.51yip.com/cache/1318.html redis和memcache非常像的,都是key,value的方式,将数据存放内存中.最近在学习redis,在网 ...

  2. Redis 的性能幻想与残酷现实(转)

    2011 年,当初选择 Redis 作为主要的内存数据存储,主要吸引我的是它提供多样的基础数据结构可以很方便的实现业务需求.另一方面又比较担心它的性能是否足以支撑,毕竟当时 Redis 还属于比较新的 ...

  3. redis,memcache,mongodb对比

    这段时间对memcache,redis,mongodb 3种nosql进行了熟悉,简单的总结了下. 1.从3者的性能来看,memcache性能是最好的,redis次之(redis有单进程限制,会碰到c ...

  4. Redis 的性能幻想与残酷现实

    2011 年,当初选择 Redis 作为主要的内存数据存储,主要吸引我的是它提供多样的基础数据结构可以很方便的实现业务需求.另一方面又比较担心它的性能是否足以支撑,毕竟当时 Redis 还属于比较新的 ...

  5. Redis的性能幻想与残酷现实

    2011 年,当初选择 Redis 作为主要的内存数据存储,主要吸引我的是它提供多样的基础数据结构可以很方便的实现业务需求.另一方面又比较担心它的性能是否足以支撑,毕竟当时 Redis 还属于比较新的 ...

  6. redis java 性能_Redis 性能优化

    一.Linux 操作系统 [1]ulimit 与 TCP backlog:1).修改 ulimit:通过 ulimit 修改 open files 参数,redis 建议把 open files 至少 ...

  7. redis 持久化性能_高性能持久消息

    redis 持久化性能 总览 尽管有许多可用于Java的高性能消息传递系统,但大多数都避免引用基准,包括持久消息传递和消息的序列化/反序列化. 这样做有多种原因. 1)您并不总是需要或想要持久消息2) ...

  8. Redis, Memcache 基本使用

    Redis, Memcache Memcache MemCache是一个自由.源码开放.高性能.分布式的内存对象缓存系统,用于动态Web应用以减轻数据库的负载.它通过在内存中缓存数据和对象来减少读取数 ...

  9. Redis学习-性能与优化(五)

    实际开发的场景中,尤其是涉及到高并发的应用,关系型数据库常常无法满足业务需求,这时候从问题出发,尝试用redis这个基于内存的数据库,通常会因为它带来的几十倍甚至上百倍的性能使得问题迎刃而解.虽然满足 ...

最新文章

  1. linux常用命令-date-clock-hwclock-type-whois--help-man-info-cal
  2. NLP千亿预训练模型的“第四范式”之Prompt Learning介绍分享
  3. 汇编 整数常量 实数常量 字符常量 字符串常量 保留字 标识符 伪指令 指令 nop指令
  4. 修改php.ini参数,为何建议用ini_set()代替直接修改php.ini参数
  5. visual 对话框之间调用_两套S71200之间实现S7通讯的方法
  6. 下标 获取字符_【文山玩Python】如何从字符串中取一段或指定字符
  7. 让source insight更好的支持中文
  8. ubuntu如何安装python36_在Ubuntu 16.04下安装Python3.6,ubuntu1604,Python36
  9. 中国料斗底部谷物拖车市场趋势报告、技术动态创新及市场预测
  10. array2xml xml2array
  11. 学习可以借鉴的大牛们的网站
  12. 凸优化第七章统计估计 作业题
  13. Must Know Tips/Tricks in Deep Neural Networks (by Xiu-Shen Wei)
  14. 基于AVL-CRUISE 2014电动汽车建模与仿真之建模(一)
  15. mysql 表分区修复,硬盘分区表损坏后的数据恢复方法
  16. 趣图:程序员的斗志曲线图
  17. 8583协议报文例子。
  18. 使用Java 2D绘制黑白太极图案
  19. Java-append()方法
  20. DDS、openDDS和fast DDS介绍

热门文章

  1. 三分钟快速理解javascript内存管理
  2. 5G经济社会影响白皮书:2020年预计5G将创造约920亿元GDP
  3. 开源大数据周刊-第21期
  4. 面试题32.从1到n整数中1出现的次数
  5. optimizer_mode优化器模式
  6. 【语法】NSMutableArray可变数组
  7. ADO.NET实例教学一
  8. 在visual studio 2010下搭建OGRE项目
  9. [Android开发]zip文件压缩解压缩
  10. JavaEE程序员必读图书大推荐