引用自:http://blog.csdn.net/e_wsq/article/details/23551799

最近需要用no-sql数据库来保存大量的数据,插入和查询都比较频繁,相对而言查询更加频繁。是选择Memcached、还是Redis呢?对Memcached与Redis做个相关测试,就知道了。

Memcached与Redis测试对比:

1)  性能方面:

相同的写入和读取数据次数,key为uuid, value为模拟的终端信息约600字节

单线程:

memcached的写入时间要优于redis, 而redis的读取时间优于memcached

20000次写入数据,memcached写入时间约为9000,msredis写入时间约为13000ms

20000次读取数据,memcached读取时间约为7000,msredis读取时间约为6000ms

多线程:

redis在低并发的时候比memcached好

60个并发

redis每个线程写入1000次数据,执行总用时约为5000ms;Memcached每个线程写入1000次数据,执行总用时约为10000ms

redis每个线程读取1000次数据, 执行总用时约为2000ms ;Memcached每个线程读取1000次数据,执行总用时约为8000ms

2) 内存使用效率:

如果使用简单的key-value存储,Memcached的内存利用率更高。

而如果Redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于Memcached。

这和应用场景和数据特性有关。

Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘

memcache 存在内存中,分配的内存满后,会按一定的规则删除一些k/v数据(LRU规则)

3)数据操作

Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,

通常在Memcached 里,你需要将数据拿到客户端来进行类似的修改再set回去。

这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的 GET/SET一样高效。

4)数据持久化和数据同步

Redis支持这两种,会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步,在升级或者重启系统后可以再次加载进行使用, 而memcached都不支持

5)分布式

两者都支持集群 一主多从或者一主一从

总结:两者的性能都比较高,这并不是瓶颈,Redis不仅仅支持简单的k/v类型的数据,同时还提供list,set,hash等数据结构的存储,如果需要缓存能够支持更复杂的结构和操作,那么Redis会是不错的选择。Redis,具备一定的数据库特征,可以将内存中的数据保持在磁盘中,当对数据的重要性比较高时,重启升级系统,Redis可以通过aof恢复部分数据。

根据以上的分析,建议还是使用redis。

redis与memcached比较的更多相关文章

  1. 浅谈redis和memcached的区别

    缓存技术方面说到redis大家必然会联想到memcached,了解它们的人应该都知道以下几点吧 redis与 memcached相比,redis支持key-value数据类型,同事支持list.set ...

  2. Redis 对比 Memcached 并在 CentOS 下进行安装配置

    了解一下 Redis Redis 是一个开源.支持网络.基于内存.键值对的 Key-Value 数据库,使用 ANSI C 编写,并提供多种语言的 API ,它几乎没有上手难度,只需要几分钟我们就能完 ...

  3. Redis和Memcached整体

    Redis和Memcached整体对比 Redis的作者Salvatore Sanfilippo曾经对这两种基于内存的数据存储系统进行过比较,总体来看还是比较客观的,现总结如下: 1)性能对比:由于R ...

  4. redis、memcached、mongoDB 对比与安装

    一.redis.memcached.mongoDB 对比 Memcached 和 Redis都是内存型数据库,数据保存在内存中,通过tcp直接存取,速度快,并发高.Mongodb是文档型的非关系型数据 ...

  5. redis和memcached缓存

    memcached memcache开源的,高性能,高并发分布式内存缓存系统,天生支持集群 memcached下载地址: http://memcached.org/downloads python实现 ...

  6. Redis与Memcached的区别

    传统MySQL+ Memcached架构遇到的问题 实际MySQL是适合进行海量数据存储的,通过Memcached将热点数据加载到cache,加速访问,很多公司都曾经使用过这样的架构,但随着业务数据量 ...

  7. Redis和Memcached的区别详解

    转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/119.html?1455855360 Redis的作者Salvatore ...

  8. Redis和Memcached对比

    Redis和Memcached对比 这两年 Redis火得可以,Redis也常常被当作 Memcached的挑战者被提到桌面上来.关于Redis与Memcached的比较更是比比皆是.然而,Redis ...

  9. Redis和Memcached的区别

    From: https://www.biaodianfu.com/redis-vs-memcached.html Redis的作者Salvatore Sanfilippo曾经对这两种基于内存的数据存储 ...

随机推荐

  1. Network Address Translation(转载)

    Network Address Translation  来源:http://alexanderlaw.blog.hexun.com/9791596_d.html       地址转换用来改变源/目的 ...

  2. [转]没有了SA密码,无法Windows集成身份登录,DBA怎么办?

    没有了SA密码,无法Windows集成身份登录,DBA怎么办?  原文:http://www.cnblogs.com/i6first/p/3512779.html 一同事反馈SQL无法正常登录了,以前 ...

  3. mysql 启动 pid报错解决方法

    在安装好mysqld的时候 启动的时候报错如下: [root@ mysql]# service mysqld start Starting MySQL.The server quit without ...

  4. VS2013添加解决方案内项目的引用,编译时提示找不到文件

    1.添加解决方案内项目引用 2.编译时报错 原因: 要引用的程序集的Framework版本与当前项目的版本不一致. 解决: 统一引用与被引用程序集的版本.

  5. linux 下 用户与用户组

    1,增加一个test组:groupadd test 2,将test组重命名test2:groupmod -n test2 test 3,删除test2组:groupdel test2 4,查看当前登录 ...

  6. angular.js ng-class-even ng-class-odd ng-cloak(没啥技术含量)

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title> ...

  7. java 线程的让步

    //线程的让步 // //线程 class xc1 implements Runnable{ public void run(){ for(int i=1;i<=30;i++){ System. ...

  8. python遍历删除列表的方法

    for item in list(somelist): somelist.remove(item)

  9. “请运行Chkdsk工具”怎么解决

    今天重新系统,想从移动硬盘中拷贝数据,但是老是提示:“请运行Chkdsk工具” 于是在百度搜索一下,有人提供的解决方案很不错,在些引用一下,以备忘! 电脑上经常遇到这样的提示“某某某文件已损坏且无法读 ...

  10. dataguard 归档丢失(主库中无此丢失归档处理),备库基于SCN恢复

    dataguard 归档丢失(主库中无此丢失归档处理),备库基于SCN恢复 环境: OS: CentOS 6.5 DB: Oracle 10.2.0.5 1.主备库环境 主库: SQL> sel ...