Node-redis: set使用時の `ERR構文エラー`

作成日 2017年08月24日  ·  5コメント  ·  ソース: NodeRedis/node-redis

  • バージョン
    node_redis:^ 2.8.0
    redis-server:Redisサーバーv = 4.0.1 sha = 00000000:0 malloc = libc bits = 64 build = f37081b32886670b

  • プラットフォーム
    Node.js v8.3.0
    Darwin 16.7.0 Darwinカーネルバージョン16.7.0:Thu Jun 15 17:36:27 PDT 2017; ルート:xnu-3789.70.16〜2 / RELEASE_X86_64 x86_64

  • 説明
    setERR syntax errorます:

const redis = require('redis'),
      Promise = require('bluebird'),
      conf = require(__root_dir + '/conf/conf')

// Promise.promisifyAll(redis.RedisClient.prototype)
// Promise.promisifyAll(redis.Multi.prototype)
const client = redis.createClient(
    conf.redis.port,
    conf.redis.host)

const key = 'sess-test'
const uid = 1
const ttl = 60 * 60 * 24 * 30
client.set(key, uid, ttl)

生成されます

Send localhost:6379 id 0: *4
$3
set
$9
sess-test
$1
1
$7
2592000

Net read localhost:6379 id 0
Error ReplyError: ERR syntax error
question

最も参考になるコメント

READMEを確認してください。 必要なタイムアウトのタイプに応じて、「EX」または「PX」を追加する必要があります。

全てのコメント5件

READMEを確認してください。 必要なタイムアウトのタイプに応じて、「EX」または「PX」を追加する必要があります。

ありがとう

他の誰かが検索からこの問題にたどり着き、ここにあるものによって特に助けられない場合、ここに私を助けたものがあります。 インラインTTL redis.set(key, value, ttl, callback)を使用してセットを実行しようとしましたが、同様の構文エラーが発生していました。

そのようなTTLインラインはできないようです。 代わりに、TTL引数なしで設定を行い、そのキーにTTLを設定する必要がある場合は、その要求に従ってredis.ttl()呼び出します。

@atuttleそれは正しくありません。 Node_redisは、コマンドをRedisに中継するだけです。 SETコマンドのドキュメントに従って、TTL client.set(key, value,'EX', ttl, callback)インライン設定に対してこれを実行します

さらに、 client.ttl()コマンドは、存続時間を設定しません。 TTLを設定する場合は、 client.expire()を使用する必要があります。

訂正していただきありがとうございます。

このページは役に立ちましたか?
0 / 5 - 0 評価