redis与memcache对比


区别点memcacheredis
内存数据库

数据存放在内存


memcache还可用于缓存其他东西,例如图片、视频等等

数据存放在内存
数据类型仅仅支持简单的k/v类型的数据,需要客户端自己处理复杂对象

Redis不仅仅支持简单的k/v类型的数据,

同时还提供list,set,hash等数据结构的存储

虚拟内存
不支持Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘
具体用法:
(1)过期策略



(2)字节长度

memcache在set时就指定,

例如set key1 0 0 8,即永不过期


-Memcache在添加数据时就要指定数据的字节长度

Redis可以通过例如expire 设定,例如expire name 10




而redis不需要,如:redis 127.0.0.1:6379>set key2 "lxsymblog"
分布式
一主多从
memcache可以使用一致性hash做分布式
一主多从
redis支持master-slave复制模式
数据安全性-持久化
memcache不支持数据持久存储
memcache挂掉后,数据没了
redis可以定期保存到磁盘(持久化)
将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用
灾难恢复
memcache挂掉后,数据不可恢复
redis数据丢失后可以通过aof恢复
数据备份
Redis支持数据的备份,即master-slave模式的数据备份
单/多核Memcached可以使用多核

memcache需要使用cas保证数据一致性。CAS(Check and Set)是一个确保并发一致性的机制,属于“乐观锁”范畴;原理很简单:拿版本号,操作,对比版本号,如果一致就操作,不一致就放弃任何操作
Redis只使用单核

redis使用的是单线程模型,保证了数据按顺序提交。

在比较上,平均每一个核上 Redis在存储小数据时Memcached性能更高。
而在100k以上的数据中,Memcached性能要高于Redis,
虽然Redis最近也在存储 大数据的性能上进行优化,但是比起Memcached,还是稍有逊色。
内存使用效率
使用简单的key-value存储的话,Memcached的内存利用率更高,
而如果Redis采用hash结构来做key-value存储,
由于其组合式的压缩,其内存利用率会高于Memcached。当然,这和你的应用场景和数据特性有关。

cpu利用
redis单线程模型只能使用一个cpu,可以开启多个redis进程

注:

redis 优点: 丰富的数据类型和高速读写

redis缺点:

(1)持久化。redis将数据存储到内存有2种持久化方式:定时快照(snapshot)和基于语句的追加(appendOnlyFile,aof).snapshot的方法是指每隔一段时间将整个数据库的数据写到磁盘上,由于每次均写全部数据,

代价非常高;而aof方法只追踪变化的数据,但追加log可能过大,同时所有操作均要重新执行一遍,恢复速度慢。

(2)耗内存。尽管redis对一些数据结构采用了压缩算法存储,但占用内存量还是过高。

memcache优点:

(1)内存存储,速度快,对于内存的要求高,所缓存的内容非持久化。对于 CPU 要求很低,

所以常常采用将 Memcached 服务端和一些 CPU 高消耗 Memory 低消耗应用部属在一起 。

(2)分布式扩展: Memcached 的很突出一个优点,就是采用了可分布式扩展的模式。

可以将部属在一台机器上的多个 Memcached 服务端或者部署在多个机器上的 Memcached 服务端组成一个虚拟的服务端,对于调用者来说完全屏蔽和透明。提高的单机器的内存利用率 。

2. 如何选择

(1) 如果你对数据持久化和数据同步有所要求,那么推荐你选择Redis,因为这两个特性Memcached都不具备。即使你只是希望在升级或者重启系统后缓存数据不会丢失,选择Redis也是明智的。
(2)如果你需要缓存能够支持更复杂的结构和操作,那么Redis会是不错的选择。
Redis相比Memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,通常在Memcached里, 你需要将数据拿到客户端来进行类似的修改再set回去。这大大增加了网络IO的次数和数据体积。在Redis中,这些复杂的操作通常和一般的 GET/SET一样高效。
(3)在100k以上的数据中,Memcached性能要高于Redis。

参考

http://blog.163.com/sun_jian_zhang/blog/static/187804041201310795917333/

http://www.nginx.cn/2353.html

http://blog.163.com/xychenbaihu@yeah/blog/static/13222965520133994850357/

http://yale.iteye.com/blog/906124

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

多则惑少则明

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值