Open 1257331501 opened 8 years ago
场景:我要缓存一个好友关系列表,用YYCache 存整个好友list,很多时候需要或者缓存的好友list, 程序中对两个人是不是好友的判断也比较频繁,每次都是用一个好友ID,去缓存中遍历整个list,检查缓存list中,是否有包含此id的好友,来确定彼此是否是好友关系。 他们建议我不要缓存整个好友list,要一次缓存一个好友,这样就便于查找了,如此一来获取整个list就麻烦了。
是不是这样情况下,就不能使用YYCache了,而用NSCache的话,会定期清理缓存,这样以来 就不符合应用场景了。 用一个自定义字典自己写内存和磁盘缓存,如果自定义字典的话(还有管理线程安全),是不是很麻烦了?求解,PS:好友变更关系是比较频繁的。
Cache 数据本身就是是容易丢失的,不太适合这种场景。。
对于这种类似好友列表的场景就没办法用YY了嘛,只能FMDB?
你好,看你这个问题,想一次性获取缓存所有的 allValues,我觉得可以在 NSCache 中或者 YYCache 中添加一个类似字典的,维持引用,这里可以用 NSMapTable,这样子就不会影响保存对象的引用计数,然后就可以增加方法获取到所有的缓存对象了,具体可以参考下 SDWebImage 中 SDImageCache 中的 SDMemoryCache 的设计。但是要注意多线程问题,为临界区加锁。
可以考虑添加一个遍历全部值的接口。 因为有要对整个数据进行遍历处理的需求。
您好,您发来的邮件已收到
目前没有提供这个接口。。对于内存缓存来说,提供这个接口需要对内部 dictionary 进行 copy,这会阻塞其他访问线程;对于磁盘缓存来说,这可能会把所有文件读取到内存,可能会造成内存过高甚至崩溃。
什么场景下会需要这个接口?
目前没有提供这个接口。。对于内存缓存来说,提供这个接口需要对内部 dictionary 进行 copy,这会阻塞其他访问线程;对于磁盘缓存来说,这可能会把所有文件读取到内存,可能会造成内存过高甚至崩溃。
什么场景下会需要这个接口?