Каков максимальный размер для сохранения редукса?

У меня есть объекты среднего размера, максимальный размер которых составляет 10 МБ.

Каков максимальный размер для хранения и сохранения данных в redux с использованием redux-persist?

Кроме того, каков наилучший подход для данных такого размера, чтобы использовать redux-persist или использовать базу данных, такую ​​​​как область?


person ishab acharya    schedule 25.02.2019    source источник


Ответы (1)


Обновлять

Когда этот пост был изначально написан, было невозможно установить размер AsyncStorage. However in May 2019 the following commit изменил это.

Подробнее об этом можно прочитать здесь

Текущий размер асинхронного хранилища установлен на 6 МБ. Превышение этого предела приводит к ошибке переполнения базы данных или диска. Это ограничение в 6 МБ является разумным ограничением для защиты пользователя от того, что приложение хранит слишком много данных в базе данных. Это также защищает базу данных от заполнения дискового кеша и искажения формы (вызовы endTransaction() вызовут исключение, а не откат, и оставят базу данных неправильной). Вы должны осознавать этот риск при увеличении размера базы данных. Мы рекомендуем следить за тем, чтобы ваше приложение не записывало в AsyncStorage больше данных, чем осталось свободного места на диске. Поскольку AsyncStorage основан на SQLite на Android, вы также должны знать об ограничениях SQLite.

Если вы все еще хотите увеличить емкость хранилища, вы можете добавить следующее в свой android/gradle.properties

AsyncStorage_db_size_in_MB=10

Это установит размер 10 МБ вместо 6 МБ по умолчанию.

Оригинальный ответ

Если вы используете настройки хранилища по умолчанию для redux-persist в react-native, он будет использовать AsyncStorage

AsyncStorage имеет некоторые ограничения на объем, который он может хранить, в зависимости от используемой операционной системы.

В Android, если мы посмотрим на собственный код за AsyncStorage видно, что верхний предел составляет всего 6 МБ.

В iOS нет таких ограничений на объем хранилища, которое можно использовать. Вы можете увидеть этот SO ответ для дальнейшее обсуждение.

Если вы не хотите использовать AsnycStorage, есть альтернативы, такие как redux-persist-fs-storage или redux-persist-filesystem-storage, которые позволяют обойти ограничение 6 МБ на Android.

person Andrew    schedule 25.02.2019
comment
Этот обновленный ответ об изменении размера БД в gradle.properties не работает, по крайней мере, по моему опыту. Я считаю, что причина в том, что это изменяет только максимальный размер общего пространства для хранения, но ограничение на ключ по-прежнему остается 6 МБ. Поскольку redux-persist хранит данные под ключом «с тех пор», он не может обойти ограничение в 6 МБ. - person Justin Lok; 24.06.2021