Redis vs Memcached?

栏目: 数据库 · 发布时间: 6年前

内容简介:在纯Key/Value应用场景(例如缓存),数据量非常大并且并发量非常大,Memcached拥有更高的读写性能;首先在在数据持久化方面redis有更强大的功能。但是redis的快照不能保证数据不丢失,AOF会降低效率并且不能支持太大的数据量。如果只是缓存场景,那么开启固化可以在重启的时候有预热的数据不会导致数据库瞬间压力过大,但是可能会导致一些数据不一致,所以只能在允许一些数据不一致或者只读场景下使用。在数据同步场景,Redis拥有更为丰富的数据类型(哈希、列表、集合、有序集合)。
Redis Memcached
网络IO模型 单线程的IO复用的网络模型 多线程的非阻塞IO复用的网络模型
支持的数据结构 key-value数据类型,还支持list、set、zset、hash等 key-value形式存储和访问数据
内存管理机制 现场申请内存 预分配的内存池
数据存储及持久化 in-memory、支持持久化:快照、AOF in-memory,不支持持久化
虚拟内存 物理内存用完时,可利用虚拟内存(不建议开启,开销大) 物理内存用完时,LRU替换掉不常用的缓存
数据一致性 提供事务,保证命令的原子性,中间不会被任何操作打断 提供了cas命令,保证多个并发访问操作同一份数据的一致性
集群管理 服务器端构建分布式存储 只能采用客户端实现分布式存储,比如在客户端用一致性哈希
性能 单核,数据量<10w 时高,数据量>10w时低 多核,数据量<10w时低,数据量>10w时高

在纯Key/Value应用场景(例如缓存),数据量非常大并且并发量非常大,Memcached拥有更高的读写性能;首先在 内存分配机制 上,Memcached使用预分配内存可以减少内存分配时间,Redis临时申请空间可能导致碎片。所以 Memcached 会快一些。其次在 VM 方面,Memcached把所有数据都放在物理内存,Redis有自己的VM机制,数据超量的时候会引发swap把冷数据刷到磁盘上。所以数据量大时Memcached会快一点。然后在 网络模型 上,Redis和Memcached都是使用非阻塞IO复用模型,但 Redis 还提供一些 排序 、聚合功能,复杂的计算会阻塞整个IO调度。最后在 线程模型 上,Memcached是多线程,主线程监听,worker子线程接收请求,执行读写,过程中可能有锁冲突。Redis是单线程,虽然无锁但是不能利用多核CPU的优势。

在数据持久化方面redis有更强大的功能。但是redis的快照不能保证数据不丢失,AOF会降低效率并且不能支持太大的数据量。如果只是缓存场景,那么开启固化可以在重启的时候有预热的数据不会导致数据库瞬间压力过大,但是可能会导致一些数据不一致,所以只能在允许一些数据不一致或者只读场景下使用。

在数据同步场景,Redis拥有更为丰富的数据类型(哈希、列表、集合、有序集合)。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

深入理解计算机系统(英文版·第2版)

深入理解计算机系统(英文版·第2版)

[美] Randal E. Bryant、[美] David R. O'Hallaron / 机械工业出版社 / 2011-1 / 128.00元

本书是一本将计算机软件和硬件理论结合讲述的经典教程,内容覆盖计算机导论、体系结构和处理器设计等多门课程。本书的最大优点是为程序员描述计算机系统的实现细节,通过描述程序是如何映射到系统上,以及程序是如何执行的,使读者更好地理解程序的行为为什么是这样的,以及造成效率低下的原因。 相对于第1版,本版主要是反映了过去十年间硬件技术和编译器的变化,具体更新如下: 1. 对系统的介绍(特别是实际使......一起来看看 《深入理解计算机系统(英文版·第2版)》 这本书的介绍吧!

RGB转16进制工具
RGB转16进制工具

RGB HEX 互转工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具