从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