首页 > 编程知识 正文

websocketredisnodejs的简单介绍

时间:2023-12-28 11:57:04 阅读:328257 作者:YMIY

本文目录一览:

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如下:

复制代码 代码如下:

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。