😊
upstash の Redis に ioredis で接続する
無料でも使える Redis (を含む)サービス upstash を使ってみている。
基本は upstash の SDK で接続するようだが、ioredis を使う方法も示されていたので試したのだけど、うまく行かなくて試行錯誤したので、記録しておく。
https://upstash.com/docs/redis/howto/connectwithtls#node-js には、
const Redis = require("ioredis");
let client = new Redis("rediss://:YOUR_PASSWORD@YOUR_ENDPOINT:YOUR_PORT");
await client.set("foo", "bar");
let x = await client.get("foo");
console.log(x);
でイケると紹介されていたが、:YOUR_PASSWORD@YOUR_ENDPOINT
の先頭の :
を見落としていて、ずっと繋がらないというエラーで悩んでた。
一応、そのときの副産物として、以下のコードでも接続できた。
const Redis = require("ioredis");
const client = new Redis(YOUR_PORT, 'rediss://YOUR_ENDPOINT', {
password: 'YOUR_PASSWORD'
});
AWS の Redis なんかだとホストの rediss://
は要らなかったのでそこもハマりポイントだった。
以下は接続できなかったパターン。
const client = new Redis({
host: 'rediss://YOUR_ENDPOINT',
port: YOUR_PORT,
password: 'YOUR_PASSWORD'
});
const client = new Redis({
host: 'YOUR_ENDPOINT',
port: YOUR_PORT,
password: 'YOUR_PASSWORD'
});
new Redis(port, host, { password })
が OK で、
new Redis({ port, host, password })
が NG なのがよく分からん。
Discussion