lostvita / blog

60 stars 47 forks source link

用LocalStorage实现一个LFU存储系统 #3

Open lostvita opened 5 years ago

lostvita commented 5 years ago

前言

🤔Emm...好像没什么好说的,先厚着脸皮求个Star👉 LFUStorage吧!

什么是LFU

LFU(least frequently used),是操作系统中虚拟页式存储管理的页面置换算法中的一种,其他的还有:OPT(理想页面置换算法)、FIFO(先进先出算法)和LRU(最近最久未使用算法)。

到这里不免又想起大学时候学习操作系统时的那段青涩青春

LFU即是最近最不常使用置换算法,与LRU的区别是:LRU基于时间、LFU基于频率。即LFU淘汰使用频率最低的数据。 基于LFU的数据调度是这样的: 假设我们有2块内存:

一个应用场景 假设我们要实现一个基于本地存储的聊天系统,我们希望:在限定内存容量的情况下,尽可能地保留与我亲密度较高的好友的聊天信息。而判断好友亲密度的维度是聊天频率,那么我们的存储系统就可以基于LFU的策略去设计了。

介绍下LFUStorage

LFUStorage有以下几个特点:

LFUStorage用法:

  import LFUStorage from 'lfustorage'
  const chatStorage = new LFUStorage(namespace)  // namespace is optional
  chatStorage
    .nameSpace(namespace)  // setting namespace
    .max(num)  // setting data counts
    .expire(sec)  // setting expire time
    .on('overflow', (outKeys) => {})  // subscribe `overflow` event
    .off('overflow')  // unsubscribe

  chatStorage.set(key, val)  // set
  chatStorage.get(key)  // get

详细API使劲戳👉:LFUStorage

后续迭代规划

加个小广告👉:如果您有意参与开发维护这个项目(随便聊聊也行),欢迎加V:LiuShuiDW,备注LFUStorage。