在express项目中使用redis

准备工作

  • 安装redis

  • 安装redis桌面管理工具:Redis Desktop Manager

  • 项目中安装redis:npm install redis

开始使用redis

使用方法很简单,初始化redis后,就可以使用了,如下:

//初始化
var redis = require("redis"),
client = redis.createClient(); client.on("error", function (err) {
console.log("Error " + err);
}); //使用
client.set("string key", "string val", redis.print);
client.hset("hash key", "hashtest 1", "some value", redis.print);
client.hset(["hash key", "hashtest 2", "some other value"], redis.print);
client.hkeys("hash key", function (err, replies) {
console.log(replies.length + " replies:");
replies.forEach(function (reply, i) {
console.log(" " + i + ": " + reply);
});
client.quit();
});
 

在项目中使用redis

如果在项目中使用redis,我们希望初始化一次,处处可用。我们如何让初始化后的redisClient成为全局变量,或者在别的模块中可用呢。

方法一:将redisClient存储在node的全局对象global中

在 ./bin/www 中创建client,并保存在全局对象global中:

global.redisClient = require("redis").createClient();

这样,redisClient在各模块中,不用引用,到处可用。

在controller层,需要使用redisClient的地方,直接使用

redisClient.hmset("user:"+uid ,{uid:uid,name:"wuwanyu",age:"21"},next);

方法二: 将redis初始化方法,封装在index.js中,然后exports出去

exports.init = function(){
var configs = require('../config.json'); var redis = require("redis"),
redisClient = redis.createClient(configs.redis); redisClient.on("error", function (err) {
console.log("Error " + err);
}); return redisClient;
};

使用时:

var redisClient = require("../database/index.js").init();
redisClient.hgetall("user:"+uid,next);

方法三:将init,close,hmset,hgetall封装方法

初始化redis:

// database/redis.js
module.init = function(callback) { redisClient = redis.createClient(configs.redis); require('./redis/main')(redisClient, module);
require('./redis/hash')(redisClient, module);
require('./redis/sets')(redisClient, module);
require('./redis/sorted')(redisClient, module);
require('./redis/list')(redisClient, module); module.redisClient = redisClient; if(typeof callback === 'function') {
callback();
}
};
 

封装redis的hmset,hgetall等方法:

// database/redis/hash

"use strict";

module.exports = function(redisClient, module) {

    var helpers = module.helpers.redis;

    module.setObject = function(key, data, callback) {
callback = callback || function() {};
redisClient.hmset(key, data, function(err) {
callback(err);
});
}; module.getObject = function(key, callback) {
redisClient.hgetall(key, callback);
};
};
 
 

在./bin/www 调用redis.init()方法,初始化redis;

async.waterfall([
function(cb){
redis.init(cb); //初始化redis
},
],function(){
// 启动node
});
 

在各个controller内调用:

var redis = require("../database/redis.js");

  redis.setObject("user:"+uid ,{uid:uid,name:"wuwanyu",age:"21"},next);  
redis.getObject("user:"+uid,next);
 
目录结构:
 
项目地址:
https://github.com/wuwanyu/redis.express.test

最新文章

  1. Oracle索引梳理系列(四)- Oracle索引种类之位图索引
  2. C++ 中的std::vector介绍(转)
  3. Vmware10如何打开vmware11建立的虚拟机
  4. 数据库中Schema和Database有什么区别
  5. iOS 全局禁止横屏,但UIWebView 全屏播放视频,横屏,解决办法(任意页面横竖屏或禁止)
  6. Python OpenCV —— geometric
  7. Activiti系列:如何让Activiti-Explorer使用sql server数据库
  8. Delphi xe7 FireMonkey / Mobile (Android, iOS)生成 QR Code完整实例
  9. Struts2学习笔记1
  10. SQL VS NoSQL
  11. php将会话保存在数据库里
  12. C# EnumHelper
  13. Linux文件类型介绍
  14. [物理学与PDEs]第1章习题8 磁场分布 $\ra$ 电流分布
  15. Centos7 操作系统 mysql5.7 配置远程登陆操作
  16. PTA地下迷宫探索
  17. linux 组管理
  18. 跟踪分析Linux内核的启动过程小解
  19. linux内核cdev_init系列函数(字符设备的注册)
  20. android中画弧函数canvas.drawArc()之理解

热门文章

  1. 无法启动此程序,因为计算机中丢失 MSVCP120.dll。尝试安装该程序以解决此问题
  2. 【IntellJ IDEA】idea的Terminal窗口中文乱码 解决方法
  3. [Android Traffic] 调整定时更新的频率(C2DM与退避算法)
  4. django 用model来简化form
  5. nginx静态资源配置
  6. Java之JDBC学习
  7. 计算机速度GHz等于每秒多少次
  8. 【共享单车】—— React后台管理系统开发手记:项目工程化开发
  9. shopex下二级目录wordpress伪静态规则写法_SEO教程
  10. Java 实现模板方法(TemplateMethod)模式