在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实现盒子下拉效果示例代码
Sep 12 Javascript
JavaScript中数据结构与算法(二):队列
Jun 19 Javascript
基于BootStrap Metronic开发框架经验小结【二】列表分页处理和插件JSTree的使用
May 12 Javascript
JavaScript 冒泡排序和选择排序的实现代码
Sep 03 Javascript
基于Vue渲染与插件的加载顺序的问题详解
Mar 05 Javascript
JS匿名函数和匿名自执行函数概念与用法分析
Mar 16 Javascript
详解Javascript中new()到底做了些什么?
Mar 29 Javascript
小程序视频或音频自定义可拖拽进度条的示例代码
Sep 30 Javascript
详解微信小程序之scroll-view的flex布局问题
Jan 16 Javascript
Vue数据绑定简析小结
May 07 Javascript
Vue实现图片轮播组件思路及实例解析
May 11 Javascript
JS制作简易计算器的实例代码
Jul 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
WINDOWS 2000下使用ISAPI方式安装PHP
2006/09/05 PHP
深入理解PHP原理之错误抑制与内嵌HTML分析
2011/05/02 PHP
ThinkPHP2.0读取MSSQL提示Incorrect syntax near the keyword 'AS'的解决方法
2014/06/25 PHP
PHP解码unicode编码的中文字符代码分享
2014/08/13 PHP
php连接mysql数据库
2017/03/21 PHP
PHP array_shift()用法实例分析
2019/01/07 PHP
PHP7 mongoDB扩展使用的方法分享
2019/05/02 PHP
关于jQuery中的end()使用方法
2011/07/10 Javascript
javascript 主动派发事件总结
2011/08/09 Javascript
正则表达式搭配js轻松处理json文本方便而老古
2013/02/17 Javascript
js实现的点击数量加一可操作数据库
2014/05/09 Javascript
png在IE6 下无法透明的解决方法汇总
2015/05/21 Javascript
使用JQuery在线制作ppt并在线演示源码特效
2015/09/08 Javascript
JS获得多个同name 的input输入框的值的实现方法
2017/01/09 Javascript
使用vue.js编写蓝色拼图小游戏
2017/03/17 Javascript
jQuery选择器之表单元素选择器详解
2017/09/19 jQuery
jQuery实现动态添加节点与遍历节点功能示例
2017/11/09 jQuery
浅谈Vue-cli 命令行工具分析
2017/11/22 Javascript
mpvue构建小程序的方法(步骤+地址)
2018/05/22 Javascript
vue如何引入sass全局变量
2018/06/28 Javascript
JS获取今天是本月第几周、本月共几周、本月有多少天、是今年的第几周、是今年的第几天的示例代码
2018/12/05 Javascript
微信小程序实现渐入渐出动画效果
2019/06/13 Javascript
layui表单提交到后台自动封装到实体类的方法
2019/09/12 Javascript
pyqt和pyside开发图形化界面
2014/01/22 Python
详解Python中如何写控制台进度条的整理
2018/03/07 Python
在windows下Python打印彩色字体的方法
2018/05/15 Python
Django框架之DRF 基于mixins来封装的视图详解
2019/07/23 Python
python3.6使用SMTP协议发送邮件
2020/05/20 Python
HTML5 创建canvas元素示例代码
2014/06/04 HTML / CSS
你在项目中用到了xml技术的哪些方面?如何实现的?
2014/01/26 面试题
建筑安全责任书范本
2014/07/24 职场文书
私人房屋买卖协议书
2014/10/04 职场文书
2015元旦节寄语
2014/12/08 职场文书
甜美蛋糕店的创业计划书模板,拿来即用!
2019/08/21 职场文书
五年级作文之想象作文
2019/10/30 职场文书
golang中实现给gif、png、jpeg图片添加文字水印
2021/04/26 Golang