在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的js分页代码
Jun 10 Javascript
js从外部获取图片的实现方法
Aug 05 Javascript
AngularJS框架中的双向数据绑定机制详解【减少需要重复的开发代码量】
Jan 19 Javascript
Javascript前端经典的面试题及答案
Mar 14 Javascript
JS+HTML5实现上传图片预览效果完整实例【测试可用】
Apr 20 Javascript
JS实现异步上传压缩图片
Apr 22 Javascript
浅谈node模块与npm包管理工具
Jan 03 Javascript
webstrom Debug 调试vue项目的方法步骤
Jul 17 Javascript
JS根据Unix时间戳显示发布时间是多久前【项目实测】
Jul 10 Javascript
JS实现扫码枪扫描二维码功能
Jan 03 Javascript
vue 组件销毁并重置的实现
Jan 13 Javascript
微信小程序实现录音Record功能
May 09 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
迅雷下载《中学科技》怀旧期刊下载
2021/02/27 无线电
PHP缓存技术的使用说明
2011/08/06 PHP
PHP动态页生成静态页的3种常用方法
2014/11/13 PHP
Yii2中使用join、joinwith多表关联查询
2016/06/30 PHP
PHP socket 模拟POST 请求实例代码
2016/07/18 PHP
详解Yii2高级版引入bootstrap.js的一个办法
2017/03/21 PHP
PHP调用API接口实现天气查询功能的示例
2017/09/21 PHP
工作中常用到的JS表单验证代码(包括例子)
2010/11/11 Javascript
Extjs TimeField 显示正常时间格式的代码
2011/06/28 Javascript
自己写的兼容ie和ff的在线文本编辑器类似ewebeditor
2012/12/12 Javascript
Javascript事件实例详解
2013/11/06 Javascript
JQuery以JSON方式提交数据到服务端示例代码
2014/05/05 Javascript
js实现漂浮回顶部按钮实例
2015/05/06 Javascript
JS hashMap实例详解
2016/05/26 Javascript
AngularJS实现与Java Web服务器交互操作示例【附demo源码下载】
2016/11/02 Javascript
原生JS轮播图插件
2017/02/09 Javascript
JavaScript中无法通过div.style.left获取值的解决方法
2017/02/19 Javascript
基于Vue实现图书管理功能
2017/10/17 Javascript
jQuery EasyUI 选项卡面板tabs的使用实例讲解
2017/12/25 jQuery
jQuery动态移除与增加onclick属性的方法详解
2018/06/07 jQuery
jQuery实现左右两个列表框的内容相互移动功能示例
2019/01/27 jQuery
vue + typescript + 极验登录验证的实现方法
2019/06/27 Javascript
es6函数之尾调用优化实例分析
2020/04/25 Javascript
Python简单实现Base64编码和解码的方法
2017/04/29 Python
python爬虫之遍历单个域名
2019/11/20 Python
新手学python应该下哪个版本
2020/06/11 Python
详解使用Python写一个向数据库填充数据的小工具(推荐)
2020/09/11 Python
python 绘制场景热力图的示例
2020/09/23 Python
Python控制鼠标键盘代码实例
2020/12/08 Python
利于python脚本编写可视化nmap和masscan的方法
2020/12/29 Python
英国袜子店:Sock Shop
2017/01/11 全球购物
师德师风学习材料
2014/12/19 职场文书
生日答谢词
2015/01/05 职场文书
你为什么是穷人?可能是这5个缺点造成
2019/07/11 职场文书
新手入门Mysql--sql执行过程
2021/06/20 MySQL
MySQL数据库实验实现简单数据库应用系统设计
2022/06/21 MySQL