选redis还是memcache

  • 时间:
  • 浏览:0

业务需求决定技术选型,当业务有原本某些特点的以前,选折 redis会更加适合。

 

纯KV,数据量非常大,并发量非常大的业务,使用memcache或许更适合。

这要从mc与redis的底层实现机制差异说起。

优点是,redis挂了再重启,内存还需要够快速恢复热数据,那末多再瞬时将压力压到数据库上,不在 有有有有4个cache预热的过程。

不言而喻期望redis做固化存储会比mysql做得好,不同的工具做该人 擅长的事情,把redis当作数据库用,原本的设计八成是错误的。

 

value是哈希,列表,集合,有序集合你这名冗杂的数据价值形式时,会选折 redis,可能性mc无法满足有有哪些需求。

最典型的场景,用户订单列表,用户消息,帖子评论列表等。

 

mc无法满足持久化的需求,只得选折 redis。

后来 ,这里要提醒的是,真的使用对了redis的持久化功能么?

 

千万不言而喻把redis当作数据库用:

(1)redis的定期快照可不都能否了保证数据不丢失

(2)redis的AOF会降低下行速率 单位,后来 可不都能否了支持那末多的数据量

redis全天然支持集群功能,还需要实现主动克隆技术,读写分离。

redis官方也提供了sentinel集群管理工具,可不都能否实现主从服务监控,故障自动转移,某些切,对于客户端也有透明的,那末多再线程改动,也那末多再人工介入。

而memcache,我我应该 我应该 实现高可用,需要进行二次开发,你这名客户端的双读双写,可能性服务端的集群同步。

后来 ,这里要提醒的是,大每种业务场景,缓存真的需要高可用么?

(1)缓存场景,什么都以前,是允许cache miss

(2)缓存挂了,什么都以前还需要通过DB读取数据

memcache使用线程,主线程监听,worker子线程接受请求,执行读写,某些过程中,可能性趋于稳定锁冲突。

redis使用单线程,虽无锁冲突,但难以利用多核的价值形式提升整体吞吐量。

从某些点上,mc会快某些。

 

最后总结一下:

不管是mc和redis,服务端集群不在 全天然支持水平扩展,需要在客户端进行分片,这真是对调用方不言而喻友好。可能性能服务端集群可不都能否支持水平扩展,会更完美某些。

memcache的value存储,最大为1M,可能性存储的value很大,可不都能否了使用redis。

 

可能性只是我缓存场景,数据存装入 数据库,缓趋于稳定redis,此时可能性开启固化功能: 

memcache把所有的数据存储在物理内存里。

redis有当事人的VM机制,理论还需要够存储比物理内存更多的数据,当数据超量时,会引发swap,把冷数据刷到磁盘上。

从某些点上,数据量大时,mc会加快下行速率 某些。

 

memcache使用预分配内存池的依据管理内存,可不都能否省去内存分配时间。

redis则是临时申请空间,可能性原因分析分析碎片。

从某些点上,mc会加快下行速率 某些。

 

什么都,需要认真剖析业务场景,高可用,是与非 真的是对缓存的主要需求?

 

你知道有哪些配置的云产品最适合你吗?

你知道如保以最低价购买最高值的云产品吗?

关注山东云管家ygjdata,免费带走上云助力+专属云上运维

山东云管家是阿里云北方大区一级经销商,服务过的各行业客户上万+,值得信赖!

memcache使用非阻塞IO复用模型,redis也是使用非阻塞IO复用模型。

但可能性redis还提供某些非KV存储之外的排序,聚合功能,在执行有有哪些功能时,冗杂的CPU计算,会阻塞整个IO调度。

从某些点上,可能性redis提供的功能较多,mc会加快下行速率 某些。

 

memcache和redis是互联网分层架构中,最常用的KV缓存。不少同学在选型的以完会纠结,到底是选折 memcache还是redis。

 

真是redis比memcache更晚出来,且功能真是也更充裕,但对于有有有有4个技术人,了解“什么都然”恐怕比“选折 谁”更重要某些。

 

缺点是,在redis挂了的过程中,可能性数据库中有 数据的修改,可能性原因分析分析redis重启后,数据库与redis的数据不一致。

 

后来 ,只读场景,可能性允许某些不一致的业务场景,还需要尝试开启redis的固化功能。