• 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html
  • 极客专栏正式上线!欢迎访问 https://www.jikewenku.com/topic.html

标签:缓存

缓存在高并发场景下的常见问题

缓存一致性问题当数据时效性要求很高时,需要保证缓存中的数据与数据库中的保持一致,而且需要保证缓存节点和副本中的数据也保持一致,不能出现差异现象。这就比较依赖缓存的过期和更新策略。一般会在数据发生更改的时,主动更新缓存中的数据或者移除对应的缓存。缓存并发问题缓存过期后将尝试从后端数据库获取数据,这是一个看似合理的流程。但是,在高并发……

Caffeine Cache 进程缓存之王

前言互联网软件神速发展,用户的体验度是判断一个软件好坏的重要原因,所以缓存就是必不可少的一个神器。在多线程高并发场景中往往是离不开cache的,需要根据不同的应用场景来需要选择不同的cache,比如分布式缓存如redis、memcached,还有本地(进程内)缓存如ehcache、GuavaCache、Caffeine。说起Guava Cac……

看完这部缓存进化史,还不懂缓存,请给我差评

1 背景本文是上周去技术沙龙听了一下爱奇艺的Java缓存之路有感写出来的。先简单介绍一下爱奇艺的java缓存道路的发展吧。可以看见图中分为几个阶段:第一阶段:数据同步加redis通过消息队列进行数据同步至redis,然后Java应用直接去取缓存 这个阶段优点是:由于是使用的分布式缓存,所以数据更新快。缺点也比较明显:依赖Redi……

Java Web现代化开发:Spring Boot + Mybatis + Redis二级缓存

背景Spring-Boot因其提供了各种开箱即用的插件,使得它成为了当今最为主流的Java Web开发框架之一。Mybatis是一个十分轻量好用的ORM框架。Redis是当今十分主流的分布式key-value型数据库,在web开发中,我们常用它来缓存数据库的查询结果。本篇博客将介绍如何使用Spring-Boot快速搭建一个Web应用,并且采……

缓存服务的更新策略有哪些?

在互联网项目开发中,缓存的应用是非常普遍了,缓存可以帮助页面提高加载速度,减少服务器或数据源的负载。1、为什么需要缓存?一般在项目中,最消耗性能的地方就是后端服务的数据库了。而数据库的读写频率常常都是不均匀分布的,大多情况是读多写少,并且读操作(select)还会有一些复杂的判断条件,比如 like、group、join 等等,这些语法是……

写给后端程序员的 HTTP 缓存原理介绍

通过Internet获取资源既缓慢,成本又高。为此,Http协议里包含了控制缓存的部分,以使Http客户端可以缓存和重用以前获取的资源,从而优化性能,提升体验。虽然Http中关于缓存控制的部分,随着协议演进,有一些变化。但我觉着,作为后端程序员,在开发Web服务时,只需要关注请求头If-None-Match、响应头ETag、响应头Cache-Co……

10 行 Java 代码实现最近被使用(LRU)缓存

在最近的面试中,我曾被多次问到,怎么实现一个最近最少使用(LRU)的缓存。缓存可以通过哈希表来实现,然而为这个缓存增加大小限制会变成另一个有意思的问题。现在我们看一下怎么实现。最近最少使用缓存的回收为了实现缓存回收,我们需要很容易做到:查询出最近最晚使用的项给最近使用的项做一个标记链表可以实现这两个操作。检测最近最少……

最频繁访问驻留缓存算法

在搜索系统中,如何缓存搜索最频繁的1000个搜索结果?自定制的精准短文本搜索服务项目代码(https://github.com/ysc/short-text-search/blob/master/src/main/java/org/apdplat/search/utils/ConcurrentLRUCache.java)。本文利用了Concu……

浅谈浏览器的缓存机制

浏览器是有缓存的,做开发的同学都知道浏览器缓存是非常蛋疼的问题,特别是前端开发的同学,明明改了为什么还没有生效,经常要去清理浏览器的缓存,或者禁用浏览器的缓存功能。我们知道在浏览器中按F5是刷新页面,CTRL+F5是强制刷新页面,这两个有什么区别呢?F5刷新会使用浏览器的缓存。CTRL+F5刷新是不会使用缓存的,每次请求都会请求服务……

Java 中整型的缓存机制

本文将介绍Java中Integer的缓存相关知识。这是在Java 5中引入的一个有助于节省内存、提高性能的功能。首先看一个使用Integer的示例代码,从中学习其缓存行为。接着我们将为什么这么实现以及他到底是如何实现的。你能猜出下面的Java程序的输出结果吗。如果你的结果和真正结果不一样,那么你就要好好看看本文了。package com.j……

缓存级别与缓存更新问题

缓存失效问题被认为是计算机科学中最难的两件事之一,这篇文章来自翻译,内容主要包括缓存级别与缓存更新常见的几种模式。缓存应用模式常见缓存应用模式缓存常用来加快页面的加载速度,减少服务器或数据库服务的负载。缓存应用的常见模式如上图所示:检索缓存,尝试查找之前相同请求的执行结果,如果找到了则返回,省去了重新执行的步骤;如……

Java 中的伪共享详解及解决方案

1. 什么是伪共享CPU 缓存系统中是以缓存行(cache line)为单位存储的。目前主流的 CPU Cache 的 Cache Line 大小都是 64 Bytes。在多线程情况下,如果需要修改“共享同一个缓存行的变量”,就会无意中影响彼此的性能,这就是伪共享(False Sharing)。2. 缓存行由于共享变量在 CPU 缓存中的存储……

常用缓存淘汰算法(LFU、LRU、ARC、FIFO、MRU)

缓存算法是指令的一个明细表,用于决定缓存系统中哪些数据应该被删去。常见类型包括LFU、LRU、ARC、FIFO、MRU。最不经常使用算法(LFU):这个缓存算法使用一个计数器来记录条目被访问的频率。通过使用LFU缓存算法,最低访问数的条目首先被移除。这个方法并不经常使用,因为它无法对一个拥有最初高访问率之后长时间没有被访问的条目缓存负责。……

面试必备:缓存穿透,缓存雪崩的四种解决方案

前言设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人利用……

分布式之数据库和缓存双写一致性方案解析

引言为什么写这篇文章?首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。 但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议。目前没有一篇全面的博客,对这几种方案进行解析。于是博主战战……

理解分布式系统中的缓存架构(下)

1. 分层缓存架构设计2. 缓存带来的复杂度问题数据一致性缓存穿透缓存雪崩缓存高可用缓存热点3. 业界案例技术挑战Feed缓存架构图架构特点参考承接上一篇《理解分布式系统中的缓存架构(上)》,介绍了大型分布式系统中缓存的相关理论,常见的缓存组件以及应用场景,本文主要介绍缓存架构设计常见问题以及解决方案,业界案例。1……

理解分布式系统中的缓存架构(上)

1. 缓存概述2. 缓存的分类2.1 CDN缓存2.2 反向代理缓存2.3 本地应用缓存2.4 分布式缓存本文主要介绍大型分布式系统中缓存的相关理论,常见的缓存组件以及应用场景。1. 缓存概述缓存概述2. 缓存的分类缓存主要分为以下四类缓存的分类2.1 CDN缓存基本介绍C……

分布式之缓存击穿

题记 什么是缓存击穿在谈论缓存击穿之前,我们先来回忆下从缓存中加载数据的逻辑,如下图所示因此,如果黑客每次故意查询一个在缓存内必然不存在的数据,导致每次请求都要去存储层去查询,这样缓存就失去了意义。如果在大流量下数据库可能挂掉。这就是缓存击穿。场景如下图所示:我们正常人在登录首页的时候,都是根据userID来命中数据,然而黑……

关于缓存命中率的几个关键问题!

 一、缓存命中率的介绍命中:可以直接通过缓存获取到需要的数据。不命中:无法直接通过缓存获取到想要的数据,需要再次查询数据库或者执行其它的操作。原因可能是由于缓存中根本不存在,或者缓存已经过期。通常来讲,缓存的命中率越高则表示使用缓存的收益越高,应用的性能越好(响应时间越短、吞吐量越高),抗并发的能力越强。由此可见,在高并发的互联网系统……

高并发场景下缓存的常见问题

1缓存一致性问题当数据时效性要求很高时,需要保证缓存中的数据与数据库中的保持一致,而且需要保证缓存节点和副本中的数据也保持一致,不能出现差异现象。这就比较依赖缓存的过期和更新策略。一般会在数据发生更改的时,主动更新缓存中的数据或者移除对应的缓存。 2缓存并发问题缓存过期后将尝试从后端数据库获取数据,这是一个看似合理的……

Ehcache介绍及整合Spring实现高速缓存

Ehcache介绍EhCache 是一个纯Java的进程内缓存框架,具有快速、精干等特点,是Hibernate中默认的CacheProvider。它使用的是JVM的堆内存,超过内存可以设置缓存到磁盘,企业版的可以使用JVM堆外的物理内存。Spring整合Ehcache首先加入最新的ehcache的maven依赖&……

缓存穿透,缓存雪崩解决方案分析

前言设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应。缓存穿透缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可能DB就挂掉了,要是有人……

面试常考!缓存三大问题及解决方案

1. 缓存来由随着互联网系统发展的逐步完善,提高系统的qps,目前的绝大部分系统都增加了缓存机制从而避免请求过多的直接与数据库操作从而造成系统瓶颈,极大的提升了用户体验和系统稳定性。2. 缓存问题虽然使用缓存给系统带来了一定的质的提升,但同时也带来了一些需要注意的问题。2.1 缓存穿透缓存穿透是指查询一个一定不存在的数据,因为缓存中也无……

什么是缓存击穿?

缓存击穿、缓存并发和缓存雪崩是常见的由于并发量大而导致的缓存问题,本节讲解其产生原因和解决方案。缓存击穿通常是由恶意攻击或者无意造成的;缓存并发是由设计不足造成的;缓存雪崩是由缓存同时失效造成的,三种问题都比较典型,也是难以防范和解决的。本节给出通用的解决方案,以供在缓存设计的过程中参考和使用。缓存击穿缓存击穿指的是使用不存在的……

  • 精品技术教程
  • 编程资源分享
  • 问答交流社区
  • 极客文库知识库

客服QQ


QQ:2248886839


工作时间:09:00-23:00