关闭

一个android缓存加载存储框架,使用lru缓存算法,支持任意类型数据

标签: android框架缓存磁盘内存
926人阅读 评论(2) 收藏 举报
分类:
 LazyCacheForAndroid

项目介绍

项目地址

介绍:

  • 这是一个android上的数据缓存框架,具有缓存和加载数据速度快,缓存数据类型全,能够实现任意缓存时间等优点

功能:

  • 1.目前已经实现的可以缓存String,Serialiable,Bitmap,InputStream,Bytes等类型数据,当然你也可以自己进行扩展实现自己需要缓存的类型数据
  • 2.支持多级缓存,目前已实现lru算法的磁盘缓存和lru算法的内存缓存,根据优先级进行缓存,当然你也可以扩展实现多级缓存,只要实现Cache接口,设置缓存优先级即可
  • 3.可以设置全局数据缓存的时间,也可以单独设置一条数据缓存的时间
  • 4.有更多功能

使用场景:

  • 1.替换SharePreference当做配置文件
  • 2.缓存网络数据,比如json,图片数据等
  • 3.自己想...

使用方法

库引入方式

  • Gradle: compile 'com.robin.lazy.cache:CacheLibrary:1.0.0'
  • Maven: java <dependency> <groupId>com.robin.lazy.cache</groupId> <artifactId>CacheLibrary</artifactId> <version>1.0.0</version> <type>pom</type> </dependency> 

初始化

  • 想要直接使用CacheLoaderManager进行数据储存的话,请先进行初始化,初始化方式如下:
  /***
     * 初始化缓存的一些配置
     * 
     * @param diskCacheFileNameGenerator
     * @param diskCacheSize 磁盘缓存大小
     * @param diskCacheFileCount 磁盘缓存文件的最大限度
     * @param maxMemorySize 内存缓存的大小
     * @return CacheLoaderConfiguration
     * @throws
     * @see [类、类#方法、类#成员]
     */
CacheLoaderManager.getInstance().init(Context context,FileNameGenerator diskCacheFileNameGenerator, long diskCacheSize,
                                                int diskCacheFileCount, int maxMemorySize);

缓存数据

  • 以下代码只列举了储存String类型的数据,其它数据类型储存类似,具体请阅读 CacheLoaderManager.java
   /**
     * save String到缓存
     * @param key 
     * @param value 要缓存的值
     * @param maxLimitTime 缓存期限(单位分钟)
     * @return 是否保存成功
     * boolean
     * @throws
     * @see [类、类#方法、类#成员]
     */
CacheLoaderManager.getInstance().saveString(String key,String value,long maxLimitTime);

加载缓存数据

  • 以下代码只列举了加载String类型的数据方法,其它数据加载类似,具体请阅读 CacheLoaderManager.java
   /**
     * 加载String
     * @param key
     * @return 等到缓存数据
     * String
     * @throws
     * @see [类、类#方法、类#成员]
     */
CacheLoaderManager.getInstance().loadString(String key);

其它

  • 上面介绍的是很小的一部分已经实现的功能,其中有还有很多功能可以高度定制,扩展性很强,更多功能待你发现;

关于作者Robin

1
0
查看评论

不要在Android的Application对象中缓存数据!

说明   这是翻译老外的一篇文章,我之前有遇到过这个问题,并且看到有人在Segmentfault上问,最主要我在StackOverflow上居然没搜到累死问题,所以觉得有必要翻译过来以便后面不会再这样处理。 前言   在你的App中的很多地方都需要使用到数据信息,它可能是一个ses...
  • jie1991liu
  • jie1991liu
  • 2015-05-12 18:35
  • 5843

Android图片框架Picasso LRU缓存详解

Picasso这个图片框架默认实现了内存中的LRU缓存,但是没有默认实现磁盘缓存(关于磁盘缓存的配置可以看我之前写的一篇博客),我在使用Picasso替换原来的xUtils框架的时候发现内存开销要比之前高好多,于是着手分析Picasso的LRU缓存策略,代码比较好读,下面简单的分析一下。 Pica...
  • lvshaorong
  • lvshaorong
  • 2016-08-17 11:37
  • 1049

两种常见的缓存淘汰算法LFU&LRU

1. LFU 1.1. 原理 LFU(Least Frequently Used)算法根据数据的历史访问频率来淘汰数据,其核心思想是“如果数据过去被访问多次,那么将来被访问的频率也更高”。 1.2. 实现 ...
  • jake_li
  • jake_li
  • 2016-02-13 21:47
  • 6955

缓存算法的 Python 实现

这篇文章描述了怎么用 Python 实现复杂度为 O(1) 的「最不常用」(Least Frequently Used, LFU)缓存回收算法。在 Ketan Shah、Anirban Mitra 和 Dhruv Matani的论文中有算法描述。实现中的命名是按照论文中的命名。 L...
  • sun754276603
  • sun754276603
  • 2015-10-29 09:23
  • 438

缓存失效策略(FIFO 、LRU、LFU三种算法的区别)

当缓存需要被清理时(比如空间占用已经接近临界值了),需要使用某种淘汰算法来决定清理掉哪些数据。常用的淘汰算法有下面几种: FIFO:First In First Out,先进先出。判断被存储的时间,离目前最远的数据优先被淘汰。LRU:Least Recently Used,最近最少使用。判...
  • ClementAD
  • ClementAD
  • 2015-09-05 20:43
  • 5602

LRU缓存替换算法介绍与编程实现

介绍缓存中容量是有限的,当要查找的数据不在缓存中时,我们要用新数据替换掉 部分原有得数据,有很多种替换策略,lru就是最近最少使用的被替换,我们想要 将来被使用的数据保留下来,但我们不知道将来会使用那些数据,就按照最近使用数据近似将来也会使用的数据。原理我们要如何体现最近最少使用呢?采用一个队列...
  • dalewzm
  • dalewzm
  • 2015-05-22 20:22
  • 724

ceph存储 缓存淘汰算法--LRU算法

 1. LRU 1.1. 原理 LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。 1.2. 实现 最常见的实现是使...
  • skdkjxy
  • skdkjxy
  • 2016-04-25 17:05
  • 730

说说Android LRU缓存算法实现笔记(二)--LRU的应用

上一篇文章说说Android LRU缓存算法实现学习笔记(一) 中我们介绍了最常用的实现LRU缓存的数据结构LinkedHashMap,这一节我们会针对LinkedHashMap的数据结构的特性,来自己实现缓存结构和学习Android源码和项目中对缓存的完善。 上一篇说到对于缓存实现,我们很重要的会...
  • Johnnyz1234
  • Johnnyz1234
  • 2015-02-26 23:30
  • 1808

C语言实现LRU缓存

1
  • Stand1210
  • Stand1210
  • 2017-04-14 20:39
  • 1072

java动态缓存成长小纪(二)——缓存算法的实现:LRU、LFU、FIFO

缓存算法也叫作淘汰算法,主要是为了当JVM空间不足时,用来清理掉缓存的。那么要清理的话,我们先清理掉哪些缓存呢?按照正常人的思维,当然是接下来一段时间内不大可能用到的缓存啦!根据这个思路,我们需要做出一定的判断,判断的方法通常有3个,即LFU、LRU、FIFO。   还有个问题,什么时...
  • u011680348
  • u011680348
  • 2015-08-14 11:17
  • 2903
    个人资料
    • 访问:7917次
    • 积分:131
    • 等级:
    • 排名:千里之外
    • 原创:5篇
    • 转载:1篇
    • 译文:0篇
    • 评论:5条
    文章分类
    文章存档