在开始本文之前请确保安装好 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