在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聚焦文本框与扩展文本框聚焦方法
Oct 12 Javascript
Javascript 浮点运算的问题分析与解决方法
Aug 27 Javascript
jQuery遍历Form示例代码
Sep 03 Javascript
父元素与子iframe相互获取变量和元素对象的具体实现
Oct 15 Javascript
原生js实现日期联动
Jan 12 Javascript
jquery实现的用户注册表单提示操作效果代码分享
Aug 28 Javascript
BOM系列第一篇之定时器setTimeout和setInterval
Aug 17 Javascript
JS常见算法详解
Feb 28 Javascript
对vux点击事件的优化详解
Aug 28 Javascript
微信小程序官方动态自定义底部tabBar的例子
Sep 04 Javascript
vue-cli3项目打包后自动化部署到服务器的方法
Sep 16 Javascript
基于vue的video播放器的实现示例
Feb 19 Vue.js
浅析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日历类分享
2014/11/18 PHP
php通过array_unshift函数添加多个变量到数组前端的方法
2015/03/18 PHP
详解PHP5.6.30与Apache2.4.x配置
2017/06/02 PHP
深入理解JavaScript系列(41):设计模式之模板方法详解
2015/03/04 Javascript
jQuery复制表单元素附源码分享效果演示
2015/09/30 Javascript
原生JavaScript实现滚动条效果
2020/03/24 Javascript
Node.js操作mysql数据库增删改查
2016/03/30 Javascript
JavaScript DOM节点操作方法总结
2016/08/23 Javascript
AngularJS动态加载模块和依赖的方法分析
2016/11/08 Javascript
Vue 单文件中的数据传递示例
2017/03/21 Javascript
js图片上传的封装代码
2017/08/01 Javascript
React Native react-navigation 导航使用详解
2017/12/01 Javascript
VSCode 配置React Native开发环境的方法
2017/12/27 Javascript
Swiper 4.x 使用方法(移动端网站的内容触摸滑动)
2018/05/17 Javascript
node.js到底要不要加分号浅析
2018/07/11 Javascript
Vue循环组件加validate多表单验证的实例
2018/09/18 Javascript
IE8中jQuery.load()加载页面不显示的原因
2018/11/15 jQuery
python实现xlsx文件分析详解
2018/01/02 Python
python 脚本生成随机 字母 + 数字密码功能
2018/05/26 Python
python实现在一个画布上画多个子图
2020/01/19 Python
Python连接Hadoop数据中遇到的各种坑(汇总)
2020/04/14 Python
PyCharm2019 安装和配置教程详解附激活码
2020/07/31 Python
Python Selenium自动化获取页面信息的方法
2020/08/31 Python
Python3如何使用range函数替代xrange函数
2020/10/05 Python
windows+vscode安装paddleOCR运行环境的步骤
2020/11/11 Python
纯CSS3实现带动画效果导航菜单无需js
2013/09/27 HTML / CSS
CSS3制作Dropdown下拉菜单的方法
2015/07/18 HTML / CSS
HTML5 Canvas旋转动画的2个代码例子(一个旋转的太极图效果)
2014/04/10 HTML / CSS
Diamondback自行车:拥有你的冒险
2019/04/22 全球购物
给儿子的表扬信
2014/01/15 职场文书
违纪检讨书2000字
2014/02/08 职场文书
和谐家庭事迹材料
2014/12/20 职场文书
2016党风廉政建设心得体会范文
2016/01/25 职场文书
德劲DE1108畅想
2021/04/22 无线电
python实现自动清理文件夹旧文件
2021/05/10 Python
Python函数式编程中itertools模块详解
2021/09/15 Python