在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 相关文章推荐
Web开发者必备的12款超赞jQuery插件
Dec 03 Javascript
使用Jquery实现点击文字后变成文本框且可修改
Sep 21 Javascript
event对象获取方法总结在google浏览器下测试
Nov 03 Javascript
JS右下角广告窗口代码(可收缩、展开及关闭)
Sep 04 Javascript
jQuery和hwSlider实现内容响应式可触控滑动切换效果附源码下载(二)
Jun 22 Javascript
JS使用正则实现去掉字符串左右空格的方法
Dec 27 Javascript
Chrome浏览器的alert弹窗禁止再次弹出后恢复的方法
Dec 30 Javascript
AngularJs点击状态值改变背景色的实例
Dec 18 Javascript
Vue CLI 3.x 自动部署项目至服务器的方法
Apr 02 Javascript
mpvue实现左侧导航与右侧内容的联动
Oct 21 Javascript
VUE渲染后端返回含有script标签的html字符串示例
Oct 28 Javascript
详解JavaScript 中的批处理和缓存
Nov 19 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 REMOTE_ADDR之获取访客IP的代码
2008/04/22 PHP
10个可以简化php开发过程的MySQL工具
2010/04/11 PHP
ThinkPHP写第一个模块应用
2012/02/20 PHP
thinkPHP学习笔记之安装配置篇
2015/03/05 PHP
js 事件处理函数间的Event物件是否全等
2011/04/08 Javascript
70+漂亮且极具亲和力的导航菜单设计国外网站推荐
2011/09/20 Javascript
javascript预加载图片、css、js的方法示例介绍
2013/10/14 Javascript
Javascript学习笔记之 函数篇(一) : 函数声明和函数表达式
2014/06/24 Javascript
AngularJS语法详解(续)
2015/01/23 Javascript
javascript实现拖动元素交换位置
2015/11/29 Javascript
JavaScript File分段上传
2016/03/10 Javascript
Jquery attr()方法 属性赋值和属性获取详解
2016/04/15 Javascript
JS常用字符串方法(推荐)
2021/01/15 Javascript
AngularJs concepts详解及示例代码
2016/09/01 Javascript
深入理解Node中的buffer模块
2017/06/03 Javascript
node vue项目开发之前后端分离实战记录
2017/12/13 Javascript
vue中v-for通过动态绑定class实现触发效果
2018/12/06 Javascript
Vue 自定义指令实现一键 Copy功能
2019/09/16 Javascript
JavaScript函数Call、Apply原理实例解析
2020/02/17 Javascript
js实现点击烟花特效
2020/10/14 Javascript
解决vux 中popup 组件Mask 遮罩在最上层的问题
2020/11/03 Javascript
python实现360的字符显示界面
2014/02/21 Python
两个使用Python脚本操作文件的小示例分享
2015/08/27 Python
详解python while 函数及while和for的区别
2018/09/07 Python
python生成带有表格的图片实例
2019/02/03 Python
python flask安装和命令详解
2019/04/02 Python
带你彻底搞懂python操作mysql数据库(cursor游标讲解)
2020/01/06 Python
基于python爬取有道翻译过程图解
2020/03/31 Python
HTML5 video播放器全屏(fullScreen)方法实例
2015/04/24 HTML / CSS
Laura官网:加拿大女性的顶级时尚目的地
2019/09/20 全球购物
加拿大拼图大师:Puzzle Master
2020/12/28 全球购物
镇班子对照检查材料思想汇报
2014/09/24 职场文书
个人简历自我评价怎么写
2015/03/10 职场文书
保险公司岗前培训工作总结
2015/10/24 职场文书
班委竞选稿范文
2015/11/21 职场文书
MySQL 数据库 增删查改、克隆、外键 等操作
2022/05/11 MySQL