用于维护磁盘缓存的库

时间:2011-10-12 16:12:47

标签: objective-c c caching

我正在寻找一个用于C / C ++ / Obj-C的库来维护我的对象的磁盘缓存。

  • 有大量物体(数万个),每个物体的大小为100 + Kb
  • 不断访问/添加对象,有时会替换大量对象

目前我只是将每个对象存储在单独的文件中,但我不想在文件系统中创建这么多文件。是否有任何库可以使用这样的缓存来代替使用一个/多个文件?

2 个答案:

答案 0 :(得分:3)

您可以使用所有对象创建一个集合(NSArray,NSSet,NSDictionary),并使用NSKeyedArchiver / NSKeyedUnarchiver将其放入单个文件中。

您还可以使用SQLite数据库或CoreData,其优点是,如果您只是根据需要从中提取对象,则不必一次将所有内容都加载到内存中。特别是如果你有(数万* 100 + Kb,无论如何都不会适合记忆......)。

你也可以使用C ++序列化库(尽管让它们与obj c对象一起工作会很棘手......,更多推荐用于C ++对象),比如boost序列化/归档(可以输出二进制文本,文本,xml),再次你可以使用集合(std :: list,std :: map ...)将它们全部存储到一个文件中。

答案 1 :(得分:2)

我使用Tokyo Cabinet库解决了我的问题。比为每个对象使用单独的文件更快地工作。