当前位置:首页 > Java

java如何缓存数据

2026-02-05 13:13:01Java

Java 数据缓存方法

使用内存缓存(如 HashMap)
创建一个静态的 HashMap 对象存储缓存数据,适用于小型应用或临时缓存需求。

private static Map<String, Object> cache = new HashMap<>();
cache.put("key", "value"); // 存入缓存
Object value = cache.get("key"); // 获取缓存
cache.remove("key"); // 移除缓存

借助 Guava Cache
Google Guava 库提供强大的缓存功能,支持过期策略和容量限制。

Cache<String, Object> cache = CacheBuilder.newBuilder()
    .maximumSize(100) // 最大条目数
    .expireAfterWrite(10, TimeUnit.MINUTES) // 写入后过期时间
    .build();
cache.put("key", "value");
Object value = cache.getIfPresent("key");

使用 Caffeine
Caffeine 是高性能的现代缓存库,功能比 Guava 更丰富。

Cache<String, Object> cache = Caffeine.newBuilder()
    .expireAfterWrite(1, TimeUnit.HOURS)
    .maximumSize(500)
    .build();
cache.put("key", "value");
Object value = cache.getIfPresent("key");

集成 Ehcache
Ehcache 支持分布式缓存和磁盘持久化,适合企业级应用。

<!-- pom.xml 依赖 -->
<dependency>
    <groupId>org.ehcache</groupId>
    <artifactId>ehcache</artifactId>
    <version>3.9.0</version>
</dependency>
CacheManager cacheManager = CacheManagerBuilder.newCacheManagerBuilder().build();
cacheManager.init();
Cache<String, String> cache = cacheManager.createCache("myCache",
    CacheConfigurationBuilder.newCacheConfigurationBuilder(
        String.class, String.class, ResourcePoolsBuilder.heap(100)));
cache.put("key", "value");
String value = cache.get("key");

Spring Cache 注解
Spring 框架提供声明式缓存,通过注解简化操作。

@Cacheable(value = "users", key = "#userId") // 缓存查询结果
public User getUser(String userId) {
    return userRepository.findById(userId);
}

@CacheEvict(value = "users", key = "#userId") // 清除缓存
public void updateUser(User user) {
    userRepository.save(user);
}

Redis 分布式缓存
通过 Jedis 或 Lettuce 连接 Redis 实现跨服务缓存。

Jedis jedis = new Jedis("localhost");
jedis.set("key", "value");
String value = jedis.get("key");
jedis.expire("key", 60); // 设置过期时间

缓存策略注意事项

java如何缓存数据

  • 设置合理的过期时间避免数据陈旧
  • 高并发场景考虑缓存击穿、雪崩问题
  • 大数据量时监控内存使用情况
  • 分布式环境需同步各节点缓存状态

标签: 缓存数据
分享给朋友:

相关文章

vue实现数据删除

vue实现数据删除

Vue 实现数据删除的方法 在 Vue 中删除数据通常涉及操作数组或对象,并结合响应式更新。以下是几种常见实现方式: 从数组中删除数据 使用 splice 方法删除数组中的指定项: methods…

vue实现数据添加

vue实现数据添加

在 Vue 中实现数据添加 Vue 提供了多种方式来实现数据的添加操作,可以通过组件的数据绑定、表单处理以及状态管理等方式完成。以下是几种常见的实现方法: 使用 v-model 绑定表单数据 通过…

vue实现对数据分页

vue实现对数据分页

分页实现的基本思路 在Vue中实现数据分页通常需要结合后端API或前端本地数据处理。核心逻辑包括计算总页数、当前页数据切片、页码切换事件处理等。以下提供两种常见实现方式。 前端本地分页实现 适用于数…

vue怎么实现数据响应

vue怎么实现数据响应

Vue 数据响应的实现原理 Vue 的数据响应式系统是通过 Object.defineProperty(Vue 2.x)或 Proxy(Vue 3.x)实现的。核心是监听数据变化并自动更新视图。 V…

vue中实现双向数据

vue中实现双向数据

Vue 中实现双向数据绑定的方法 使用 v-model 指令 v-model 是 Vue 提供的语法糖,用于在表单元素上实现双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素的值。 <…

vue如何实现数据响应

vue如何实现数据响应

Vue 数据响应的实现原理 Vue 的数据响应式系统基于 ES5 的 Object.defineProperty 或 ES6 的 Proxy 实现。核心是通过数据劫持结合发布-订阅模式,在数据变化时自…