gpt4 book ai didi

mysql - 将mysql查询结果存储到redis中

转载 作者:IT王子 更新时间:2023-10-29 06:11:38 24 4
gpt4 key购买 nike

我正在尝试使用 Redis 来存储用户列表以及他们在线或离线的天气情况,并将该信息显示给其他用户。

我是 node 的新手,我认为我需要使用列表或排序集。

当它到达 console.log(reply) 时;行它只显示“对象”

我认为我需要遍历查询结果来构建列表,但我不太确定 1) 如何直接在服务器应用程序中遍历结果以及 2) 如何构建列表或基于排序的集合在那个查询上。

如有任何意见或建议,我们将不胜感激。

var mysql      = require('mysql');  
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : 'password',
database : 'users'
});

var redis = require('redis')
, client = redis.createClient();

connection.connect();

connection.query('SELECT * FROM user_profile', function(err, rows, fields)
{
if (err) throw err;

client.set('string key', rows[0], redis.print);

client.get("string key", function (err, reply) {

console.log(reply);

});


});

connection.end();

最佳答案

1) 我假设行包含一个对象数组,每个对象代表一个用户数据记录。

client.set('字符串键', rows[0], redis.print);

存储了 rows 数组的第一个对象,您可以使用 foreach 语句循环遍历所有返回的值。您正在将整个对象保存在 redis 中,但您只需要在线/离线状态 10。此外,您可以在 redis 键中仅存储字符串(参见 Redis Keys DocsRedis Set Docs )

2) 您不需要仅针对用户在线/离线状态的列表或排序集,除非您稍后需要一些排序操作。您可以使用简单的键,我建议对键名使用这样的模式:“user:”。

// assuming that user_name property exists, holds username data "david" and it's unique
client.set("user:"+row[0].user_name, 0, redis.print); // stores key "user:david" = "0";`

然后检索它使用:

client.get("user:"+row[0].user_name);

因此,您的 sql 查询回调函数可能如下所示:

function(err, rows, fields)   {

if (err) throw err;

rows.forEach(function(element, index, array){

client.set('user:'+element.user_name, 0, redis.print);

client.get("user:"+element.user_name, function (err, reply) {

console.log(reply);

});
});
}

请注意,用户名必须是唯一的。如果没有,您可以使用用户 ID

关于mysql - 将mysql查询结果存储到redis中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29437553/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com