【问题标题】:What is the maximum size for redux persist?redux 持久化的最大大小是多少?
【发布时间】:2019-02-25 09:51:16
【问题描述】:

我有一个中等大小的对象,最大大小为 10mb。

使用 redux-persist 在 redux 中存储和持久化数据的最大大小是多少?

另外,对于这种大小的数据,使用 redux-persist 或使用类似领域的数据库的最佳方法是什么?

【问题讨论】:

    标签: database react-native redux storage redux-persist


    【解决方案1】:

    更新

    最初写这篇文章时,无法设置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-storageredux-persist-filesystem-storage 等替代方案,它们可以绕过Android 的6MB 限制。

    【讨论】:

    • 这个在 gradle.properties 中更改数据库大小的更新答案不起作用,至少在我的经验中是这样。我相信原因是因为这只会改变总存储空间的最大大小,但每个键的限制仍然是 6MB。由于 redux-persist 将数据存储在一个 since 键下,它无法绕过 6MB 的限制。
    猜你喜欢
    • 2019-05-12
    • 2021-08-31
    • 2013-02-26
    • 2012-06-30
    • 2011-03-13
    • 1970-01-01
    • 2021-10-10
    • 2012-11-10
    • 2011-02-28
    相关资源
    最近更新 更多