设计一个本地缓存

如果你不相信努力和时光,那么成果就会是第一个选择辜负你的。不要去否定你自己的过去,也不要用你的过去牵扯你现在的努力和对未来的展望。不是因为拥有希望你才去努力,而是去努力了,你才有可能看到希望的光芒。设计一个本地缓存,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

注意点

  1. 数据结构: 设计用什么数据结构存储。最简单的就直接用Map来存储数据,或者复杂想redis一样提供了多种数据类型哈希,列表,集合,有序集合等,底层使用了双端链表,压缩列表,集合,跳跃表等数据结构
  2. **对象上限:**本地缓存,内存有上限,所以一般都会制定缓存对象的数量比如1024,当达到某个上线后需要有某种策略去删除多余的数据
  3. **清除策略:**常见的比如有LRU(最近最少使用),FIFO(先进先出),LFU(最近最不常用)。
  4. 过期时间: 除了使用清楚策略,可以给缓存设置一个过期时间,这样当达到过期时间之后直接删除,采用清楚策略+过期时间双重保证。
  5. 线程安全: 像redis是直接使用单线程处理,所以就不存在线程安全问题。而现在提供的本地韩村往往是可以多个线程同时访问的,所以线程安全是不容忽视的问题,并且线程安全问题是不应该抛给使用者去保证。
  6. **简明的接口:**提供常用的get,put,remove,clear,getSize等方法即可。
  7. 是否持久化:分布式缓存如Redis是有持久化功能的,memcached是没有持久化功能的。
  8. 阻塞机制: 二级缓存提供了一个blocking表示,表示当在缓存中找不到元素时,它设置对缓存键的锁定;这样其他线程将等待此元素被填充,而不是命中数据库。

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/202445.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!