在Node.js应用中使用Redis的方法简介
在开始本文之前请确保安装好Redis和Node.js以及Node.js的Redis扩展——node_redis
首先创建一个新文件夹并新建文本文件app.js文件内容如下:
varredis=require("redis") ,client=redis.createClient(); client.on("error",function(err){ console.log("Error"+err); }); client.on("connect",runSample); functionrunSample(){ //Setavalue client.set("stringkey","HelloWorld",function(err,reply){ console.log(reply.toString()); }); //Getavalue client.get("stringkey",function(err,reply){ console.log(reply.toString()); }); }
当连接到Redis后会调用runSample函数并设置一个值,紧接着便读出该值,运行的结果如下:
OK HelloWorld
我们也可以使用EXPIRE命令来设置对象的失效时间,代码如下:
varredis=require('redis') ,client=redis.createClient(); client.on('error',function(err){ console.log('Error'+err); }); client.on('connect',runSample); functionrunSample(){ //Setavaluewithanexpiration client.set('stringkey','HelloWorld',redis.print); //Expirein3seconds client.expire('stringkey',3); //ThistimerisonlytodemotheTTL //Runseveryseconduntilthetimeout //occursonthevalue varmyTimer=setInterval(function(){ client.get('stringkey',function(err,reply){ if(reply){ console.log('Ilive:'+reply.toString()); }else{ clearTimeout(myTimer); console.log('Iexpired'); client.quit(); } }); },1000); }
注意:上述使用的定时器只是为了演示EXPIRE命令,你必须在Node.js项目中谨慎使用定时器。
运行上述程序的输出结果是:
Reply:OK Ilive:HelloWorld Ilive:HelloWorld Ilive:HelloWorld Iexpired
接下来我们检查一个值在失效之前存留了多长时间:
varredis=require('redis') ,client=redis.createClient(); client.on('error',function(err){ console.log('Error'+err); }); client.on('connect',runSample); functionrunSample(){ //Setavalue client.set('stringkey','HelloWorld',redis.print); //Expirein3seconds client.expire('stringkey',3); //ThistimerisonlytodemotheTTL //Runseveryseconduntilthetimeout //occursonthevalue varmyTimer=setInterval(function(){ client.get('stringkey',function(err,reply){ if(reply){ console.log('Ilive:'+reply.toString()); client.ttl('stringkey',writeTTL); }else{ clearTimeout(myTimer); console.log('Iexpired'); client.quit(); } }); },1000); } functionwriteTTL(err,data){ console.log('Iliveforthislongyet:'+data); }
运行结果:
Reply:OK Ilive:HelloWorld Iliveforthislongyet:2 Ilive:HelloWorld Iliveforthislongyet:1 Ilive:HelloWorld Iliveforthislongyet:0 Iexpired