在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 相关文章推荐
JQuery中each()的使用方法说明
Aug 19 Javascript
JS仿flash上传头像效果实现代码
Jul 18 Javascript
JS实现自动切换文字的导航效果代码
Aug 27 Javascript
JavaScript拖拽、碰撞、重力及弹性运动实例分析
Jan 08 Javascript
基于JavaScript实现TAB标签效果
Jan 12 Javascript
老生常谈 js中this的指向
Jun 30 Javascript
AngularJS优雅的自定义指令
Jul 01 Javascript
Javascript之深入浅出prototype
Feb 06 Javascript
electron-vue利用webpack打包实现多页面的入口文件问题
May 12 Javascript
vue+egg+jwt实现登录验证的示例代码
May 18 Javascript
vue+element树组件 实现树懒加载的过程详解
Oct 21 Javascript
微信浏览器左上角返回按钮监听的实现
Mar 04 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中使用临时表查询数据的一个例子
2013/02/03 PHP
php选择排序法实现数组排序实例分析
2015/02/16 PHP
一些常用且实用的原生JavaScript函数
2010/09/08 Javascript
javascript 数组排序函数sort和reverse使用介绍
2013/11/21 Javascript
jQuery避免$符和其他JS库冲突的方法对比
2014/02/20 Javascript
jQuery获得指定元素坐标的方法
2015/04/14 Javascript
在JavaScript应用中实现延迟加载的方法
2015/06/25 Javascript
AngulerJS学习之按需动态加载文件
2017/02/13 Javascript
vue实现表格增删改查效果的实例代码
2017/07/18 Javascript
es6中比较有用的7个技巧小结
2019/07/12 Javascript
解决Vue在Tomcat8下部署页面不加载的问题
2019/11/12 Javascript
使用 Jest 和 Supertest 进行接口端点测试实例详解
2020/04/25 Javascript
用Python实现QQ游戏大家来找茬辅助工具
2014/09/14 Python
如何在sae中设置django,让sae的工作环境跟本地python环境一致
2017/11/21 Python
python 类对象和实例对象动态添加方法(分享)
2017/12/31 Python
使用C++扩展Python的功能详解
2018/01/12 Python
python实现拓扑排序的基本教程
2018/03/11 Python
使用Python向DataFrame中指定位置添加一列或多列的方法
2019/01/29 Python
基于YUV 数据格式详解及python实现方式
2019/12/09 Python
Pyecharts地图显示不完成问题解决方案
2020/05/11 Python
Django中的AutoField字段使用
2020/05/18 Python
Python实现SMTP邮件发送
2020/06/16 Python
Linux安装Python3如何和系统自带的Python2并存
2020/07/23 Python
Pycharm导入anaconda环境的教程图解
2020/07/31 Python
python list等分并从等分的子集中随机选取一个数
2020/11/16 Python
详解HTML5表单新增属性
2016/12/21 HTML / CSS
美国著名珠宝品牌之一:Jared The Galleria Of Jewelry
2016/10/01 全球购物
澳大利亚便宜的家庭购物网站:CrazySales
2018/02/06 全球购物
导师推荐信范文
2014/05/09 职场文书
领导干部考核评语
2015/01/04 职场文书
2015年学雷锋活动总结
2015/02/06 职场文书
业务员管理制度范本
2015/08/06 职场文书
销售人员管理制度
2015/08/06 职场文书
幼儿园小班教师随笔
2015/08/14 职场文书
MySQL去除重叠时间求时间差和的实现
2021/08/23 MySQL
关于的python五子棋的算法
2022/05/02 Python