検索

ホームページ  >  に質問  >  本文

node 使用 redis 来缓存数据,需要每次请求都创建链接吗?

目的:使用redis来缓存网站的固定内容数据在node开启的时候

遇到的问题:

var redis = require('redis'),
    client = redis.createClient();
    
client.hset([hash, hashtest, value],function(err,reply){
               callback(err,reply);
               // client.quit();
});

client.hget([hash,hashtest],function(err,reply){
               callback(err,reply);
               // client.quit(); 
})   

每次在请求完成以后是否需要client.quit 关闭链接,然后在请求的时候再次createClient 链接呢??

PHP中文网PHP中文网2797日前797

全員に返信(3)返信します

  • 阿神

    阿神2017-04-24 09:13:02

    構成ファイルには、これに関連する 2 つの構成があります。
    maxclients は、サポートされる最大クライアント接続を設定するために使用され、超過した場合に拒否されます。これは、Redis クライアントが同時にサポートできる接続数を設定するために使用されます。 (もちろん、この値に加えて、Linux システムの制限設定も確認する必要があります)
    timeout タイムアウト設定は、ユーザーが接続し、Redis リクエストがトリガーされなかった後の時間を設定するために使用され、接続はアクティブになります。システムリソースを節約するためにサーバー側から閉じられます

    リーリー

    Redis 接続リクエストには、通常 2 つのシナリオがあります:

    1. ユーザーリクエストをトリガーするサーバーの数は制限されているため (たとえば、100 台以内)、タイムアウトを 0 に設定して、redis 接続リクエストが常に有効になり、一度接続した後は切断されないようにすることができます。サービスが再起動されるか、エラーが発生した後に再接続されます。

    2. 多数のユーザーが同時にリクエストを行っている場合、タイムアウトは数分以内に設定できます (ビジネスに応じて決定されます)。接続後にクライアントは積極的に接続を閉じません。接続をリクエストする前に接続が閉じられます (タイムアウトによりサーバーによって閉じられます)。
    3. 返事
      0
  • PHP中文网

    PHP中文网2017-04-24 09:13:02

    独自の接続プールがあるようです

    返事
    0
  • 阿神

    阿神2017-04-24 09:13:02

    リクエストごとに再接続することはお勧めできません。リンクを構築するのは時間の無駄です。各モデルにリンク (createClient) を確立し、そこに保持することをお勧めします。 Redis のシングルスレッド処理特性により、接続プール自体は Redis にとってほとんど役に立ちません。

    返事
    0
  • キャンセル返事