本文目录一览:
- 1、node.js中如何配置redis与连接池?
- 2、Nodejs 连接 Redis数据库实例
- 3、nodejs怎么引入redis
- 4、如何在Nodejs中使用缓存
- 5、nodejs服务器连接多少websocket
- 6、nodejs怎么创建redis数据库连接
node.js中如何配置redis与连接池?
node.js中配置连接池可以考虑使用generic-pool模块
官网:
var poolModule = bbPromise.promisifyAll(require('generic-pool'));
var redispool = poolModule.Pool({
name : 'redis',
create : function(callback) {
var client = Redis.createClient(configs.dbconfig.dbredis.port,
configs.dbconfig.dbredis.host);
callback(null, client);
},
destroy : function(client) { client.quit(); },
max : 10,
// optional. if you set this, make sure to drain() (see step 3)
min : 2,
// specifies how long a resource can stay idle in pool before being removed
idleTimeoutMillis : 30000
// if true, logs via console.log - can also be a function
//log : true
});
function getRedisClient() {
return redispool.acquireAsync().disposer(function(client, promise) {
console.log("redispool.release(client)")
redispool.release(client);
});
}
dbs.redisclient = getRedisClient ;
Nodejs 连接 Redis数据库实例
报错:Node连接Redis报错 “ClientClosedError: The client is closed”
查询资料才发现:Node Redis版本V4之后,连接语法变了。
Starting from v4 of node-redis library, you need to call client.connect() after initializing a client. See this migration guide.
新语法:
const redis = require('redis');
const client = redis.createClient({ socket: { port: 6379 } });
client.connect();
client.on('connect', () = {
console.log('connected');
});
You might also want to consider running the client connect method with await in an asynchronous function. So you don't have to worry about event listeners.
const redis = require('redis');
(async () = {
try {
const client = redis.createClient({ socket: { port: 6379 } });
await client.connect();
console.log('connected');
} catch (err) {
console.error(err)
}
})()
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
[Example]:
const redis = require("redis");
(async () = {
try {
const client = redis.createClient({
socket: { port: 6379 },
legacyMode: true,
});
await client.connect();
console.log("connected");
await client.v4.set("key4", "value2", {
NX: true,
});
client.set("key3", "value3", "NX", (err, reply) = {});
await client.get("key4", function (err, v) {
console.log("redis get hello err,v", err, v);
});
client.set("student1", "Laylaa1", function (err, reply) {
if (err) {
console.log(err);
callback(err, null);
return;
}
console.log(reply);
});
} catch (err) {
console.error(err);
}
})();
nodejs怎么引入redis
安装依赖包
nodejs连接redis其实非常简单。首先,要在package.json里面增加redis的依赖。这一步相信大家都做的炉火纯青了。在本文写作的时候,redis的npm安装包版本是2.7.1。
npm install redis --save
演示demo
下面的demo就演示一下:nodejs设置和读取一个redis的值。
var redis = require('redis');var client = redis.createClient("6379","127.0.0.1",{auth_pass: "yoursecret"});client.on("error", function (err) {
console.log("redis client连接失败",err);});client.on('ready', function (res) {
console.log('client ready');});client.on('connect', function () {
client.set("var_1", "var_1_val", redis.print);
var read_var=client.get("var_1");
console.log("读取到的值:"+read_var);
client.set("var_2", "var_2_val", function () {
var read_var_2=client.get("var_2");
console.log("第二次读取到的值:"+read_var_2);
});
client.set("var_3", "var_3_val", function () {
var read_var_3=client.get("var_3",function (err,reply) {
console.log("第三次读取到的值:",err,reply);
});
});
//client.quit();});client.on("error", function (err) {
console.log("Error " + err);});
上边的这个例子很简单,演示了最基本的使用场景。在这里,大家要注意一点:我们写的是nodejs,并不是普通的javascript,那么nodejs的最大特点就是回调函数,也就是说,返回值可能仅仅是true或者false,并不是你想要的结果哦。大家看看上面的代码,然后再看看下面的结果截图,就可以领悟这个道理。其中redis.print这个是个内置的函数,是用来打印结果输出的。
案例重现
上述过程如果使用命令行来操作的话,大概就相当于如下操作。
redis-cli -h 127.0.0.1 -p 6379auth yoursecretget var_1set var_1 var_1_val2quit
如何在Nodejs中使用缓存
Nodejs可以使用redis缓存。
Redis数据库采用极简的设计思想,最新版的源码包还不到2Mb。其在使用上也有别于一般的数据库。
node_redis
redis驱动程序多使用 node_redis 此模块可搭载官方的 hiredis C 语言库 - 同样是非阻塞的,比使用JavaScript内置的解释器性能稍好。可选择将hiredis 与 redis 一同安装。
npm install hiredis redis
如果 hiredis 安装成功, node_redis 会默认使用 hiredis, 否则会使用JavaScript的解释器。
Redis的一个Key不仅可以对应一个String类型的值,还支持hashes, lists, sets, sorted sets, bitmaps等。
比如存/取一组Hash值,Redis中有两个对应的命令
HMSET key field value [field value ...]、
为一个Key一次设置多个哈希键/值, 多用于JSON对象的写入(序列化的SESSION)。
HGETALL key
读取一个Key的所有 哈希键/值,多用于JSON对象读取
这两个命令即是在NodeJS中存取JSON对象的关键,
下面是node_reids中对应的例子:
全选复制放进笔记var redis = require("redis"),
client = redis.createClient();
//写入JavaScript(JSON)对象
client.hmset('sessionid', { username: 'kris', password: 'password' }, function(err) {
console.log(err)
})
//读取JavaScript(JSON)对象
client.hgetall('sessionid', function(err, object) {
console.log(object)
})
nodejs服务器连接多少websocket
一般200就极限了
websocket是一种网络通信协议,一般用来进行实时通信会使用到
websocket协议和http协议类似,http协议有一个缺陷,只能由客户方端发起请求,服务端根据请求url和传过去的参数返回对应结果websocket是双向通信的,只要websocket连接建立起来,可以由客户端给服务端发送数据,也可以由服务端主动给客户端发送数据
nodejs怎么创建redis数据库连接
安装node.js、mysql,此处略(自行搜索吧)…;
2、创建一个名为test的数据库,然后建一张名为user_info的表(仅供测试)…
这里假定mysql使用的用户名为root,密码为123456
相应的mysql如下:
复制代码 代码如下: