从node.js中查询redis

我来自传统的SQL背景,正在学习Redis。具体来说,我试图与node.js一起运行redis数据库从node.js中查询redis

我已经完成了redis的初始设置并尝试了几条基本命令。不过,我想创建一个数据库,其中包含一个ID,学生3分,开始日期和结束日期。

我相信我可以创建一个对象,存储特定ID的所有值(例如obj),并使用set函数保存有关该ID的详细信息。

client.set(ID, obj, function(err, reply) { 

console.log(reply);

});

如果我把client.get(ID),它将返回我在上面保存的对象。不过,我想从特定的开始日期和结束日期获取ID的值。 在SQL中它会是这样的:SELECT * FROM TABLE WHERE StartDATE>='' and endDate='' and id= ID;

什么是在redis中的替代方案?我一直无法找到node.js中redis的任何查询示例。

同时插入到数据库中,插入整个对象是最好的方式吗?

回答:

同时在插入数据库时​​,插入整个对象是最好的方法呢?

不,不适用于您提出的示例查询。 Redis不是传统的数据库,它更多like a key value store,它不理解你的对象的结构。

如果您想查询您的建议,您可能会使用错误的工具。

在redis中,您不会存储对象,但可以存储更简单的结构,如散列。从node_redis例子偷:

client.hmset("hosts", "mjr", "1", "another", "23", "home", "1234"); 

client.hgetall("hosts", function (err, obj) {

console.dir(obj);

});

输出:

{ mjr: '1', another: '23', home: '1234' } 

有关详细信息,请Redis的文档在这里:http://redis.io/commands

回答:

这个问题实际上是由两个:存储对象和索引。

您可以用许多不同的方式将对象存储在Redis中 - 诀窍是找到最适合您数据和操作的数据结构。在Redis字符串中存储JSON字符串非常简单,但请注意,任何更新都需要解析整个JSON,然后进行修改,然后重写所有内容(小技巧:如果以这种方式进行操作,请查看Redis的Lua脚本特别是学习使用cjson库 - 在这种情况下它可能是非常宝贵的)。或者,您可以将对象分解为Redis哈希 - 这稍微复杂一点,因为它需要一些手动映射,但允许字段级访问。 OTOH,如果您尝试从Hash数据类型重新组装JSON,这种方法可能会遇到挑战。

Redis没有内置索引以便通过特定属性(例如创建日期)获取数据,您需要在Redis中创建和维护索引式数据结构。使用Redis的Sorted Sets来完成您要查找的一种方法。将所有(obj)ID作为成员保留一个有序集合,并将每个成员的得分设置为其创建日期(例如,在unix时期)。然后,要获得两个给定日期之间的所有ID,请使用Redis'ZRANGEBYSCORE

更多指针:

  • Store Javascript objects in Redis with Node.js the right way
  • Redis Indices

回答:

您可以按照给定的例子:

var redis = require('redis'); 

var port=13235;//Your Redis cloud port number

var host='redis-13235.c14.us-east-11-12.ec4.cloud.redislabs.com';//Your redis cloud host

var pass='password';//Redis cloud password

var client = redis.createClient(port,host, {no_ready_check: true});

client.auth(pass, function (err) {

if (err) throw err;

});

client.on('connect', function() {

console.log('connected......\n welcome to redis cloud !!!');

});

for(var i=0;i<10;i++){

client.set('TEST_TIME'+i,new Date().getTime());

}

for(var i=0;i<10;i++){

client.get('TEST_TIME'+i, function (err, reply) {

console.log(reply.toString());

});

}

检查下面的链接了解更多信息:https://www.sitepoint.com/using-redis-node-js/

以上是 从node.js中查询redis 的全部内容, 来源链接: utcz.com/qa/258133.html

回到顶部