在Node.js应用中读写Redis数据库的简单方法


Posted in Javascript onJune 30, 2015

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

 
Javascript 相关文章推荐
用JavaScript编写COM组件的步骤
Mar 17 Javascript
子窗口、父窗口和Silverlight之间的相互调用
Aug 16 Javascript
js函数内变量的作用域分析
Jan 12 Javascript
js实现DOM走马灯特效的方法
Jan 21 Javascript
jQuery实现图片上传和裁剪插件Croppie
Nov 29 Javascript
用JavaScript动态建立或增加CSS样式表的实现方法
May 20 Javascript
JS集成fckeditor及判断内容是否为空的方法
May 27 Javascript
利用CSS、JavaScript及Ajax实现图片预加载的三大方法
Jan 22 Javascript
ES6新特性之数组、Math和扩展操作符用法示例
Apr 01 Javascript
基于Bootstrap下拉框插件bootstrap-select使用方法详解
Aug 07 Javascript
javascript中this的用法实践分析
Jul 29 Javascript
JS如何生成动态列表
Sep 22 Javascript
javascript日期计算实例分析
Jun 29 #Javascript
javascript处理a标签超链接默认事件的方法
Jun 29 #Javascript
JavaScript使表单中的内容显示在屏幕上的方法
Jun 29 #Javascript
JavaScript实现级联菜单的方法
Jun 29 #Javascript
node.js读取文件到字符串的方法
Jun 29 #Javascript
JavaScript模拟实现键盘打字效果
Jun 29 #Javascript
JavaScript实现把数字转换成中文
Jun 29 #Javascript
You might like
《Re:从零开始的异世界生活 冰结之绊》
2020/04/09 日漫
apache rewrite_module模块使用教程
2008/01/10 PHP
自动把纯文本转换成Web页面的php代码
2009/08/27 PHP
php ImageMagick windows下安装教程
2015/01/26 PHP
Javascript打印网页部分内容的脚本
2008/11/17 Javascript
IE6,IE7下js动态加载图片不显示错误
2010/07/17 Javascript
Javascript实现仿WebQQ界面的“浮云”兼容 IE7以上版本及FF
2011/04/27 Javascript
js实现字符串的16进制编码不加密
2014/04/25 Javascript
angularjs中的e2e测试实例
2014/12/06 Javascript
jQuery中[attribute]选择器用法实例
2014/12/31 Javascript
javascript创建对象的几种模式介绍
2016/05/06 Javascript
jQuery Dialog对话框事件用法实例分析
2016/05/10 Javascript
jQuery实用小技巧_输入框文字获取和失去焦点的简单实例
2016/08/25 Javascript
vue mounted组件的使用
2018/06/18 Javascript
ajax与jsonp的区别及用法
2018/10/16 Javascript
使用webpack搭建vue环境的教程详解
2019/12/31 Javascript
vue 使用 vue-pdf 实现pdf在线预览的示例代码
2020/04/26 Javascript
[01:01:35]Optic vs paiN 2018国际邀请赛小组赛BO2 第二场 8.19
2018/08/21 DOTA
Python中模块与包有相同名字的处理方法
2017/05/05 Python
python抓取网页内容并进行语音播报的方法
2018/12/24 Python
python读取.mat文件的数据及实例代码
2019/07/12 Python
Django项目后台不挂断运行的方法
2019/08/31 Python
Python可变参数会自动填充前面的默认同名参数实例
2019/11/18 Python
python 实现矩阵按对角线打印
2019/11/29 Python
python飞机大战pygame游戏框架搭建操作详解
2019/12/17 Python
国外平面设计素材网站:The Hungry JPEG
2017/03/28 全球购物
End Clothing美国站:英国男士潮牌商城
2018/04/20 全球购物
美国糖果店:Sugarfina
2019/02/21 全球购物
流行文化收藏品:Sideshow(DC漫画,星球大战,漫威)
2019/03/17 全球购物
经营目标管理责任书
2014/07/25 职场文书
作风大整顿心得体会
2014/09/10 职场文书
青春飞扬演讲稿
2014/09/11 职场文书
税务干部个人整改措施思想汇报
2014/10/10 职场文书
2015年母亲节寄语
2015/03/23 职场文书
Python自然语言处理之切分算法详解
2021/04/25 Python
唤醒紫霞仙子,携手再游三界!大话手游X《大话西游》电影合作专属剧情任务
2022/04/03 其他游戏