`
geeksun
  • 浏览: 964973 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

聊聊缓存

 
阅读更多

缓存在应用中经常可以遇到,大的可以表现为分布式缓存服务和外部的缓存服务应用,小的可以使用应用级的缓存。

缓存的主要作用,一是可以加快热点数据访问速度,二是保护后端的数据库不被突然增长的压力压垮,三是减少计算,是以空间换时间的典型应用。

 

从分类上来说,缓存可以分为外部缓存服务和应用缓存。

外部缓存服务可以表现为MemCache、Redis、MongoDB等。

应用缓存可以使用HashMap自实现,也可以使用Guava的缓存Cache。

 

缓存的失效策略:

1. Timeout算法,设置有效期,超时失效。

2. LRU(Least Recently Used)算法,最近最少使用的缓存先失效,是依据时间来判断是否应失效。

    LRU算法并不太科学,因为使用时间来判断缓存是否应失效,会导致最新的缓存存在,但是却有可能,最新       的缓存的使用频率并不高,并不是热点数据。 

    实现可使用链表来实现,最近使用的数据,放入链表头,需要移除数据时,从链表尾移除。LinkedHashMap     的实现支持这一算法。

4. LFU算法(Least Frequently Used),最近最少使用次数算法,是依据使用的次数来做判断。

3. FIFO算法,最先进入的缓存最先移除。

 

缓存的一致性:

需要在数据源更新时,同时通知缓存更新,否则出现缓存和数据源数据不一致的情况。

 

其他的缓存分类还有Http缓存、页面缓存、数据库缓存等,有兴趣的可以自行去网上搜索学习。

分享到:
评论

相关推荐

    聊聊并发系列文章

    ### 深入探讨《聊聊并发系列文章》 #### 一、深入分析Volatile的实现原理 **引言** 在现代软件开发中,特别是在多线程编程领域,Volatile关键字的作用不可忽视。作为一种轻量级的同步机制,Volatile能够确保多...

    聊聊架构 - 王概凯

    《聊聊架构 - 王概凯》这本书是知名IT技术社区推出的一档专注于软件与网站架构的栏目,由经验丰富的架构师王概凯,也就是网名Kevin的作者执笔。作为一个资深的软件架构师,Kevin在业界享有较高的声誉,他的文章曾...

    《聊聊架构》

    《聊聊架构》这本书的核心主题是引导程序员向架构师的角色转变,深入探讨了软件设计与架构的相关知识。在软件开发行业中,架构师的角色至关重要,他们负责规划、设计和指导大规模系统的构建,确保系统的可扩展性、...

    缓存之穿透、击穿、雪崩及其解决方法

    今天我们来展开聊一下在开发中对于缓存经常会遇到的三个问题,也是在面试题中经常会被问到的高频知识点!也就是缓存穿透、缓存击穿、缓存雪崩的知识以及其相对应的解决方案! 本章共讲解了缓存的三种异常情况,上述...

    聊聊底层优化_MegEngine Meetup No.7.pdf

    在“聊聊底层优化_MegEngine Meetup No.7.pdf”这个文件中,我们聚焦于深度学习框架MegEngine的底层优化技术,这是在互联网行业中至关重要的一个话题。深度学习已经成为现代互联网服务的核心驱动力,无论是图像识别...

    实现 Java 本地缓存的方法解析

    但是今天我们不聊它们,我们来聊一聊如何实现本地缓存。 要实现一个较好的本地缓存,需要从三个方面开始: 1、存储集合的选择 存储集合的选择是实现本地缓存的第一步。我们需要选择一个合适的存储集合来存储我们...

    聊聊高并发高可用那些事(Kafka、Redis、MySQL)

    4. **缓存问题**:缓存雪崩、击穿和穿透分别指全部缓存失效、部分热点数据未命中和请求穿透到后端数据库。 5. **过期策略与淘汰机制**:Redis通过LRU、LFU或TTL策略管理过期Key。 6. **RDB与AOF备份**:RDB是全量...

    聊聊开发版本

    【标题】:“聊聊开发版本”通常指的是在软件开发过程中,开发者使用的不同阶段的代码版本。在软件工程中,开发版本通常包括alpha(阿尔法)、beta(贝塔)和gamma(伽马)等阶段,代表着软件从初步实现到成熟稳定的...

    聊聊CPU频率和制造工艺、性能间的关系

    缓存(Cache)是CPU内部的一种高速存储设备,分为一级缓存(L1 Cache)、二级缓存(L2 Cache)和三级缓存(L3 Cache)。它们的主要作用是减少CPU与内存之间的速度差异,提升数据处理速度。一级缓存速度最快,但容量...

    29 理解数据在磁盘上的物理存储之后,聊聊行溢出是什么东西.pdf

    理解了行溢出后,就可以将这个概念与BufferPool缓存机制结合起来,对数据库的物理存储结构和数据处理有更深入的理解。这包括数据页的物理存储结构、表空间的物理存储结构,以及它们在磁盘文件中的存储方式。掌握这些...

    基于C/S的聊天系统————聊聊吧系统

    【基于C/S的聊天系统——聊聊吧系统】是一款采用经典的客户端/服务器(Client/Server,C/S)架构设计的通信应用。在这个系统中,客户端作为用户交互的界面,而服务器端则负责处理客户端发送的数据,维持聊天环境的...

    20_来聊聊redis的线程模型吧?为啥单线程还能有很高的效率?.zip

    它将数据存储在内存中,读写速度远超磁盘,且通过LRU(Least Recently Used)策略进行缓存淘汰,保证了内存的有效利用。此外,Redis支持批量操作和管道(pipelining),允许多个命令连续发送,服务器一次性处理,...

    Swift5.0简仿微信聊天,完美支持表情键盘、单聊、群聊、本地消息会话缓存、朋友圈、黑夜模式.zip

    4. **单聊与群聊功能**:这涉及到用户管理、消息发送与接收、会话列表的显示等。开发者需要实现消息模型,处理不同类型的聊天内容(文本、图片、语音等),并确保聊天记录在用户界面上的正确呈现。 5. **本地消息...

    25_你能聊聊redis cluster集群模式的原理吗?.zip

    总结,Redis Cluster提供了一种强大的分布式缓存解决方案,通过数据分片和主从复制实现高可用和可扩展性。在Java开发中,合理地使用Redis Cluster可以提升应用的性能和稳定性。需要注意的是,理解和掌握其工作原理...

    工程师必须了解的LRU缓存淘汰算法以及python实现过程

    大家好,欢迎大家来到算法数据结构专题,今天我们和大家聊一个非常常用的算法,叫做LRU。 LRU的英文全称是Least Recently Used,也即最不经常使用。我们看着好像挺迷糊的,其实这个含义要结合缓存一起使用。对于工程...

    04 借着更新语句在InnoDB存储引擎中的执行流程,聊聊binlog是什么.pdf

    - 2:每次提交事务时,将redo日志刷入操作系统缓存,而不是直接到磁盘文件。 通常推荐设置为1,即强制每次提交事务时都将redo日志写入磁盘,这样可以最大程度保证事务的安全性。 3. binlog日志:binlog是一种...

    聊聊Hbase存储优化那些事(上).pdf

    5. **缓存策略**:HBase 使用BlockCache和MemStore来缓存数据,合理配置缓存大小和策略能显著提升读写速度。例如,热数据可以设置在缓存中,减少磁盘I/O。 6. **RowKey 设计**:RowKey是HBase中的唯一标识符,它的...

    Deta_Cache:缓存缓存服务器

    :fire: 100,000〜4,000,000 QPS,使用二进制搜索技术/《 VPCS架构》德塔公司开源缓存服务器存储上亿级量子碎片,带有并发映射表的微型Java线程小型安全HTTP json高速缓存服务器,并发映射表,2分法字符串索引,高...

    白话解析:一致性哈希算法1

    我们慢慢聊。 首先,我们把二的三十次方想象成一个圆,就像钟表一样,钟表的圆可以理解成由60个点组成的圆,而此处我们把这个圆想象成由2^32个点组成的圆,示意图如下圆环的正上方的点代表0,0点右侧的第一个点代表...

    深入浅出MyBatis技术原理与实战.杨开振(详细书签)

    MyBatis的缓存分为一级缓存和二级缓存,一级缓存是SqlSession级别的,而二级缓存则是Mapper级别的,两者可以配合使用,但需要注意缓存的一致性问题。 在实战部分,书中可能会涵盖如何集成MyBatis到Spring框架中,...

Global site tag (gtag.js) - Google Analytics