缓存技术培训

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

• Memcached使用了libevent(如果可以的话,在 linux下使用epoll)来均衡任何数量的打 • 开链接,使用非阻塞的网络I/O,对内部对象实现 引用计数(因此,针对多样的客户端,对象可以处 在多样的状态), 使用自己的页块分配器和哈希表, 因此虚拟内存不会产生碎片并且虚拟内存分配的 时间复杂度可以保证为O。 • Memcached的缓存是一种分布式的,可以让不同 主机上的多个用户同时访问, 因此解决了共享内 存只能单机应用的局限,更不会出现使用数据库 做类似事情的时候,磁盘开销和阻塞的发生。
数据库的读操作使用访问前后拦截
• 它执行的原理是:我们定义了一个 MethodCacheInterceptor类,它在访问 DAO层数据库读操作的方法(findbyId)之前 查询Memcached里面是否存有此数据(如 果更新了是查不到的,在下面写操作会提 到),如果有就不执行此方法,直接返回 Memcached里面的数据。如果没有就执行 此方法查找数据库,查询出结果后把数据 存储在Memcached中,便于下次使用。
数据在缓存中的标志
• 例如: Acount 对象,在HASH表中的key 就是 Account_nid,nid是Account的主键。 这便保持了数据的唯一性,当然在缓存中有 一些经常要查询的列表: 好友列表:friendlist_nid
数据库的写操作使用访问后拦截
• 它执行的原理是:我们定义了一个 MethodCacheAfterAdvice类,它在访问 DAO层数据库写操作的方法 Байду номын сангаасsave,merge,delete)之后把Memcached里 面有关此表(每张表对应一个DAO类)的 所有记录都删除掉,以便下次不读取过期 的数据。
3. Memcache在项目中的应用 在项目中的应用
• Memcached主要是缓解数据库的压力以及加速用 户重复某一操作的浏览速度,所有Memcached在 本项目中的应用集中在DAO(数据库访问层)层,我 们用了spring框架,spring有aop机制,所以实现起 来变得非常容易,并不需要在DAO层里面的方法都 加上操作Memcached的代码,我们之需要在访问 DAO层的时候加上拦截器,spring提供了访问前后 拦截,访问前拦截,访问后拦截和抛异常拦截,在这 里我们使用了两个拦截器:访问前后拦截和访问 后拦截,拦截的具体内容和具体说明如下。
Cache在项目中的应用 在项目中的应用
• Cache服务器 服务器:目前比较流行的cache服务器 服务器 有:memcache,ehcache,oscache等等,鉴于 memcache分布式部署的优势,我们选择的cache 服务器是memcache. • 2.Memcache服务器介绍 2.Memcache服务器介绍 • Memcached是(运营LiveJournal 的技术团队)开发的一套分布式内存对象缓存系 统,用于在动态系统中减少数据库负载, 提升性 能。通过在内存里维护一个统一的巨大的hash表, Memcached能够用来存储各种格式的数据,包括 图像、视频、文件以及数据库检索的结果等。
相关文档
最新文档