在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 相关文章推荐
js禁止页面复制功能禁用页面右键菜单示例代码
Aug 29 Javascript
jquery trigger伪造a标签的click事件取代window.open方法
Jun 23 Javascript
JavaScript实现在页面间传值的方法
Apr 07 Javascript
js禁止页面刷新与后退的方法
Jun 08 Javascript
JavaScript中用getDate()方法返回指定日期的教程
Jun 09 Javascript
老生常谈javascript变量的命名规范和注释
Sep 29 Javascript
微信小程序 教程之WXML
Oct 18 Javascript
jQuery autoComplete插件两种使用方式及动态改变参数值的方法详解
Oct 24 Javascript
JavaScript中数组的各种操作的总结(必看篇)
Feb 13 Javascript
Vue resource中的GET与POST请求的实例代码
Jul 21 Javascript
jsTree事件和交互以及插件plugins详解
Aug 29 Javascript
Vue路由钩子之afterEach beforeEach的区别详解
Jul 15 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
PHP STRING 陷阱原理说明
2010/07/24 PHP
PHP之生成GIF动画的实现方法
2013/06/07 PHP
php数据序列化测试实例详解
2017/08/12 PHP
对JavaScript的eval()中使用函数的进一步讨论
2008/07/26 Javascript
客户端限制只能上传jpg格式图片的js代码
2010/12/09 Javascript
js限制文本框输入长度两种限制方式(长度、字节数)
2012/12/19 Javascript
S2SH整合JQuery+Ajax实现登录验证功能实现代码
2013/01/30 Javascript
div拖拽插件——JQ.MoveBox.js(自制JQ插件)
2013/05/17 Javascript
js下拉菜单语言选项简单实现
2013/09/23 Javascript
关于javascript模块加载技术的一些思考
2014/11/28 Javascript
AngularJS HTML编译器介绍
2014/12/06 Javascript
深入理解JavaScript单体内置对象
2016/06/06 Javascript
简单实现js间歇或无缝滚动效果
2016/06/29 Javascript
详解js的延迟对象、跨域、模板引擎、弹出层、AJAX【附实例下载】
2016/12/19 Javascript
获取本机IP地址的实例(JavaScript / Node.js)
2017/11/24 Javascript
深入浅析vue-cli@3.0 使用及配置说明
2019/05/08 Javascript
解决vue cli4升级sass-loader(v8)后报错问题
2020/07/30 Javascript
[04:59]2018DOTA2亚洲邀请赛 4.7 Mineski夺冠时刻
2018/04/09 DOTA
[03:04]2018年度DOTA2玩家最喜爱的主播-完美盛典
2018/12/16 DOTA
python3实现暴力穷举博客园密码
2016/06/19 Python
python解析含有重复key的json方法
2019/01/22 Python
python如何获取apk的packagename和activity
2020/01/10 Python
Python函数式编程实例详解
2020/01/17 Python
Python提取视频中图片的示例(按帧、按秒)
2020/10/22 Python
pycharm配置QtDesigner的超详细方法
2021/01/25 Python
校领导推荐信
2013/11/01 职场文书
班长岗位职责
2013/11/10 职场文书
研究生考核个人自我鉴定
2014/03/27 职场文书
建筑横幅标语
2014/10/09 职场文书
幼儿园园长工作总结2015
2015/05/25 职场文书
员工离职证明范本
2015/06/12 职场文书
《我们的民族小学》教学反思
2016/02/19 职场文书
Django实现聊天机器人
2021/05/31 Python
SpringBoot连接MySQL获取数据写后端接口的操作方法
2021/11/02 MySQL
在 HTML 页面中使用 React的场景分析
2022/01/18 Javascript
python前后端自定义分页器
2022/04/13 Python