Node.js, .NET, Python, Java, PHPなど殆どのプログラミング言語でRedisを操作するライブラリが存在します。Redis公式サイトの「Redis Client」の説明では、Node.jsでRedisに接続するライブラリとしてnode_redisとioredisの2つを推奨しています。
このページではnode_redisの操作方法を説明します。
前提
公式ドキュメント
参考になる公式ドキュメントを以下に示します。
動作確認済環境
- Rocky Linux 8.6
- Redis 5.0.3
- Node.js 18.12.1
Node.jsによる操作例
Node.jsのインストール
Node.jsでRedisを操作する場合は、比較的最新のNode.jsを必要とします。Redhat系OSでdnf installすると、Node.jsのバージョンが古すぎて操作不能になる事もあります。
それでは最新版のNode.jsをインストールしましょう。「Node.js 公式サイト」をブラウザ開き、「DOWNLOADS」を押下します。

対象OSかつ対象CPUのダウンロードリンクのURLを調査します。

以下のような操作でNode.jsをインストールします。wgetコマンドで指定するURLは時事刻々と変化する可能性がありますので、適宜の変更をお願いします。
wget https://nodejs.org/dist/v18.12.1/node-v18.12.1-linux-x64.tar.xz tar Jxfv node-v18.12.1-linux-x64.tar.xz rm -f node-v18.12.1-linux-x64.tar.xz mv node-v18.12.1-linux-x64 /usr/local/
操作しやすいように、環境変数PATHを変更します。
export PATH=${PATH}:/usr/local/node-v18.12.1-linux-x64/bin/
cat << EOF >> ~/.bashrc
export PATH=${PATH}:/usr/local/node-v18.12.1-linux-x64/bin/
EOF
Node.jsがインストールされた事を確認します。
[root@linux010 ~]# which node /usr/local/node-v18.12.1-linux-x64/bin/node [root@linux010 ~]# node -v v18.12.1 [root@linux010 ~]#
node_redisのnpmインストール
npmコマンドでnode_redisをインストールします。操作例は以下の通りです。
mkdir redis-essentials cd redis-essentials npm install redis
念の為、node_redisが正常にインストールされているかを確認します。「require(“redis”)」を実行してエラーがない事を確認しましょう。
[root@linux010 redis-essentials]# node
Welcome to Node.js v18.12.1.
Type ".help" for more information.
> require("redis")
{
createClient: [Function: createClient],
createCluster: [Function: createCluster],
commandOptions: [Getter],
<omitted>
>
操作説明
簡単なSETコマンドとGETゲットコマンドを実行する操作例を示します。
まずは、node_redisモジュールを読み込みます。
redis = require("redis");
Redisへの接続先を指定します。
client = redis.createClient({url: 'redis://127.0.0.1:6379'});
必須ではないですが、以下のような指定をするとエラーが標準出力されるようになります。
client.on('error', (err) => console.log('Redis Client Error', err));
Redis Serverへ接続します。
client.connect();
SETコマンドの操作例です。
client.set("my_key", "Hello World using Node.js and Redis");
GETコマンドの操作例です。
client.get("my_key");
node_redisは、非同期で処理される事に注意ください。以下の出力が示すように、特段の指定をしない場合は非同期処理の結果を返すPromiseオブジェクトが返されます。awaitをつけて実行すれば、コマンドの処理結果が返されます。
> client.get("my_key");
Promise {
<pending>,
[Symbol(async_id_symbol)]: 108,
[Symbol(trigger_async_id_symbol)]: 5
}
> await client.get("my_key");
'Hello World using Node.js and Redis'
>
Redis Serverから切断します。
client.quit();
サンプルコード
以上の処理をテキストファイルで表したサンプルコードは以下のようになります。awaitはasyncが指定された関数内でしか使用できません。以下はasyncの無名関数を使った例です。
( async () => {
const redis = require("redis");
const client = redis.createClient({url: 'redis://127.0.0.1:6379'});
client.on('error', (err) => console.log('Redis Client Error', err));
client.connect();
client.set("my_key", "Hello World using Node.js and Redis");
var value = await client.get("my_key");
console.log(value);
client.quit();
})();
実行例は以下のようになります。
[root@linux010 redis-essentials]# cat << EOF > sample.js
> ( async () => {
> const redis = require("redis");
> const client = redis.createClient({url: 'redis://127.0.0.1:6379'});
> client.on('error', (err) => console.log('Redis Client Error', err));
> client.connect();
> client.set("my_key", "Hello World using Node.js and Redis");
> var value = await client.get("my_key");
> console.log(value);
> client.quit();
> })();
> EOF
[root@linux010 redis-essentials]#
[root@linux010 redis-essentials]#
[root@linux010 redis-essentials]# node sample.js
Hello World using Node.js and Redis
[root@linux010 redis-essentials]#
補足
非サポート(古い)バージョンのNode.jsで接続を試みた場合
dnfコマンドでインストールできるNode.js version 10.24でRedis5.0.3への接続を試みます。すると、以下のようにrequire(“redis”)すらできない状況に遭遇します。
[root@linux010 redis-essentials]# node -v
v10.24.0
[root@linux010 redis-essentials]# node
> redis = require("redis");
Thrown:
/root/redis-essentials/node_modules/redis/dist/index.js:42
...options?.modules
^
SyntaxError: Unexpected token .
> [root@linux010 redis-essentials]#
[root@linux010 redis-essentials]#

