当前位置:首页 > 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 更丰富。

java如何缓存数据

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 框架提供声明式缓存,通过注解简化操作。

java如何缓存数据

@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); // 设置过期时间

缓存策略注意事项

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

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

相关文章

vue怎么实现数据检测

vue怎么实现数据检测

Vue 数据检测的实现方式 Vue 通过响应式系统实现数据检测,核心机制基于 Object.defineProperty(Vue 2)或 Proxy(Vue 3)。以下是具体实现方法: 基于 Vue…

vue怎么实现组件缓存

vue怎么实现组件缓存

vue实现组件缓存的方法 在Vue中实现组件缓存可以通过内置的<keep-alive>组件完成,该组件能够缓存不活动的组件实例,避免重复渲染。 使用<keep-alive>基…

vue数据劫持实现

vue数据劫持实现

Vue 数据劫持实现原理 Vue 的数据劫持主要通过 Object.defineProperty 或 Proxy 实现,用于监听对象属性的变化并触发更新。以下是核心实现方式: 基于 Object.…

vue实现数据翻译

vue实现数据翻译

Vue 数据翻译实现方案 在 Vue 项目中实现数据翻译通常涉及国际化(i18n)或多语言支持,以下是几种常见方法: 使用 vue-i18n 插件 安装 vue-i18n 依赖: npm in…

java如何输入数据

java如何输入数据

输入数据的方法 在Java中,输入数据可以通过多种方式实现,具体取决于输入来源(如控制台、文件、网络等)。以下是几种常见的方法: 使用Scanner类从控制台输入 Scanner类是Java中最常用…

vue实现数据拖动

vue实现数据拖动

Vue 实现数据拖动 使用 HTML5 拖放 API HTML5 提供了原生的拖放 API,可以通过 draggable 属性、dragstart、dragend、dragover 和 drop 事件…