缓存教程

     

Java中实现TreeMap缓存驱逐策略

26 5K

为了提高应用程序速度,缓存是将经常访问的数据存储在内存中的一种方法。当缓存填满时,缓存逐出策略会决定必须删除哪些内容。Java 的 TreeMap 提供了排序映射实现,它可用于创建具有独特驱逐策略的缓.

Uber是如何花费巨大精力实现缓存精确失效?

46

这篇文章介绍了Uber内部分布式数据库Docstore的架构、挑战以及他们构建的集成缓存解决方案CacheFront。文章详细介绍了CacheFront的设计、特性和实现,以及对最终结果的评估。通过C.

数据库IO有多慢?

133 1

大多数资深开发人员一定都经历过数据库 I/O 性能相当低的情况。但很多人可能没有意识到 I/O 操作有多慢,特别是数据库 I/O 速度与其他数据读写方法的速度之间的差距。Java 是一种用于应用程序开.

Redis 与 NCache 比较

33

NCache 是一个原生 .NET 开源分布式缓存,在高事务性 .NET、.NET Core 和 Java 应用程序中非常流行。 Redis 由 Redis Labs 开发,目前由 Microsoft.

Spring Boot中启用和使用缓存

52 6K

由于Spring端只提供了缓存处理的接口,因此在使用缓存时需要准备单独的实现。Caffeine是一个提供缓存实现的模块。dependencies {  // Spring Boot Starter C.

go-fast-cdn:用Go构建的快速且易于使用的CDN

50 2K

将 SQLite 数据库与 GORM 和 Gin Web 框架结合使用。使用Vite + React和wouter构建的 UI 。如何使用Go-fast CDN 有一个非常易于使用的界面,将在应用程序.

缓存Caffeine与Sieve比较

58 3K

Caffeine缓存作者:背景信息Caffeine 使用自适应窗口技术,因此不会完全影响您的观察结果。论文建议将 1%的窗口作为起点,因为这在数据库、搜索和分析等许多关键工作负载中都很有效。论文最后指.

为何SIEVE缓存没有被早点发现?

55 2K

缓存对于从 CPU 到存储再到整个分布式架构的每一层系统的性能都至关重要。缓存如此重要意味着设计人员需要仔细考虑缓存清空时会发生什么,但他们并不总是做得很好SIEVE 是一种逐出算法,是一种在需要放入.

rockscache:保证与DB最终或强一致性的Redis缓存库

205 11K
随着缓存的引入,分布式系统中的一致性问题出现了,因为数据同时存储在两个地方:数据库和Redis。到目前为止,我们看到的所有缓存解决方案,如果没有在应用程序级别引入版本控制,都无法解决数据不一致场景。目.

Spring Boot中如何缓存数据库查询结果

63 10K

缓存是一种技术,可以存储不经常变化的频繁查询数据,并减少请求的延迟。我们可以在软件应用程序的不同层使用这种技术。在本文中,讨论在 Spring Boot 中使用 ConcurrentHash 和 Re.

SIEVE:比LRU更快更简单的新缓存算法

82 1
新的名为SIEVE的缓存淘汰算法,简单而高效。点击标题SIEVE使用一个队列和一个指针来确定缓存中的哪些数据保留,哪些数据丢弃。它通过访问位来追踪数据的访问状态,并根据访问情况进行淘汰。SIEVE在效.

Robinson:Go中单值线程安全缓存

82

“Robinson”包是一个轻量级且高效的 Go 库,它提供了一个线程安全的缓存实现,用于存储和检索任何类型的值。它提供了一种简单且简约的缓存方法,利用 Go 泛型的强大功能来确保强大的类型和最佳性能.

Java中如何使用lambda实现懒加载?

67 5K

当我们使用需要执行昂贵或缓慢方法的资源(例如数据库查询或 REST 调用)时,我们倾向于使用本地缓存或私有字段。lambda 函数允许我们使用方法作为参数并推迟方法的执行或完全省略它。在本教程中,我们.

Otter:基于 S3-FIFO 算法的最快 Go 内存缓存

144 4K

没有一个 Golang 缓存库是真正无争用的。所有缓存库都带有互斥锁和一些删除策略的标准映射Map。这样,这些Go缓存库就无法达到其他语言(例如Caffeine)的缓存速度。例如,来自 Dgraph .

动态编程DP:生成连续“XYZ”子字符串的最小插入量

74 4K

给定字符串S仅由字符 ' X'、' Y'和'Z'组成。您的任务是找到使字符串仅包含连续的“ XYZ ”子字符串所需的最少操作数,前提是您可以选择三个字符中的任何一个并将其插入S中的任何位置。例子:输入.

Java中六种初始化静态Map方法

411 8K

在 Java 中,初始化静态映射可以创建与类而不是类实例关联的映射对象。这允许该映射在该类的所有实例之间共享并在不创建对象的情况下进行访问。当存储需要在类的多个实例之间共享的数据或维护在整个应用程序中.

缓存如何满足每日 12 亿个API请求?

96 5K

在 RevenueCat,我们每天处理超过 12 亿个请求。只有在以下情况下您才能有效地做到这一点: 您可以在许多 Web 服务器之间分配负载。 您可以使用缓存来加速对热数据的访问并保护后端系统和数据.

DoorDash 如何改进微服务缓存?

163 5K

随着 DoorDash 的微服务架构不断发展,服务间流量也在不断增长。每个团队管理自己的数据并通过 gRPC 服务公开访问权限,gRPC 服务是一个用于构建可扩展 API 的开源远程过程调用框架。由于.

Redis五个使用场景

200

以下是 5 个Redis使用案例:1.缓存最常见的用例是利用 Redis 进行缓存。这有助于保护数据库层不超载。Redis 可为缓存数据提供快速查找时间,有助于提高应用程序性能。2.会话存储使用 Re.

浅谈Linux页面缓存

142 6K

Linux 页面缓存(Page Cache)对于每个SRE来说都是必不可少和至关重要的。对页面缓存理解可以帮助完成日常的 DevOps 类任务以及紧急调试和救火。什么是Linux 页面缓存?从本质上讲.

16 个系统设计面试的概念

256 4K

要在系统设计方面表现出色,最关键的方面之一是深入了解基本的系统设计概念,例如负载平衡、缓存、分区、复制、数据库和代理。1. 域名系统 (DNS)当您在 Web 浏览器中输入域名时,DNS 负责查找关联.

Go-memoize:缓存函数调用结果的开源工具

107 2K

这是一个简单、简洁的 Go 记忆器。缓存昂贵的函数调用。Go-memoize 已经投入生产几年了。在内存中缓存昂贵的函数调用,并具有可配置的超时和清除间隔:import (    "time"    .

使用NGINX+ mirror实现API缓存更新

164 3K

假设我们有一个 URI /profile/syshero。 如果向 /profile/syshero 发送 GET,应用程序就会向客户端提供输出结果。 如果向 /profile/syshero 发送 .

分布式缓存综合指南

543 1 7K
一个重要的网站需要一个网络服务器来接收请求和一个数据库来写入或读取数据。但是,如果每秒收到数百万个请求,这种简单的设置只有在优化数据库或更改整体数据库策略后才能扩展。那是对的吗?数据库最终达到了活动连.

Meta自适应LIFO概念

573

Facebook在队列中使用了自适应LIFO的概念: - 它们在正常情况下使用FIFO顺序 - 他们在高负荷下改用后进先出顺序 理由呢?通过在高负载下保持FIFO顺序,用户可能已经放弃了他们的请求。因.

在Spring Boot中配置Redis作为Hibernate二级缓存

1244 3K

通常情况下,RDBMS 数据库将成为您不断增长的应用程序中的主要可伸缩性瓶颈。这是由于 RDBMS 对水平扩展的天然抵制。已经出现了几种策略来缓解这个问题,包括只读副本、分区、分片以及将一些工作负载卸.

后端系统中的可扩展读写操作方案

1100

当您从头开始构建后端系统时,一切都会看起来很美好。API 响应速度极快(例如,100 毫秒响应时间),资源消耗看起来很稳定,最重要的是用户很高兴使用您的系统,这会让您为您的系统及其架构感到自豪。随着时.

Twitter为什么没有宕机?

1365 2K

五年来,我一直是 Twitter 的站点可靠性工程师 (SRE),以后四年里,我是 Cache 团队唯一的 SRE,四年来,我负责团队中的自动化、可靠性和运营。我设计并实现了大部分保持它运行的工具。缓.

常见缓存策略设计

1477 6K
本文将介绍缓存方面的一些挑战、使用的典型解决方案以及使用命令查询职责分离 (CQRS) 作为更好策略的概念。缓存都是关于延迟的低延迟请求是标准的非功能性要求,尤其是对于电子商务应用程序,因为人们普遍认.

使用Redis实现微服务分布式锁

1710 1 6K
Redis 以其高性能和支持高读/写 QPS 的能力而闻名,这是作为分布式锁服务的后备存储非常理想的属性。此外,Redis 本身也支持 Lua 脚本。开源社区中有很多基于 Redis 的分布式锁的实现.