在Node.js应用中使用Redis的方法简介


Posted in Javascript onJune 24, 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 insertAfter() 实现函数代码
Oct 12 Javascript
dtree 网页树状菜单及传递对象集合到js内,动态生成节点
Apr 14 Javascript
浅谈jQuery事件绑定原理
Jan 02 Javascript
JavaScript生成随机数的4种自定义函数分享
Feb 28 Javascript
微信小程序 UI布局常用技巧整理总结
Dec 05 Javascript
bootstrap fileinput实现文件上传功能
Aug 23 Javascript
vue 组件中slot插口的具体用法
Apr 03 Javascript
vue中关闭eslint的方法分析
Aug 04 Javascript
JS实现的视频弹幕效果示例
Aug 17 Javascript
JavaScript实现JSON合并操作示例【递归深度合并】
Sep 07 Javascript
jQuery实现的网站banner图片无缝轮播效果完整实例
Jan 28 jQuery
js实现烟花特效
Mar 02 Javascript
浅析Node.js中使用依赖注入的相关问题及解决方法
Jun 24 #Javascript
浅析Node.js中的内存泄漏问题
Jun 23 #Javascript
充分发挥Node.js程序性能的一些方法介绍
Jun 23 #Javascript
Node.js编程中客户端Session的使用详解
Jun 23 #Javascript
使用Meteor配合Node.js编写实时聊天应用的范例
Jun 23 #Javascript
使用Node.js为其他程序编写扩展的基本方法
Jun 23 #Javascript
Windows系统下Node.js的简单入门教程
Jun 23 #Javascript
You might like
php实现QQ空间获取当前用户的用户名并生成图片
2015/07/25 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
jqGrid日期格式的判断示例代码(开始日期与结束日期)
2013/11/08 Javascript
JQuery对表单元素的基本操作使用总结
2014/07/18 Javascript
JavaScript中输出标签的方法
2014/08/27 Javascript
JS中三目运算符和if else的区别分析与示例
2014/11/21 Javascript
javaScript中slice函数用法实例分析
2015/06/08 Javascript
JS实现网页右侧带动画效果的伸缩窗口代码
2015/10/29 Javascript
全面详细的jQuery常见开发技巧手册
2016/02/21 Javascript
jQuery插件cxSelect多级联动下拉菜单实例解析
2016/06/24 Javascript
js注册时输入合法性验证方法
2017/10/21 Javascript
vue.js移动数组位置,同时更新视图的方法
2018/03/08 Javascript
解决vue项目中type=”file“ change事件只执行一次的问题
2018/05/16 Javascript
默认浏览器设置及vue自动打开页面的方法
2018/09/21 Javascript
React和Vue中监听变量变化的方法
2018/11/14 Javascript
Vue Autocomplete 自动完成功能简单示例
2019/05/25 Javascript
浅谈v-for 和 v-if 并用时筛选条件方法
2019/11/07 Javascript
在vue中使用vuex,修改state的值示例
2019/11/08 Javascript
Vue实现点击当前行变色
2020/12/14 Vue.js
[03:08]迎霜节狂欢!2018年迎霜节珍藏Ⅰ一览
2018/12/25 DOTA
[51:27]LGD vs Liquid 2019国际邀请赛小组赛 BO2 第二场 8.16
2019/08/19 DOTA
跟老齐学Python之不要红头文件(1)
2014/09/28 Python
Python列表推导式与生成器用法分析
2018/08/02 Python
python3 assert 断言的使用详解 (区别于python2)
2019/11/27 Python
Python 日期的转换及计算的具体使用详解
2020/01/16 Python
Django 实现对已存在的model进行更改
2020/03/28 Python
解决Windows下python和pip命令无法使用的问题
2020/08/31 Python
LVMH旗下最大的奢侈品网站平台:24S
2020/05/24 全球购物
开业主持词
2014/03/21 职场文书
职务说明书范文
2014/05/07 职场文书
关爱留守儿童标语
2014/06/18 职场文书
2014入党积极分子破除“四风”思想汇报
2014/09/14 职场文书
电气工程师岗位职责
2015/02/12 职场文书
教师工作表现自我评价
2015/03/05 职场文书
2019同学聚会主持词
2019/05/06 职场文书
JavaScript 事件捕获冒泡与捕获详情
2021/11/11 Javascript