浅谈Redis与Memcache的异同点
前段时间参加PHP的面试,几乎每个公司都会涉及到Nosql的问题,当前Nosql以高效存储,高效查询等优势迅速成为数据库的辅助工具,最为应用广泛的是Redis,Memcache,Mongodb等,其中Redis与Memcache是key-value型的数据存储,MongoDB是json格式的存储,以下浅谈以下redis与memcache的异同点。
1、 Redis和Memcache都是将数据存放在内存中,都是内存数据库。不过memcache还可用于缓存其他东西,例如图片、视频等等。
2、 数据类型–Memcache在添加数据时就要指定数据的字节长度,例如:
1
2
3set key3 0 0 8
lxsymcto
STORED
而redis不需要,如:
1
2
3
4redis 127.0.0.1:6379>set key2 "lxsymblog"
OK
redis 127.0.0.1:6379>get key2
"lxsymblog"
3、虚拟内存–Redis当物理内存用完时,可以将一些很久没用到的value 交换到磁盘,而memcache不会。
4、过期策略–memcache在set时就指定,例如set key1 0 0 8,即永不过期。
Redis可以通过例如expire 设定,例如expire name 10
5、分布式–设定memcache集群,利用magent做一主多从;redis可以做一主多从。都可以一主一从。
6、存储数据安全–memcache挂掉后,数据没了;redis可以定期保存到磁盘(持久化)。
7、灾难恢复–memcache挂掉后,数据不可恢复; redis数据丢失后可以通过aof恢复。
以上是对该两种数据库的分析,但是不论怎样都有优缺点,根据项目需求具体确定用哪种类型数据库才是最关键的。