当前位置: 移动技术网 > IT编程>数据库>MongoDB > redis 与 memcached 的区别

redis 与 memcached 的区别

2018年03月06日  | 移动技术网IT编程  | 我要评论

相同点

都是基于内存的数据存储系统
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已经支持了分布式存储功能。
一起干同样的事叫集群,分工合作的叫分布式

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网