Redis与Memcached有什么区别?

发布时间 2023-07-15 23:51:13作者: pf666nb

Memcached与Redis有什么区别

Redis和Memcached 都是基于内存的数据存储系统,Memacched是高性能分布式内存缓存服务,其本质傻姑娘就是一个内存key-value数据库。Redis是一个开源的key-value存储系统,与Memcached类似,Redis将大部分数据存储在内存中,支持的数据类型,字符串,hash表,链表,集合,有序集合以及基于这些数据类型的相关操作,

  1. 数据操作不同

与Memcached仅支持简单的key-value结构的数据记录不同,redis支持的数据类型更加丰富,Memcached基本只支持简单的kv存储,不支持枚举,不支持持久化和复制等功能。redis支持服务器端的数据操作相比Memcached来说,拥有更多的数据结构和支持丰富的数据操作,支持listst,sorted,hash众多数据结构

  1. 内存管理机制不同

在Redis中,并不是所有数据都一直存储在内存中,这是和Memcached相比一个最大的区别。当物理内存用完时,Rdeis可以将一些很久都没有用到的value交换到磁盘,redis只会缓存所有的key的信息,如过redis发现内存的使用量超过了一个阈值,将触发swap的操作,redis根据公式计算出哪些key对应的value需要swap到磁盘,然后再将这些key对应的value持久化道磁盘,同时在内存中清除。这种特性导致redis可以保持超过本身机器本身内存大小的数据
而Memacched默认使用Slab Allocationg 机制管理内存,主要思想是按照预先规定的大小,将分配的内存分割成特定长度的块用来存储相应长度的kv数据记录,以完全解决内存碎片的问题。
从内存利用率来讲,使用简单的kv存储的话,Memcached的内存利用率更高,而如果使用redis采用hash结构来做kv存储,由于其组合式的压缩,其内存利用率会高于Memcached。

  1. 性能不同

由于redis只使用单核,而Memcached可以使用多核,所以平均每一个核上Redis在存储小数据时比Memcached性能更高,而在100k以的数据中
Memcached性能要高于Redis,虽然Redis也在存储大数据的性能上进行了优化,但是比起Memcached,还是稍有逊色。

  1. 集群管理不同

Memcached是全内存的数据缓冲系统,Redis虽然支持数据的持久化,但是全内存毕竟才是其高性能的本质,作为基于内存的存储系统,

Memcached的分布式存储,相较于Memcached值呢个采用客户端实现分布式存储,Redis更偏向于在服务器端构建分布式存储

小结: Redis和Memcached哪个更好?

Redis更多场景是作为Memcached的代替者来使用,当需要除了kv之外更多数据类型支持或者存储的数据不能被剔除的时候,Redis更加的合适,如果只做缓存的话,Memcached已经足够应对绝大部分的需求。redis 的出现只是提供了一个更好的选择,总的来说