您的位置:首页 > 数据库 > Memcache

缓存框架 Ehcache Memcache Redis

2017-03-07 12:24 218 查看
缓存:通过在内存中缓存数据,减少读取数据库的次数。

过程:1、客户端请求数据,如缓存服务器中存在,则直接返回数据;2、如缓存服务器中不存在,则请求数据库,同时缓存服务器保存一份数据;3、每当数据库数据变更时,同步更新缓存服务器

ehcache

Java实现,缓存在内存中,可持久化到硬盘,效率高于memcache;但是缓存共享麻烦,集群分布式应用不方便。如果是单个应用或者对缓存访问要求很高的应用,用ehcache。

ehcache也有缓存共享方案,不过是通过RMI或者Jgroup多播方式进行广播缓存通知更新,缓存共享复杂,维护不方便;简单的共享可以,但是涉及到缓存恢复,大数据缓存,则不合适。

特色:1、使用简单;2、轻量等

memcache

多种语言实现,K/V缓存,缓存在内存中,支持分布式缓存,可通过第三方实现持久化,基于libevent的事件处理。

memcache在客户端中实现分布式缓存,通过分布式算法指定目标数据的节点。

Redis

K/V缓存,支持丰富的数据结构(list,
set, hash),支持数据持久化,支持分布式缓存。

通过socket访问到缓存服务,效率比ehcache低,比数据库要快很多,处理集群和分布式缓存方便,有成熟的方案。如果是大型系统,存在缓存共享、分布式部署、缓存内容很大的,建议用redis。

Redis如何实现分布式可拓展性?

2.8以前的版本:与Memcached一致,可以在客户端实现,也可以使用代理,twitter已开发出用于Redis和Memcached的代理Twemproxy 。

3.0 以后的版本:相较于Memcached只能采用客户端实现分布式存储,Redis则在服务器端构建分布式存储。Redis Cluster是一个实现了分布式且允许单点故障的Redis高级版本,它没有中心节点,各个节点地位一致,具有线性可伸缩的功能。如图给出Redis Cluster的分布式存储架构,其中节点与节点之间通过二进制协议进行通信,节点与客户端之间通过ascii协议进行通信。在数据的放置策略上,Redis
Cluster将整个 key的数值域分成16384个哈希槽,每个节点上可以存储一个或多个哈希槽,也就是说当前Redis Cluster支持的最大节点数就是16384

新版本(3.0)的Redis是指集群分布式,也就是说集群本身均衡客户端请求,各个节点可以交流,可拓展行、可维护性更强大

memcache和redis都是分布式缓存:

memcache多线程(多核),redis单线程(只使用单核)

memcache只支持String,redis支持丰富的数据结构

memcache在客户端中实现分布式缓存,redis在服务端中实现分布式缓存。

存储大数据(>100k)memcache性能高,小数据redis性能高

memcache K/V的value最大1M,redis最大512M
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: