暂无图片
暂无图片
暂无图片
暂无图片
暂无图片
Node.js中使用redis数据库的正确姿势.doc
9
5页
0次
2025-03-29
免费下载
Node.js
中使用
redis
数据库的正确姿势
Redis
是一个常用的
Nosql
数据库,一般用来代替
Memcached
做缓存服务,同时它也支持数
据的持久化,有着比较广泛的应用场景。在
Java
中使用
redis
我们已经比较熟悉了,那么在
node.js
koa.js
框架中使用
Redis
的正确姿势是怎样的呢?
Redis
是完全开源免费的,遵守
BSD
协议,是一个高性能的
key-value
数据库。
Redis
与其他
key - value
缓存产品有以下三个特点:
* Redis
支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载
进行使用。
* 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
,并启动客户端和服务器端
brew install redis
启动服务器端
redis-server
启动客户端
redis-cli
127.0.0.1:6379[1]> 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-redis@2.1.2
+-- co-redis@2.1.1
| `-- es6-promisify@4.1.0
| `-- es6-promise@3.2.1
`-- hiredis@0.5.0
+-- bindings@1.2.1
`-- nan@2.4.0
3. koa.js
操作
redis
数据
这块是本文重点,由于官方的文档和例子不太详细,不熟悉
node
的同学折腾起来会比较累
所以本文提供了一个比较完整的例子。具体代码里面注释已经写的比较清楚了。
var session = require('koa-generic-session');
var redisStore = require('koa-redis');
var koa = require('koa');
var redis = require('redis');
//
注意
: client
默认是异步
callback
方式调用
;
// store.client
是经过了
co-redis
包装
,
返回
Promise,
koa
里面用
yield
异步编程比较方便
var client = redis.creawww.shanxiwang.netteClient(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 = redisStore(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 '/testHM':
//
操作
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);www.sm136.com
//
获取
hashmap key
的值
this.body = yield store.client.hget("hosts", "home");
//
保存
hashmap,
使用默认的
callback
方式
// client.hset("hash key", "hashtest 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
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)
of 5
免费下载
【版权声明】本文为墨天轮用户原创内容,转载时必须标注文档的来源(墨天轮),文档链接,文档作者等基本信息,否则作者和墨天轮有权追究责任。如果您发现墨天轮中有涉嫌抄袭或者侵权的内容,欢迎发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。