Nodejs中使用redis数据库的正确姿势.docx

上传人:小飞机 文档编号:3162082 上传时间:2023-03-11 格式:DOCX 页数:6 大小:38.48KB
返回 下载 相关 举报
Nodejs中使用redis数据库的正确姿势.docx_第1页
第1页 / 共6页
Nodejs中使用redis数据库的正确姿势.docx_第2页
第2页 / 共6页
Nodejs中使用redis数据库的正确姿势.docx_第3页
第3页 / 共6页
Nodejs中使用redis数据库的正确姿势.docx_第4页
第4页 / 共6页
Nodejs中使用redis数据库的正确姿势.docx_第5页
第5页 / 共6页
亲,该文档总共6页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《Nodejs中使用redis数据库的正确姿势.docx》由会员分享,可在线阅读,更多相关《Nodejs中使用redis数据库的正确姿势.docx(6页珍藏版)》请在三一办公上搜索。

1、Nodejs中使用redis数据库的正确姿势Node.js中使用redis数据库的正确姿势 Redis是一个常用的Nosql数据库,一般用来代替Memcached做缓存服务,同时它也支持数据的持久化,有着比较广泛的应用场景。在Java中使用redis我们已经比较熟悉了,那么在node.js和koa.js框架中使用Redis的正确姿势是怎样的呢? Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 Redis 与其他 key - value 缓存产品有以下三个特点: * Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用

2、。 * Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 * Redis支持数据的备份,即master-slave模式的数据备份。 Node.js已经有很多redis相关的库,我在npm.org上搜了下大概有十几个吧,其中经常使用的redis,co-redis。 由于我用koa做web框架,因此就直接用了koa-redis。这篇文章涉及koa.js,yield生成器和Promise相关的知识,需要先对这些概念有一定的认识。 下面介绍下redis和koa.js相关的操作吧,我是在Mac下操作的。 1. 安装redis,并启动

3、客户端和服务器端 brew install redis 启动服务器端 redis-server 启动客户端 redis-cli 127.0.0.1:63791 select 0 OK 127.0.0.1:6379 keys * (empty list or set) 127.0.0.1:6379 2. 安装node.js和koa.js,node的安装这里就不讲了,通过brew install就可以。 npm install koa redis koa-redis 可以看到koa-redis已经依赖了co-redis, es6-promisify等库 - koa-redis2.1.2 +- co

4、-redis2.1.1 | - es6-promisify4.1.0 | - es6-promise3.2.1 - hiredis0.5.0 +- bindings1.2.1 - nan2.4.0 3. koa.js操作redis数据 这块是本文重点,由于官方的文档和例子不太详细,不熟悉node的同学折腾起来会比较累,所以本文提供了一个比较完整的例子。具体代码里面注释已经写的比较清楚了。 var session = require(koa-generic-session); var redisStore = require(koa-redis); var koa = require(koa);

5、 var redis = require(redis); / 注意: client默认是异步callback方式调用; / store.client是经过了co-redis包装,返回Promise, 在koa里面用yield异步编程比较方便 var client = teClient(6379, 172.19.65.240); var app = koa; app.keys = keys, keykeys; / var option=host: 172.19.65.240, db:1; var options = client: client, db: 1; var store = redis

6、Store(options); app.use(session( store: store ); app.use(function * switch (this.path) case /get: get.call(this); break; case /testKV: / 保存key value if (this.query.adminId) yield store.client.set(test1, this.query.adminId); /同步读取key value this.body = yield store.client.get(test1); break; case /testH

7、M: /操作hashmap var result = yieldstore.client.hmset(hosts, mjr, 123, another, 23, home, 1234); console.log(result); var obj = yield store.client.hgetall(hosts) console.dir(obj); /获取hashmap key的值 this.body = yield store.client.hget(hosts, home); /保存hashmap,使用默认的callback方式 / client.hset(hash key, hasht

8、est 1, some value, redis.print); / client.hset(hash key, hashtest 2, some other value, redis.print); / client.hmset(hosts, mjr, 1, another, 23, home, 1234); / client.hmset(key, test keys 1, test val 1, test keys 2, test val 2, function (err, res) / console.log(res); / ); break; case /testSet: /保存set

9、 var key = key1; store.client.sadd(key1, v1); store.client.sadd(key1, v2); store.client.sadd(key1, v3); /读取set store.client.multi .sismember(key, v1) .smembers(key) .exec(function (err, replies) console.log(MULTI got + replies.length + replies); replies.forEach(function (reply, index) console.log(Re

10、ply + index + : + reply.toString); ); ); /读取set this.body = yield store.client.smembers(key1); break; case /testList: /保存list store.client.rpush(mylist, bbb) store.client.rpush(mylist, ccc) store.client.lpush(mylist, aaa) this.body = yield store.client.rpop(mylist); break; case /remove: remove.call(

11、this); break; case /regenerate: yield regenerate.call(this); break; ); function get var session = this.session; session.count = session.count | 0; session.count+; var test = store.client.get(test); console.log(test); this.body = session.count; function remove this.session = null; this.body = 0; function *regenerate get.call(this); yield this.regenerateSession; get.call(this); app.listen(8080); 关于在koa框架中使用redis就写这么多吧,其实还有发布-订阅等的用法,这里就不说了。

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 生活休闲 > 在线阅读


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号