在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 相关文章推荐
Javascript笔记一 js以及json基础使用说明
May 22 Javascript
js修改input的type属性问题探讨
Oct 12 Javascript
jQuery实现点击该行即可删除HTML表格行
Oct 17 Javascript
JavaScript实现的字符串replaceAll函数代码分享
Apr 02 Javascript
javascript实现数字倒计时特效
Mar 30 Javascript
jquery+ajax实现省市区三级联动 (封装和不封装两种方式)
May 15 jQuery
微信小程序wx.previewImage预览图片实例详解
Dec 07 Javascript
JS实现的合并多个数组去重算法示例
Apr 11 Javascript
JS闭包原理与应用经典示例
Dec 20 Javascript
layui实现三级联动效果
Jul 26 Javascript
Vue中img的src是动态渲染时不显示的解决
Nov 14 Javascript
js实现随机圆与矩形功能
Oct 29 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 curl的深入解析
2013/06/02 PHP
PHP empty函数报错解决办法
2014/03/06 PHP
一个经典的PHP验证码类分享
2014/11/18 PHP
PHP判断一个gif图片是否为动态图片的方法
2014/11/19 PHP
ThinkPHP模板循环输出Volist标签用法实例详解
2016/03/23 PHP
PHP+ajax实现二级联动菜单功能示例
2018/08/10 PHP
PHP类的自动加载与命名空间用法实例分析
2020/06/05 PHP
解决iframe的frameborder在chrome/ff/ie下的差异
2010/08/12 Javascript
深入了解javascript中的prototype与继承
2013/04/14 Javascript
json中换行符的处理方法示例介绍
2014/06/10 Javascript
如何减少浏览器的reflow和repaint
2015/02/26 Javascript
javascript显式类型转换实例分析
2015/04/25 Javascript
一步步教会你微信小程序的登录鉴权
2018/04/09 Javascript
详解Vue.js iview实现树形权限表(可扩展表)
2018/09/30 Javascript
基于three.js实现的3D粒子动效实例代码
2019/04/09 Javascript
vue 解除鼠标的监听事件的方法
2019/11/13 Javascript
浅谈vue websocket nodeJS 进行实时通信踩到的坑
2020/09/22 NodeJs
[54:05]DOTA2-DPC中国联赛定级赛 SAG vs iG BO3第一场 1月9日
2021/03/11 DOTA
python求解数组中两个字符串的最小距离
2018/09/27 Python
Python 窗体(tkinter)按钮 位置实例
2019/06/13 Python
python生成器推导式用法简单示例
2019/10/08 Python
html5 application cache遇到的严重问题
2012/12/26 HTML / CSS
New Balance加拿大官方网站:运动鞋和健身服装
2018/11/19 全球购物
小米旗下精品生活电商平台:小米有品
2018/12/18 全球购物
艺术家策划的室内设计:Curious Egg
2019/03/06 全球购物
物业管理应届生求职信
2013/10/28 职场文书
擅自离岗检讨书
2014/02/11 职场文书
遗嘱继承公证书
2014/04/09 职场文书
幼儿教师师德承诺书
2014/05/23 职场文书
创建文明城市标语
2014/06/16 职场文书
2014年大学生社会实践自我鉴定
2014/09/26 职场文书
机关作风整顿个人剖析材料
2014/10/06 职场文书
2014年服务员个人工作总结
2014/12/23 职场文书
大学生村官工作总结2015
2015/04/09 职场文书
vue+springboot实现登录验证码
2021/05/27 Vue.js
Python实现Matplotlib,Seaborn动态数据图
2022/05/06 Python