【修真院java小课堂】为什么要使用memcache?memcache有什么作用?

大家好,我是IT修真院郑州分院第8期学员,一枚正直善良的java程序员。今天给大家分享一下,修真院官网 java任务中可能会使用到的知识点:


为什么要使用memcache?memcache有什么作用?


【修真院java小课堂】为什么要使用memcache?memcache有什么作用?20180611

1.背景介绍

memcache是什么?

  • memcache是一套分布式的高速缓存系统,由LiveJournal的Brad Fitzpatrick开发,但目前被许多网站使用以提升网站的访问速度,尤其对于一些大型的、需要频繁访问数据库的网站访问速度提升效果十分显著。这是一套开放源代码软件,以BSD license授权发布。

2.知识剖析

2.1 memcache作用是什么?

  • Memcache是一个高性能的分布式的内存对象缓存系统,通过在内存里维护一个统一的巨大的hash表,它能够用来存储各种格式的数据,包括图像、视频、文件以及数据库检索的结果等。简单的说就是将数据调用到内存中,然后从内存中读取,从而大大提高读取速度。

2.2 工作流程

  • 1.先检查客户端的请求数据是否在memcached中
  • 2.如有,直接把请求数据返回,不再操作数据库
  • 3.如果请求的数据不在memcached中,就去查数据库
  • 4.把从数据库中获取的数据返回给客户端,
  • 5.同时把数据缓存一份到memcached中
  • 6.更新数据库的时更新memcached中的数据,保证一致性
  • 7.当分配给memcached内存空间用完之后,会使用LRU(Least Recently Used,最近最少使用)策略加上到期失效策略,
  • 8.失效数据首先被替换,然后再替换掉最近未使用的数据。

2.3 优缺点/限制

  • 限制:在 Memcached中可以保存的数据量是没有限制的,只要内存足够。
  • 优点:高速、分布式
  • 缺点:缓存、性能消耗、空间换时间

3.常见问题

3.1踩坑:对象序列化

  • memcached存储对象的时候,对象需要序列化
  • public class Student implements Serializable

3.2什么是对象序列化

  • Java序列化是指把Java对象转换为字节序列的过程;而Java反序列化是指把字节序列恢复为Java对象的过程。

4.编码实战

  • 百万级数据无索引,使用memcached做缓存,时间量级
  • 见视频

5.扩展思考

5.1 应用场景

  • 部分容灾

    • 假设只用一台memcache,如果这台memcache服务器挂掉了,那么请求将不断的冲击数据库,这样有可能搞死数据库,从而引发”雪崩“。如果使用多台memcache服务器,由于memcache使用一致性哈希算法,万一其中一台挂掉了,部分请求还是可以在memcache中命中,为修复系统赢得一些时间。
  • 部分容灾

    • 一台memcache服务器的容量毕竟有限,可以使用多台memcache服务器,增加缓存容量。
  • 部分容灾

    • 使用多台memcache服务器,可以均衡请求,避免所有请求都冲进一台memcache服务器,导致服务器挂掉。

6.参考文献

https://baike.baidu.com/item/MemCache/8250931?fr=aladdin
https://blog.csdn.net/MsdnWoo/article/details/51577389
https://www.jianshu.com/p/b882a4f2e788
https://blog.csdn.net/wusuopuBUPT/article/details/18238003


7.更多讨论

Q:存入memcache的数据是否有生命周期的设置?
A:在set写入缓存数据的时候,可以使用参数进行设置

Q:什么样的数据适合写入缓存
A:访问频率高、修改频率低、数据量小的数据

Q:memcache存储的最小单位是多大?
A:单个item最大数据是1MB,超过1MB数据不予存储

PPT在这里

感谢大家观看!

今天的分享就到这里啦,欢迎大家点赞、转发、留言、拍砖~

技能树.IT修真院

“我们相信人人都可以成为一个工程师,现在开始,找个师兄,带你入门,掌控自己学习的节奏,学习的路上不再迷茫”。

这里是技能树.IT修真院,成千上万的师兄在这里找到了自己的学习路线,学习透明化,成长可见化,师兄1对1免费指导。

快来与我一起学习吧~http://www.jnshu.com/login/1/22140638

猜你喜欢

转载自blog.csdn.net/zhanlijueduan/article/details/80659377