您好,欢迎访问一九零五行业门户网

Redis与Memcache的区别是什么?

redis和memcache 都是基于内存的数据存储系统。memcached是高性能分布式内存缓存服务,其本质上就是一个内存key-value数据库。redis是一个开源的key-value存储系统。与memcached类似,redis将大部分数据存储在内存中,支持的数据类型包括:字符串、哈希表、链表、集合、有序集合以及基于这些数据类型的相关操作。那么,memcache与redis有什么区别呢?
1、数据操作不同 
与memcached仅支持简单的key-value结构的数据记录不同,redis支持的数据类型要丰富得多。memcached基本只支持简单的key-value存储,不支持枚举,不支持持久化和复制等功能。redis支持服务器端的数据操作相比memcached来说,拥有更多的数据结构和并支持更丰富的数据操作,支持list、set、sorted set、hash等众多数据结构,还同时提供了持久化和复制等功能。
而通常在memcached里,使用者需要将数据拿到客户端来进行类似的修改再set回去,这大大增加了网络io的次数和数据体积。在redis中,这些复杂的操作通常和一般的get/set一样高效。所以,如果需要缓存能够支持更复杂的结构和操作, redis会是更好的选择。
2、内存管理机制不同 
在redis中,并不是所有的数据都一直存储在内存中的。这是和memcached相比一个最大的区别。当物理内存用完时,redis可以将一些很久没用到的value交换到磁盘。redis只会缓存所有的key的信息,如果redis发现内存的使用量超过了某一个阀值,将触发swap的操作,redis根据“swappability = age*log(size_in_memory)”计算出哪些key对应的value需要swap到磁盘。然后再将这些key对应的value持久化到磁盘中,同时在内存中清除。这种特性使得redis可以保持超过其机器本身内存大小的数据。
而memcached默认使用slab allocation机制管理内存,其主要思想是按照预先规定的大小,将分配的内存分割成特定长度的块以存储相应长度的key-value数据记录,以完全解决内存碎片问题。 
从内存利用率来讲,使用简单的key-value存储的话,memcached的内存利用率更高。而如果redis采用hash结构来做key-value存储,由于其组合式的压缩,其内存利用率会高于memcached。 
3、性能不同 
由于redis只使用单核,而memcached可以使用多核,所以平均每一个核上redis在存储小数据时比memcached性能更高。而在100k以上的数据中,memcached性能要高于redis,虽然redis也在存储大数据的性能上进行了优化,但是比起memcached,还是稍有逊色。 
4、集群管理不同 
memcached是全内存的数据缓冲系统,redis虽然支持数据的持久化,但是全内存毕竟才是其高性能的本质。作为基于内存的存储系统来说,机器物理内存的大小就是系统能够容纳的最大数据量。如果需要处理的数据量超过了单台机器的物理内存大小,就需要构建分布式集群来扩展存储能力。 
memcached本身并不支持分布式,因此只能在客户端通过像一致性哈希这样的分布式算法来实现memcached的分布式存储。相较于memcached只能采用客户端实现分布式存储,redis更偏向于在服务器端构建分布式存储。 
以上就是redis与memcache的区别是什么?的详细内容。
其它类似信息

推荐信息