ToB企服应用市场:ToB评测及商务社交产业平台

标题: 写了一个简易的本地缓存fastmap [打印本页]

作者: 不到断气不罢休    时间: 2022-8-16 11:38
标题: 写了一个简易的本地缓存fastmap
背景:

一般我们可以用HashMap做本地缓存,但是HashMap功能比较弱,不支持Key过期,不支持数据范围查找等。故在此实现了一个简易的本地缓存,取名叫fastmap。
 
功能:

1.支持数据过期
2.支持等值查找
3.支持范围查找
4.支持key排序
 
实现思路:

1.等值查找采用HashMap
2.范围查找采用TreeMap
3.数据过期实现:调用相关查询方法时清理过期Key + 定时(每秒)清理一遍过期Key
4.使用两个ReentrantReadWriteLock的读写锁实现线程安全,一个用于数据的CRUD,一个用于过期key的维护
 
核心代码:

[code]package com.hdwang.fastmap;import java.util.*;import java.util.concurrent.atomic.AtomicInteger;import java.util.concurrent.locks.Lock;import java.util.concurrent.locks.ReentrantReadWriteLock;/** * @author wanghuidong * 时间: 2022/6/26 10:10 */public class FastMap implements IFastMap {    /**     * 主要运用于等值查找     */    private HashMap hashMap = new HashMap();    /**     * 主要运用于范围查找     */    private TreeMap treeMap = new TreeMap();    /**     * 按照时间顺序保存了会过期key集合,为了实现快速删除,结构:时间戳->key列表     */    private TreeMap expireKeysMap = new TreeMap();    /**     * 保存会过期key的过期时间     */    private HashMap keyExpireMap = new HashMap();    /**     * 是否启用排序(默认不启用)     */    boolean enableSort = false;    /**     * 是否启用数据过期功能(默认启用)     */    boolean enableExpire = true;    /**     * The comparator used to maintain order in this tree map, or     * null if it uses the natural ordering of its keys.     *     * @serial     */    private final Comparator




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4