这篇文章主要介绍了在Node.js应用中读写Redis数据库的简单方法,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 value
 - client.set("string key", "Hello World", function (err, reply) {
 - console.log(reply.toString());
 - });
 - // Get a value
 - client.get("string key", function (err, reply) {
 - console.log(reply.toString());
 - });
 - }
 
当连接到 Redis 后会调用 runSample 函数并设置一个值,紧接着便读出该值,运行的结果如下:
- OK
 - Hello 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 expiration
 - client.set('string key', 'Hello World', redis.print);
 - // Expire in 3 seconds
 - client.expire('string key', 3);
 - // This timer is only to demo the TTL
 - // Runs every second until the timeout
 - // occurs on the value
 - var 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: OK
 - I live: Hello World
 - I live: Hello World
 - I live: Hello World
 - I 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 value
 - client.set('string key', 'Hello World', redis.print);
 - // Expire in 3 seconds
 - client.expire('string key', 3);
 - // This timer is only to demo the TTL
 - // Runs every second until the timeout
 - // occurs on the value
 - var 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: OK
 - I live: Hello World
 - I live for this long yet: 2
 - I live: Hello World
 - I live for this long yet: 1
 - I live: Hello World
 - I live for this long yet: 0
 - I expired
 
| 				 
 
  | 		
新闻热点
疑难解答
图片精选