Welcome 微信登录

首页 / 脚本样式 / JavaScript / 在Node.js应用中使用Redis的方法简介

 在开始本文之前请确保安装好 Redis 和 Node.js 以及 Node.js 的 Redis 扩展 —— node_redis
首先创建一个新文件夹并新建文本文件 app.js 文件内容如下:
 

var redis = require("redis"), client = redis.createClient(); client.on("error", function (err) {console.log("Error " + err);}); client.on("connect", runSample); function runSample() {// Set a valueclient.set("string key", "Hello World", function (err, reply) {console.log(reply.toString());});// Get a valueclient.get("string key", function (err, reply) {console.log(reply.toString());});}

当连接到 Redis 后会调用 runSample 函数并设置一个值,紧接着便读出该值,运行的结果如下:
 

OKHello World
 
我们也可以使用 EXPIRE 命令来设置对象的失效时间,代码如下:
 

var redis = require("redis"), client = redis.createClient(); client.on("error", function (err) {console.log("Error " + err);}); client.on("connect", runSample); function runSample() {// Set a value with an expirationclient.set("string key", "Hello World", redis.print);// Expire in 3 secondsclient.expire("string key", 3); // This timer is only to demo the TTL// Runs every second until the timeout// occurs on the valuevar myTimer = setInterval(function() {client.get("string key", function (err, reply) {if(reply) {console.log("I live: " + reply.toString());} else {clearTimeout(myTimer);console.log("I expired");client.quit();}});}, 1000);}

注意: 上述使用的定时器只是为了演示 EXPIRE 命令,你必须在 Node.js 项目中谨慎使用定时器。
运行上述程序的输出结果是:
 

Reply: OKI live: Hello WorldI live: Hello WorldI live: Hello WorldI expired
 
接下来我们检查一个值在失效之前存留了多长时间:
 

var redis = require("redis"), client = redis.createClient(); client.on("error", function (err) {console.log("Error " + err);}); client.on("connect", runSample); function runSample() {// Set a valueclient.set("string key", "Hello World", redis.print);// Expire in 3 secondsclient.expire("string key", 3); // This timer is only to demo the TTL// Runs every second until the timeout// occurs on the valuevar myTimer = setInterval(function() {client.get("string key", function (err, reply) {if(reply) {console.log("I live: " + reply.toString());client.ttl("string key", writeTTL);} else {clearTimeout(myTimer);console.log("I expired");client.quit();}});}, 1000);} function writeTTL(err, data) {console.log("I live for this long yet: " + data);}
运行结果:
 

Reply: OKI live: Hello WorldI live for this long yet: 2I live: Hello WorldI live for this long yet: 1I live: Hello WorldI live for this long yet: 0I expired