【发布时间】:2019-02-25 09:51:16
【问题描述】:
我有一个中等大小的对象,最大大小为 10mb。
使用 redux-persist 在 redux 中存储和持久化数据的最大大小是多少?
另外,对于这种大小的数据,使用 redux-persist 或使用类似领域的数据库的最佳方法是什么?
【问题讨论】:
标签: database react-native redux storage redux-persist
我有一个中等大小的对象,最大大小为 10mb。
使用 redux-persist 在 redux 中存储和持久化数据的最大大小是多少?
另外,对于这种大小的数据,使用 redux-persist 或使用类似领域的数据库的最佳方法是什么?
【问题讨论】:
标签: database react-native redux storage redux-persist
最初写这篇文章时,无法设置AsyncStorage 的大小。然而在 2019 年 5 月,commit 改变了这一点。
你可以阅读更多关于它here
当前异步存储的大小设置为 6MB。超过此限制会导致数据库或磁盘已满错误。这个 6MB 的限制是一个合理的限制,可以保护用户免受应用程序在数据库中存储过多数据的影响。这也可以防止数据库填满磁盘缓存并导致格式错误(endTransaction() 调用将引发异常,而不是回滚,并使数据库格式错误)。在增加数据库大小时,您必须意识到这种风险。我们建议确保您的应用程序写入 AsyncStorage 的数据不会超过磁盘上剩余的空间。由于 AsyncStorage 基于 Android 上的 SQLite,因此您还必须了解 SQLite 限制。
如果您仍希望增加存储容量,您可以将以下内容添加到您的android/gradle.properties
AsyncStorage_db_size_in_MB=10
这会将大小设置为 10MB,而不是默认的 6MB。
如果您在react-native 中使用redux-persist 的默认存储设置,它将使用AsyncStorage
AsyncStorage 可以存储的数量有一些限制,具体取决于您使用的操作系统。
在Android中,如果我们查看AsyncStorage后面的native code,我们可以看到上限仅为6MB
在 iOS 中,可以使用的存储量没有这样的限制。您可以查看此 SO answer 进行进一步讨论。
如果您不想使用AsnycStorage,可以使用redux-persist-fs-storage 或redux-persist-filesystem-storage 等替代方案,它们可以绕过Android 的6MB 限制。
【讨论】: