Как сохранить данные кэша Redis в mongodb с помощью node.js
Я имею redis
клиент и mongodb
Я хочу ускорить свою базу данных, для этого я получаю детали пользователей из redis
кеш и хочу сохранить в mongodb
с помощью node.js
,
Ваши ответы будут очень полезны для меня.
client.smembers('login',function(err,obj){
if(obj.length === 0)
callback(obj);
obj.forEachDone(function(reply,done){
console.log(reply);
client.hgetall(reply,function(err,value){
value.login_value = decodeURI(value.login_value);
done(value);
});
},this,function(objArr){
objArr.sort(utils.compare);
console.log(objArr);
});
});
1 ответ
Можете ли вы быть более ясным, пожалуйста. Но если я хорошо вас понял, то вы хотите сохранить данные из кэша Redis в MongoDB. Ну, для начала, я также немного новичок в кэшировании MongoDB и Redis, но в моем приложении я понял, что могу делать все данные для сохранения в MongoDB, то есть получить идентификатор пользователя, например, из пользовательского кэша Redis и затем выполните простое обновление MongoDB по Id, которое можно найти здесь https://mongodb.github.io/node-mongodb-native/markdown-docs/insert.html. Легче,
collection.update(criteria, update[[, options], callback]);
Другая вещь, которую вы должны сделать, это установить тайм-аут при вставке пользователя в кеш. Например, вы можете установить более короткий тайм-аут, если ваше приложение требует много обновлений документов, чтобы всегда быть уверенным, что ваш кэш Redis обновляется довольно часто. Если ваше приложение не связано с этим, хотя вы можете обновить кэш Redis, скажем, каждые два часа, и все будет в порядке. Истечение срока действия набора Redis можно найти в этом ответе GitHub https://github.com/NodeRedis/node_redis/issues/1000. Легче,
client.set(key, value, 'EX', 60 * 60 * 24, callback);
Я знаю, что этот ответ опоздал, и вы, вероятно, получили решение для него, но я ответил на него для дальнейшего использования людьми, которые могут столкнуться с той же проблемой, что и вы. Благодарю вас.