[数据结构算法求助] 如何实现这样一个数据容器,缓存 key-value 数据?(javascript)
背景需求是,需要一个简单的数据容器对一堆 key-value 进行缓存(什么 redis,memcache 通通都不要,我就想简单的在内存存点数据而已)
容器有两个要求
1.固定容量,满了之后插入新数据就要删除旧数据,删除算法的指导思想是,删除那些越旧读取次数越少的数据
2.数据有效时间,比如设置 10 分钟,10 分钟后读取里面某条数据就应该删掉这条数据并返回 undefined
感觉很简单啊,我用个 Map 来实现就可以了
data = new Map() data.set(key,{ value:'',//存放的具体数据 timestamp:0,//时间戳,判断是否过期用 count:0//数据被读取的次数 })
但是问题来了,要插入新数据容器已经满了,怎么删除?
我不得根据 timestamp 和 count 这 2 个字段对全部数据进行排序?
排序就得遍历啊,极端情况要是 10 万条数据,每次删除都得遍历一下,这哪受得了
卡在这了,Map 似乎不行?应该选择什么样数据结构和算法来实现这个容器最合适?