Guava Cache是一款非常优秀的本地缓存框架。
这篇文章,我们聊聊如何使用 Guava Cache 异步刷新技巧带飞系统性能 。
1 经典配置
Guava Cache 的数据结构跟 JDK1.7 的 ConcurrentHashMap 类似,提供了基于时间、容量、引用三种回收策略,以及自动加载、访问统计等功能。
Guava Cache是一款非常优秀的本地缓存框架。
这篇文章,我们聊聊如何使用 Guava Cache 异步刷新技巧带飞系统性能 。
Guava Cache 的数据结构跟 JDK1.7 的 ConcurrentHashMap 类似,提供了基于时间、容量、引用三种回收策略,以及自动加载、访问统计等功能。
Guava Cache 是非常强大的本地缓存工具,提供了非常简单 API 供开发者使用。
这篇文章,我们将详细介绍 Guava Cache 的基本用法、回收策略,刷新策略,实现原理、实战招式。
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.0.1-jre</version>
</dependency>
这篇文章,我们聊聊如何设计一个 Redis 客户端 SDK 。
SDK 的设计理念核心两点:
提供精简的 API 供开发者使用,方便与用户接入;
屏蔽三方依赖,用户只和对外 API 层交互 。
Apache Commons Pool 提供了通用对象池的实现,用于管理和复用对象,以提高系统的性能和资源利用率。
对象池是一种设计模式,它维护一组已经创建的对象,并在需要时将其提供给应用程序,而不是每次需要时都创建新的对象。
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.0</version>
</dependency>
在 Spring Boot 项目中,数据库连接池已经成为标配,然而,我曾经遇到过不少连接池异常导致业务错误的事故。很多经验丰富的工程师也可能不小心在这方面出现问题。
在这篇文章中,我们将探讨数据库连接池,深入解析其实现机制,以便更好地理解和规避潜在的风险。
假如没有连接池,我们操作数据库的流程如下:
缓存的世界很广阔,对于应用系统来讲,我们经常将缓存划分为本地缓存和分布式缓存。
本地缓存 :应用中的缓存组件,缓存组件和应用在同一进程中,缓存的读写非常快,没有网络开销。但各应用或集群的各节点都需要维护自己的单独缓存,无法共享缓存。
分布式缓存:和应用分离的缓存组件或服务,与本地应用隔离,多个应用可直接共享缓存。
我们常常会讲:“加了缓存,我们的系统就会更快” 。
这篇文章,笔者想聊聊那些在业务系统中较少被使用,但却活跃于中间件或者框架里,强大却又低调的缓存,笔者愿称他们为缓存世界的扫地僧。
HashMap 是一种基于哈希表的集合类,它提供了快速的插入、查找和删除操作。
开源中国的红薯哥写了很多关于缓存的文章,其中多级缓存思路,分页列表缓存这些知识点给了我很大的启发性。
写这篇文章,我们聊聊分页列表缓存,希望能帮助大家提升缓存技术认知。
显而易见,这是最简单易懂的方式。
布隆过滤器是一个精巧而且经典的数据结构。
你可能没想到: RocketMQ、 Hbase 、Cassandra 、LevelDB 、RocksDB 这些知名项目中都有布隆过滤器的身影。
对于后端程序员来讲,学习和理解布隆过滤器有很大的必要性。来吧,我们一起品味布隆过滤器的设计之美。
准确的讲,Redis 事务包含两种模式 : 事务模式 和 Lua 脚本。
先说结论:
Redis 的事务模式具备如下特点:
但 Lua 脚本更具备实用场景,它是另一种形式的事务,他具备一定的原子性,但脚本报错的情况下,事务并不会回滚。Lua 脚本可以保证隔离性,而且可以完美的支持后面的步骤依赖前面步骤的结果。