【问题标题】:Node.js redis pubsubNode.js redis 发布订阅
【发布时间】:2015-09-04 21:43:16
【问题描述】:

我真的是 nodejs 的初学者。我想用 nodejs 做一个聊天服务。我使用 nodejs/jade/mysql 来构建我系统的基本部分,现在我想向用户提供 pub/sub。

我们从文本字段或使用哈希标签接收用户的兴趣(无论如何我们收到用户的兴趣并存储在 MySQL 中 -> 我们做到了)。然后,我们要根据用户的兴趣向他们显示聊天室列表。例如 A 的兴趣是“游戏”、“汽车”和“食物”,然后我们搜索包含“游戏”、“汽车”、“食物”的聊天室,并首先向 A 显示这些聊天室。

我想用redis来提供这个服务但是我真的不知道!

1) 我安装了redis,可以运行redis-server。
2)

//redis
var redis = require('redis');
var publisher = redis.createClient();
var subscriber = redis.createClient();

subscriber.on('message', function(channel, message){
  console.log('Message ' + message + ' on channel ' + channel + ' arrived!');
});

subscriber.on('subscribe', function(channel){
  publisher.publish('test', 'the a team');
  publisher.publish('test', 'the b team');  
})

subscriber.subscribe('test');

这是我试图理解redis的简短代码。

3)我不知道如何使用redis读取存储在Mysql中的数据并根据用户的兴趣显示聊天室。

【问题讨论】:

标签: mysql node.js redis publish-subscribe


【解决方案1】:

Redis是一个高级的key-value缓存和存储,它的操作不能直接映射到mysql。

在 redis 中,您可以设置键值对或键下的哈希。 那是 : 如果你想将你的名字存储在 redis 中,可以通过以下方式完成:

var client = redis.createClient();
client.set("name", "John")
 

使用 client.get("name") 检索值

类似地,您可以在单个键下存储多个键值对,作为散列。 如果你想存储他们的详细信息,比如年龄、地点、公司等,那么就应该使用哈希。 Redis 有方法 "hmset""hmget" 用于散列操作。

在缓存中的 redis 中,您可以设置过期时间。

有不同的方法可用。你可以探索这些。 供参考http://redis.io/commands

【讨论】: