RN

RN本地存储总结

2017-06-30  本文已影响659人  哪吒闹海全靠浪

最近在调研RN的本地存储,发现目前RN的本地存储大多数最终调的都是端的sqlite(ios上可能区分大小文件使用不同存储系统),只是根据不用的封装有几个典型的库:

1.AsyncStorage

官方文档里推荐使用的存储方案。提供的是一个简单的、异步的、持久化的Key-Value存储系统。
优点:

存在问题:

long size = 50L * 1024L * 1024L; // 50 MB 
com.facebook.react.modules.storage.ReactDatabaseSupplier.getInstance(getApplicationContext()).setMaximumSize(size);`

IOS上的存储是区分大小的,官方是这么说的

AsyncStorage is backed by native code that stores small values in a serialized dictionary and larger values in separate files.

stackoverflow找到,好像上限是2G。这样似乎存储比想象中大,另外我也给之前提到react-native-storage库的作者提了上限防爆机制的issues,加之我们在使用上注意,这一点暂时可以放心。

2.react-native-sqlite-storage

react-native-sqlite-storage是对端的sqlite封装,api设计上最接近sqlite,接入需要引入模块,使用场景:需要复杂大量数据的处理

3.Realm

Realm是一个适应多平台,功能强大的数据库,它也支持React Native。Realm底层既不使用sqlite也不使用coredata,它有一套自己的数据库存储引擎,官方说在性能上也高于sqlite和coredata很多,而且api更偏向nosql,比起sqlite的方式简单。确定就是有一定的学习陈本,扩展性不高,只支持IOS8+。

4.总结

在项目前期,AsyncStorage已经能很好的满足需求,并且简单、易扩展,建议使用。等到遇到瓶颈时,再考虑是否接入其它两种。

上一篇下一篇

猜你喜欢

热点阅读