在redux状态下存储大数据 - 30,000个项目

时间:2018-03-31 10:18:40

标签: reactjs react-native websocket redux bigdata

我目前有一个Web套接字,它将JsonAPI格式的数据推送到react-native应用程序,然后按时间间隔将项目放在redux存储中。

完美适用于5,000 - 10,000件物品。但是我需要支持大约30,000个项目。每个项目(对象)平均有12个键。

目前,当我对部分数据进行规范化或将新的数据块与我商店中已有的数据合并时,这会导致应用程序崩溃。

任何建议都会非常感激。

import debounce from 'lodash/debounce'
import merge from 'lodash/merge

let data = {}

const migrateData = () => {
    InteractionManager.runAfterInteractions(() => {
        dispatch(createSocketData(data))
        data = {}
    })
}

const debounced = debounce(migrateData, 3000)

cable.subscriptions.create('SyncChannel', {
    received: (payload) => {
        if(payload.serialized){
            data = merge(data, normalize(payload.serialized))
            debounced()
        }
    }
})

2 个答案:

答案 0 :(得分:1)

我不建议您在redux商店中存储大数据。目前,您需要支持30,000个项目。明天你需要支持50,000件物品,100,000件物品......

您可以尝试使用特定于存储的组件来解决您的问题。 例如,我使用SQLite3。

SQLite3 component for react-native support both for IOS and Android

答案 1 :(得分:1)

您可能想要使用Realm。

在Realm中存储1000个对象没有问题。它已针对存储大量数据进行了优化,仅在需要时将数据加载到内存中。