Redis应用现场申请内存的方法来存储数据,并且很少应用free-list等方法来竽暌古化内存分派,会在必定程度上存在内存碎片,Redis跟据存储敕令参数,会把带过不时光的数据零丁存放在一路,并把它们称为临时数据,非临时数据是永远不会被剔除的,即便物理内存不敷,导致swap也不会剔除任何非临时数据(但会测验测验剔除部分临时数据),这点上Redis更合适作为存储而不是cache。
数据存储及持久化
memcached不支撑内存数据的持久化操作,所有的数据都以in-memory的情势存储。
redis支撑持久化操作。redis供给了两种不合的持久化办法来讲数据存储到硬盘琅绫擎,一种是快照(snapshotting),它可以将存在于某一时刻的所稀有据都写入硬盘琅绫擎。另一种办法叫只追加文件(append-only file, AOF),它会在履行写敕令时,将被履行的写敕令复制到硬盘琅绫擎。
数据一致性问题
Memcached供给了cas敕令,可以包管多个并发拜访操作同一份数据的一致性问题。 Redis没有供给cas 敕令,并不克不及包管这点,不过Redis供给了事务的功能,可以包管一串 敕令的原子性,中心不会被任何操作打断。
集群治理不合
Memcached是全内存的数据缓冲体系,Redis固然支撑数据的持久化,然则全内存毕竟才是其高机能的本质。作为基于内存的存储体系来说,机械物理内存的大年夜小就是体系可以或许容纳的最大年夜数据量。如不雅须要处理的数据量跨越了单台机械的物理内存大年夜小,就须要构建分布式集群来扩大存储才能。
Memcached本身并不支撑分布式,是以只能在客户端经由过程像一致性哈希如许的分布式算法来实现Memcached的分布式存储。下图给出了Memcached的分布式存储实现架构。当客户端向Memcached集群发送数据之前,起首会经由过程内置的分布式算法计算出该条数据的目标节点,然后数据会直接发送到该节点上存储。但客户端萌芽数据时,同样要计算出萌芽数据地点的节点,然后直接向该节点发送萌芽请求以获取数据。
Memcached默认应用Slab Allocation机制治理内存,其重要思惟是按照预先规定的大年夜小,将分派的内存瓜分成特定长度的块以存储响应长度的key-value数据记录,以完全解决内存碎片问题。Slab Allocation机制只为存储外部数据而设计,也就是说所有的key-value数据都存储在Slab Allocation体系里,而Memcached的其它内存请求则经由过程通俗的malloc/free来申请,因为这些请求的数量和频率决定了它们不会半数个体系的机能造成影响Slab Allocation的道理相当简单。 如图所示,它起首大年夜操作体系申请一大年夜块内存,并将其瓜分成各类尺寸的块Chunk,并把尺寸雷同的块分成组Slab Class。个中,Chunk就是用来存储key-value数据的最小单位。每个Slab Class的大年夜小,可以在Memcached启动的时刻经由过程制订Growth Factor来控制。假定图中Growth Factor的取值为1.25,如不雅第一组Chunk的大年夜小为88个字节,第二组Chunk的大年夜小就为112个字节,依词攀类推。
相较于Memcached只能采取客户端实现分布式存储,Redis更偏向于在办事器端构建分布式存储。最新版本的Redis已经支撑了分布式存储功能。Redis Cluster是一个实现了分布式且许可单点故障的Redis高等版本,它没有中间节点,具有线性可伸缩的功能。Redis Cluster的分布式存储架构,节点与节点之间经由过程二进制协定进行通信,节点与客户端之间经由过程ascii协定进行通信。在数据的放置策略上,Redis Cluster将全部key的数值域分成4096个哈希槽,每个节点上可以存储一个或多个哈希槽,也就是说当前Redis Cluster支撑的最大年夜节点数就是4096。Redis Cluster应用的分布式算法也很简单:crc16( key ) % HASH_SLOTS_NUMBER。
为了包管单点故障下的数据可用性,Redis Cluster惹人了Master节点和Slave节点。在Redis Cluster中,每个Master节点都邑有对应的两个用于冗余的Slave节点。如许在全部集群中,随便率性两个节点的宕机都不会导致数据的弗采取。当Master节点退出后,集群会主动选择一个Slave节点成为新的Master节点。
【编辑推荐】
- 荔枝FM大年夜数据总监石有滴:搭建高效内容分发体系,建筑全方位UGC生态
- 11 月全球数据库排名:PostgreSQL保持上升趋势 一路高涨
- 关系数据库迈入新时代,这个标题是卖力的!
- 大年夜数据时代,软件工程师渐退,算法工程师崛起!
- 560万Facebook人际关系数据,揭秘家庭职业传承“本相”
推荐阅读
Tech Neo技巧沙龙 | 11月25号,九州云/ZStack与您一路商量云时代收集界线治理实践 Chrome浏览器今朝应当是绝大年夜多半法度榜样员最爱好的浏览器了吧,至少我是如许的O(∩_∩)O。简洁>>>详细阅读
本文标题:Redis 和 Memcached 的区别大吗?只选一个做缓存我们该选哪个?
地址:http://www.17bianji.com/lsqh/38816.html
1/2 1