之前做过《MongoDB和Redis对比》,但是有哥们说redis和mongoDB没有必要做对比,因为一个是基于磁盘的数据库,一个完全是内存数据库,没有可比性。所以就找了相关的资料,玩了下memcache,以下是自己的学习笔记。

 

memcache

redis

类型

内存数据库

内存数据库

数据类型

在定义value时就要固定数据类型

不需要

有字符串,链表,集 合和有序集合

虚拟内存

不支持

支持

过期策略

支持

支持

分布式

magent

master-slave,一主一从或一主多从

存储数据安全

不支持

使用save存储到dump.rdb中

灾难恢复

不支持

append only file(aof)用于数据恢复

性能

   

说明:

1、 类型——memcache和redis都是将数据存放在内存,所以是内存数据库。当然,memcache也可用于缓存其他东西,例如图片等等。

2、 数据类型——

Memcache在添加数据时就要指定数据的字节长度,例如:

set key3 0 0 8

hellodba

STORED

而redis不需要,例如

redis 127.0.0.1:6379>set key2 "test2"

OK

redis 127.0.0.1:6379>get key2

"test2"

3、 虚拟内存——当物理内存用完时,可以将一些很久没用到的value 交换到磁盘

4、 过期策略——memcache在set时就指定,例如set key1 0 0 8,即永不过期。Redis可以通过例如expire 设定,例如expire name 10

5、 分布式——设定memcache集群,利用magent做一主多从;redis可以做一主多从。都可以一主一从

6、 存储数据安全——memcache断电就断了,数据没了;redis可以定期save到磁盘

7、 灾难恢复——memcache同上,redis丢了后可以通过aof恢复

8、 性能没做过测试,不评论

 

如有不对的地方,欢迎指正!