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