在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 相关文章推荐
JQuery 弹出框定位实现方法
Dec 02 Javascript
Yii-自定义删除确认弹框(zyd)jquery实现代码
Mar 04 Javascript
使用Js让Html中特殊字符不被转义
Nov 05 Javascript
js选项卡的实现方法
Feb 09 Javascript
jQuery EasyUI 菜单与按钮之创建简单的菜单和链接按钮
Nov 18 Javascript
关于List.ToArray()方法的效率测试
Sep 30 Javascript
深入理解Node.js 事件循环和回调函数
Nov 02 Javascript
原生JS实现图片轮播效果
Dec 26 Javascript
微信小程序 wx.login解密出现乱码的问题解决办法
Mar 10 Javascript
js脚本中执行java后台代码方法解析
Oct 11 Javascript
详解vue 自定义组件使用v-model 及探究其中原理
Oct 11 Javascript
vue+vant-UI框架实现购物车的复选框全选和反选功能
Nov 05 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
web目录下不应该存在多余的程序(安全考虑)
2012/05/09 PHP
浅析php创建者模式
2014/11/25 PHP
php实现session共享的实例方法
2019/09/19 PHP
php7 新增功能实例总结
2020/05/25 PHP
各浏览器对click方法的支持差异小结
2011/07/31 Javascript
鼠标拖拽移动子窗体的JS实现
2014/02/25 Javascript
jQuery实现的导航条切换可显示隐藏
2014/10/22 Javascript
js实现简单的左右两边固定广告效果实例
2015/04/10 Javascript
js实现的星星评分功能函数
2015/12/09 Javascript
JS锚点的设置与使用方法
2016/09/05 Javascript
关于JS Lodop打印插件打印Bootstrap样式错乱问题的解决方案
2016/12/23 Javascript
javascript 注释代码的几种方法总结
2017/01/04 Javascript
微信小程序scroll-view仿拼多多横向滑动滚动条
2020/04/21 Javascript
17道题让你彻底理解JS中的类型转换
2019/08/08 Javascript
vscode中eslint插件的配置(prettier配置无效)
2019/09/10 Javascript
使用Python的判断语句模拟三目运算
2015/04/24 Python
详解Python编程中基本的数学计算使用
2016/02/04 Python
Python字符串切片操作知识详解
2016/03/28 Python
Anaconda 离线安装 python 包的操作方法
2018/06/11 Python
python for 循环获取index索引的方法
2019/02/01 Python
在python中将list分段并保存为array类型的方法
2019/07/15 Python
通过python3实现投票功能代码实例
2019/09/26 Python
如何运行带参数的python脚本
2019/11/15 Python
django实现类似触发器的功能
2019/11/15 Python
python3实现raspberry pi(树莓派)4驱小车控制程序
2020/02/12 Python
Python reversed函数及使用方法解析
2020/03/17 Python
Django 用户认证Auth组件的使用
2020/11/30 Python
Django搭建项目实战与避坑细节详解
2020/12/06 Python
财务会计专业毕业生自荐信
2013/10/02 职场文书
校园门卫岗位职责
2013/12/09 职场文书
伦敦奥运会口号
2014/06/13 职场文书
电子商务求职信
2014/06/15 职场文书
十七岁的单车观后感
2015/06/12 职场文书
2016年六一儿童节开幕词
2016/03/04 职场文书
幼儿园大班教师评语
2019/06/21 职场文书
javascript中Set、Map、WeakSet、WeakMap区别
2022/12/24 Javascript