Theme:Redis
和
memcached
对比分析
【引言】
当我们为一个并发量较大的应用做数据架构时,会考虑使用缓存,意欲达到三个目标:
1.
加快用户访问速度,提高业务用户体验;
2.
降低后端负载,保证系统平滑平稳;
3.
保证数据尽可能及时更新,最大程度保证数据一致性。
之前的两篇文章分别介绍了数据缓存层常用的两个产品
redis
和
memcached
,详见如下
两篇文章:
《涨知识
_
今日咖谈
redis
》
《涨知识
_
咖谈
memcached
的几大特点》
今天对比分析下
Redis
和
memcached
。
【大纲】
1. Redis
和
memcached
的区别
2. redis
相比
memcache
的优势
3. redis
常见性能问题和解决方案
4.
缓存使用时的常见现象
一、
Redis
和
memcached
的区别
1.
数据类型
memcached
所 有 的 值 均 是 简 单 的 字 符 串 ,
redis
支 持 丰 富 数 据 类 型 , 支 持
string
,
list
,
set
,
sorted set
,
hash
;
2.
线程机制
Redis
为单线程,
Memcached
为多线程工作,每一个核上
Redis
在存储小数据时比
Memcached
性能更高。而在
100k
以上的数据时,
Memcached
性能要高于
Redis
;
3.
存储方式
redis
和
Memcached
均是内存数据库,但
redis
可以数据持久化,
Memcached
不支持持
久化。
Redis
并非所有的数据一直在内存,当物理内存用完时,
Redis
使用
LRU
算法将
value
交换到磁盘,
memcached
超过内存比例会抹掉前面的数据。故,
memcached
断电
,
重启系统后,数据不可恢复;
redis
数据丢失后可以通过
RDB
和
AOF
恢复。
4.
分布式存储
Memcached
和
Redis
是基于服务器物理内存级的数据缓存,如需要处理的数据量超过
单台机器的物理内存,就需构建分布式集群来扩展存储能力。
Memcached
本身并不支持分布式,只能在客户端通过像一致性哈希这样的分布式算法
来实现
Memcached
的分布式存储,为客户端式分布式缓存;
Redis
更偏向于服务器端
构建分布式缓存,没有采用一致性哈希做分布式。在
Redis Cluster
中,每个
Master
节
点都有对应的两个冗余
Slave
节点。当
Master
节点退出后,集群会自动选择一个
Slave
节点成为新的
Master
节点。熟悉
MySQL
高可用架构
MHA
部署的亲,可以更容易理解。
评论