# cache_study **Repository Path**: wolf623/cache_study ## Basic Information - **Project Name**: cache_study - **Description**: 实现一个带超时淘汰机制的缓存服务 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2021-12-17 - **Last Updated**: 2021-12-17 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 一、作业内容 动手实现一个Cache对象或组件或服务,带超时淘汰功能。 补充说明: (0)用Java语言实现,JDK版本任意。其他语言也欢迎交流。 (1)支持多线程。 (2)描述设计过程。 (3)输出性能测试报告。 二、设计描述 使用ConcurrentHashMap,可以保证线程安全,使用ScheduledExecutorService定时器,精度在纳秒级别 三、性能测试 16G内存,JDK11 多线程写入测试 >>> 写入结果:1000000个 执行耗时:275ms ======================== 睡眠10秒钟 ======================== 多线程读取测试 >>> 读取非null结果:989815个 执行耗时:146ms 单线程写入测试 >>> 写入结果:1000000个 执行耗时:338ms ======================== 睡眠10秒钟 ======================== 单线程读取测试 >>> 读取非null结果:989675个 执行耗时:163ms 四、总结 1、可能是在把数据存放到缓存中需要时间,导致实际测试结果跟理论有偏差。 2、可以结合Callable、Future等实现一个当获取不到缓存时,从数据库里面获取并存放到缓存中的机制。