欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

redis 与 memcached 的区别

程序员文章站 2022-08-31 18:03:56
相同点 都是基于内存的数据存储系统redis 和 memcached 的区别 1.1redis 支持 丰富的数据类型 string hash list set 有序集合 1.2.memcached 只支持 string 2.1 redis支持持久化操作 RDB快照 Redis支持将当前数据的快照存成 ......

相同点

都是基于内存的数据存储系统
redis 和 memcached 的区别

1.1redis 支持 丰富的数据类型 string hash list set 有序集合

1.2.memcached 只支持 string

2.1 redis支持持久化操作

RDB快照
Redis支持将当前数据的快照存成一个数据文件的持久化机制,即RDB快照。
RDB有他的不足,就是一旦数据库出现问题,那么我们的RDB文件中保存的数据并不是全新的,从上次RDB文件生成到Redis停机这段时间的数据全部丢掉了。在某些业务下,这是可以忍受的。
AOF日志
AOF日志的全称是append only file,它是一个追加写入的日志文件。
与一般数据库的binlog不同的是,AOF文件是可识别的纯文本,它的内容就是一个个的Redis标准命令。

对于一般性的业务需求,建议使用RDB的方式进行持久化,原因是RDB的开销并相比AOF日志要低很多,
对于那些无法忍数据丢失的应用,建议使用AOF日志。

2.2 memcached 不支持

 

3.1 内存的使用效率对比

如何是使用简单的key-value存储 memcached的利用率更高,但如果 redis 采用 hash 存储,由于
其组合式的压缩,其内存利用率会高于 memcached

4.性能对比

redis只使用单核,memcached是多核,所以平均每个核上 redis在存储小数据时性能更高。
而在100k以上的数据时, memcached的性能会高于 redis

5.内存的管理机制不同

在Redis中,并不是所有的数据都一直存储在内存中的。
当物理内存用完时,Redis可以将一些很久没用到的value交换到磁盘。
Redis只会缓存所有的key的信息,如果Redis发现内存的使用量超过了某一个阀值,将触发swap的操作,
Redis根据“swappability = age*log(size_in_memory)”计算出哪些key对应的value需要swap到磁盘。
然后再将这些key对应的value持久化到磁盘中,同时在内存中清除。
这种特性使得Redis可以保持超过其机器本身内存大小的数据。

Memcached默认使用Slab Allocation机制管理内存
其主要思想是按照预先规定的大小,将分配的内存分割成特定长度的块以存储相应长度的key-value数据记录,以完全解决内存碎片问题。
Slab Allocation机制只为存储外部数据而设计,也就是说所有的key-value数据都存储在Slab Allocation系统里,
Memcached的内存管理制效率高,而且不会造成内存碎片,但是它最大的缺点就是会导致空间浪费。

6.集群管理不同

Memcached是全内存的数据缓冲系统
Redis虽然支持数据的持久化,但是全内存毕竟才是其高性能的本质。
Memcached本身并不支持分布式,因此只能在客户端通过像一致性哈希这样的分布式算法来实现
Redis更偏向于在服务器端构建分布式存储。最新版本的Redis已经支持了分布式存储功能。
一起干同样的事叫集群,分工合作的叫分布式