valkey-cli をインストールして Amazon ElastiCache for Valkey へ 接続する方法

# はじめに
Amazon ElastiCache for Valkey を利用することになり、Valkey-cli を使って接続確認をしたのでその際のインストール方法と接続確認までをメモしておこうと思います。


# Amazon Elastic For Valkeyとは？
Redis の オープンソース派生プロジェクトをベースとしたフルマネージド型キャッシュサービスです。
ライセンス改定により Redis7.4 から Redis を商用サービスとして提供するには Redis 社と契約が必要になったこともあり Redis をフォークしたプロジェクトが立ち上がりました。
AWS では、日本時間の 2024年10月9日 に公式ブログで ElastiCache と MemoryDB にて Valkey のサポートを発表しています。

https://aws.amazon.com/jp/blogs/database/amazon-elasticache-and-amazon-memorydb-announce-support-for-valkey/


# valkey-cliのインストール
valkey-cli を利用するために make install を行います。
まず、必要となる基本ツールのインストールを行います。
```bash:基本ツールインストール
$ sudo yum install gcc jemalloc-devel openssl-devel tcl tcl-devel -y 
メタデータの期限切れの最終確認: 18:52:25 時間前の 2024年11月07日 18時21分46秒 に実施しました。
依存関係が解決しました。
===================================================================================================================================================================================
 パッケージ                                    アーキテクチャー                  バージョン                                           リポジトリー                           サイズ
===================================================================================================================================================================================
インストール:
 gcc                                           x86_64                            11.4.1-2.amzn2023.0.2                                amazonlinux                             32 M
 jemalloc-devel                                x86_64                            5.2.1-7.amzn2023                                     amazonlinux                             80 k
 openssl-devel                                 x86_64                            1:3.0.8-1.amzn2023.0.16                              amazonlinux                            3.0 M
 tcl                                           x86_64                            1:8.6.10-5.amzn2023.0.2                              amazonlinux                            1.1 M
 tcl-devel                                     x86_64                            1:8.6.10-5.amzn2023.0.2                              amazonlinux                            163 k
依存関係のインストール:
 annobin-docs                                  noarch                            10.93-1.amzn2023.0.1                                 amazonlinux                             92 k
 annobin-plugin-gcc                            x86_64                            10.93-1.amzn2023.0.1                                 amazonlinux                            887 k
 cpp                                           x86_64                            11.4.1-2.amzn2023.0.2                                amazonlinux                             10 M
 gc                                            x86_64                            8.0.4-5.amzn2023.0.2                                 amazonlinux                            105 k
 glibc-devel                                   x86_64                            2.34-52.amzn2023.0.11                                amazonlinux                             27 k
 glibc-headers-x86                             noarch                            2.34-52.amzn2023.0.11                                amazonlinux                            427 k
 guile22                                       x86_64                            2.2.7-2.amzn2023.0.3                                 amazonlinux                            6.4 M
 kernel-headers                                x86_64                            6.1.112-124.190.amzn2023                             amazonlinux                            1.4 M
 libmpc                                        x86_64                            1.2.1-2.amzn2023.0.2                                 amazonlinux                             62 k
 libtool-ltdl                                  x86_64                            2.4.7-1.amzn2023.0.3                                 amazonlinux                             38 k
 libxcrypt-devel                               x86_64                            4.4.33-7.amzn2023                                    amazonlinux                             32 k
 make                                          x86_64                            1:4.3-5.amzn2023.0.2                                 amazonlinux                            534 k
 zlib-devel                                    x86_64                            1.2.11-33.amzn2023.0.5                               amazonlinux                             45 k

トランザクションの概要
===================================================================================================================================================================================
インストール  18 パッケージ

ダウンロードサイズの合計: 57 M
インストール後のサイズ: 178 M
パッケージのダウンロード:
(1/18): annobin-docs-10.93-1.amzn2023.0.1.noarch.rpm                                                                                               1.0 MB/s |  92 kB     00:00    
(2/18): gc-8.0.4-5.amzn2023.0.2.x86_64.rpm                                                                                                         3.5 MB/s | 105 kB     00:00    
(3/18): annobin-plugin-gcc-10.93-1.amzn2023.0.1.x86_64.rpm                                                                                         6.2 MB/s | 887 kB     00:00    
(4/18): glibc-devel-2.34-52.amzn2023.0.11.x86_64.rpm                                                                                               821 kB/s |  27 kB     00:00    
(5/18): glibc-headers-x86-2.34-52.amzn2023.0.11.noarch.rpm                                                                                         7.8 MB/s | 427 kB     00:00    
(6/18): guile22-2.2.7-2.amzn2023.0.3.x86_64.rpm                                                                                                     12 MB/s | 6.4 MB     00:00    
(7/18): cpp-11.4.1-2.amzn2023.0.2.x86_64.rpm                                                                                                        12 MB/s |  10 MB     00:00    
(8/18): jemalloc-devel-5.2.1-7.amzn2023.x86_64.rpm                                                                                                 745 kB/s |  80 kB     00:00    
(9/18): libmpc-1.2.1-2.amzn2023.0.2.x86_64.rpm                                                                                                     1.1 MB/s |  62 kB     00:00    
(10/18): kernel-headers-6.1.112-124.190.amzn2023.x86_64.rpm                                                                                         15 MB/s | 1.4 MB     00:00    
(11/18): libtool-ltdl-2.4.7-1.amzn2023.0.3.x86_64.rpm                                                                                              616 kB/s |  38 kB     00:00    
(12/18): libxcrypt-devel-4.4.33-7.amzn2023.x86_64.rpm                                                                                              1.2 MB/s |  32 kB     00:00    
(13/18): make-4.3-5.amzn2023.0.2.x86_64.rpm                                                                                                         14 MB/s | 534 kB     00:00    
(14/18): gcc-11.4.1-2.amzn2023.0.2.x86_64.rpm                                                                                                       29 MB/s |  32 MB     00:01    
(15/18): tcl-8.6.10-5.amzn2023.0.2.x86_64.rpm                                                                                                      4.5 MB/s | 1.1 MB     00:00    
(16/18): openssl-devel-3.0.8-1.amzn2023.0.16.x86_64.rpm                                                                                            9.7 MB/s | 3.0 MB     00:00    
(17/18): zlib-devel-1.2.11-33.amzn2023.0.5.x86_64.rpm                                                                                              853 kB/s |  45 kB     00:00    
(18/18): tcl-devel-8.6.10-5.amzn2023.0.2.x86_64.rpm                                                                                                2.6 MB/s | 163 kB     00:00    
-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                                                41 MB/s |  57 MB     00:01     
トランザクションの確認を実行中
トランザクションの確認に成功しました。
トランザクションのテストを実行中
トランザクションのテストに成功しました。
トランザクションを実行中
  準備             :                                                                                                                                                           1/1 
  インストール中   : libmpc-1.2.1-2.amzn2023.0.2.x86_64                                                                                                                       1/18 
  インストール中   : cpp-11.4.1-2.amzn2023.0.2.x86_64                                                                                                                         2/18 
  インストール中   : zlib-devel-1.2.11-33.amzn2023.0.5.x86_64                                                                                                                 3/18 
  インストール中   : tcl-1:8.6.10-5.amzn2023.0.2.x86_64                                                                                                                       4/18 
  インストール中   : libtool-ltdl-2.4.7-1.amzn2023.0.3.x86_64                                                                                                                 5/18 
  インストール中   : kernel-headers-6.1.112-124.190.amzn2023.x86_64                                                                                                           6/18 
  インストール中   : glibc-headers-x86-2.34-52.amzn2023.0.11.noarch                                                                                                           7/18 
  インストール中   : libxcrypt-devel-4.4.33-7.amzn2023.x86_64                                                                                                                 8/18 
  インストール中   : glibc-devel-2.34-52.amzn2023.0.11.x86_64                                                                                                                 9/18 
  インストール中   : gc-8.0.4-5.amzn2023.0.2.x86_64                                                                                                                          10/18 
  インストール中   : guile22-2.2.7-2.amzn2023.0.3.x86_64                                                                                                                     11/18 
  インストール中   : make-1:4.3-5.amzn2023.0.2.x86_64                                                                                                                        12/18 
  インストール中   : gcc-11.4.1-2.amzn2023.0.2.x86_64                                                                                                                        13/18 
  scriptletの実行中: gcc-11.4.1-2.amzn2023.0.2.x86_64                                                                                                                        13/18 
  インストール中   : annobin-docs-10.93-1.amzn2023.0.1.noarch                                                                                                                14/18 
  インストール中   : annobin-plugin-gcc-10.93-1.amzn2023.0.1.x86_64                                                                                                          15/18 
  scriptletの実行中: annobin-plugin-gcc-10.93-1.amzn2023.0.1.x86_64                                                                                                          15/18 
  インストール中   : tcl-devel-1:8.6.10-5.amzn2023.0.2.x86_64                                                                                                                16/18 
  インストール中   : openssl-devel-1:3.0.8-1.amzn2023.0.16.x86_64                                                                                                            17/18 
  インストール中   : jemalloc-devel-5.2.1-7.amzn2023.x86_64                                                                                                                  18/18 
  scriptletの実行中: jemalloc-devel-5.2.1-7.amzn2023.x86_64                                                                                                                  18/18 
  検証             : annobin-docs-10.93-1.amzn2023.0.1.noarch                                                                                                                 1/18 
  検証             : annobin-plugin-gcc-10.93-1.amzn2023.0.1.x86_64                                                                                                           2/18 
  検証             : cpp-11.4.1-2.amzn2023.0.2.x86_64                                                                                                                         3/18 
  検証             : gc-8.0.4-5.amzn2023.0.2.x86_64                                                                                                                           4/18 
  検証             : gcc-11.4.1-2.amzn2023.0.2.x86_64                                                                                                                         5/18 
  検証             : glibc-devel-2.34-52.amzn2023.0.11.x86_64                                                                                                                 6/18 
  検証             : glibc-headers-x86-2.34-52.amzn2023.0.11.noarch                                                                                                           7/18 
  検証             : guile22-2.2.7-2.amzn2023.0.3.x86_64                                                                                                                      8/18 
  検証             : jemalloc-devel-5.2.1-7.amzn2023.x86_64                                                                                                                   9/18 
  検証             : kernel-headers-6.1.112-124.190.amzn2023.x86_64                                                                                                          10/18 
  検証             : libmpc-1.2.1-2.amzn2023.0.2.x86_64                                                                                                                      11/18 
  検証             : libtool-ltdl-2.4.7-1.amzn2023.0.3.x86_64                                                                                                                12/18 
  検証             : libxcrypt-devel-4.4.33-7.amzn2023.x86_64                                                                                                                13/18 
  検証             : make-1:4.3-5.amzn2023.0.2.x86_64                                                                                                                        14/18 
  検証             : openssl-devel-1:3.0.8-1.amzn2023.0.16.x86_64                                                                                                            15/18 
  検証             : tcl-1:8.6.10-5.amzn2023.0.2.x86_64                                                                                                                      16/18 
  検証             : tcl-devel-1:8.6.10-5.amzn2023.0.2.x86_64                                                                                                                17/18 
  検証             : zlib-devel-1.2.11-33.amzn2023.0.5.x86_64                                                                                                                18/18 

インストール済み:
  annobin-docs-10.93-1.amzn2023.0.1.noarch annobin-plugin-gcc-10.93-1.amzn2023.0.1.x86_64 cpp-11.4.1-2.amzn2023.0.2.x86_64               gc-8.0.4-5.amzn2023.0.2.x86_64          
  gcc-11.4.1-2.amzn2023.0.2.x86_64         glibc-devel-2.34-52.amzn2023.0.11.x86_64       glibc-headers-x86-2.34-52.amzn2023.0.11.noarch guile22-2.2.7-2.amzn2023.0.3.x86_64     
  jemalloc-devel-5.2.1-7.amzn2023.x86_64   kernel-headers-6.1.112-124.190.amzn2023.x86_64 libmpc-1.2.1-2.amzn2023.0.2.x86_64             libtool-ltdl-2.4.7-1.amzn2023.0.3.x86_64
  libxcrypt-devel-4.4.33-7.amzn2023.x86_64 make-1:4.3-5.amzn2023.0.2.x86_64               openssl-devel-1:3.0.8-1.amzn2023.0.16.x86_64   tcl-1:8.6.10-5.amzn2023.0.2.x86_64      
  tcl-devel-1:8.6.10-5.amzn2023.0.2.x86_64 zlib-devel-1.2.11-33.amzn2023.0.5.x86_64      

完了しました!
```

次に valkey-cli をダウンロードします。
```bash:
$ wget https://github.com/valkey-io/valkey/archive/refs/tags/7.2.7.tar.gz
--2024-11-08 13:14:30--  https://github.com/valkey-io/valkey/archive/refs/tags/7.2.7.tar.gz
github.com (github.com) をDNSに問いあわせています... 20.27.177.113
github.com (github.com)|20.27.177.113|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 302 Found
場所: https://codeload.github.com/valkey-io/valkey/tar.gz/refs/tags/7.2.7 [続く]
--2024-11-08 13:14:30--  https://codeload.github.com/valkey-io/valkey/tar.gz/refs/tags/7.2.7
codeload.github.com (codeload.github.com) をDNSに問いあわせています... 20.27.177.114
codeload.github.com (codeload.github.com)|20.27.177.114|:443 に接続しています... 接続しました。
HTTP による接続要求を送信しました、応答を待っています... 200 OK
長さ: 特定できません [application/x-gzip]
`7.2.7.tar.gz' に保存中

7.2.7.tar.gz                                     [   <=>                                                                                        ]   3.27M  7.55MB/s 時間 0.4s     

2024-11-08 13:14:31 (7.55 MB/s) - `7.2.7.tar.gz' へ保存終了 [3430910]
```

ダウンロードしたら展開しインストールを行います。
```bash:ファイル展開
$ tar xvzf 7.2.7.tar.gz
valkey-7.2.7/
valkey-7.2.7/.codespell/
valkey-7.2.7/.codespell/.codespellrc
valkey-7.2.7/.codespell/requirements.txt
valkey-7.2.7/.codespell/wordlist.txt
valkey-7.2.7/.gitattributes
valkey-7.2.7/.github/
valkey-7.2.7/.github/ISSUE_TEMPLATE/
valkey-7.2.7/.github/ISSUE_TEMPLATE/bug_report.md
valkey-7.2.7/.github/ISSUE_TEMPLATE/crash_report.md
valkey-7.2.7/.github/ISSUE_TEMPLATE/feature_request.md
valkey-7.2.7/.github/ISSUE_TEMPLATE/other_stuff
~~~ 省略 ~~
```

```bash:ディレクトリ移動
$ cd valkey-7.2.7/
```

それでは、make インストールを行います。
```bash:インストール
$ sudo make BUILD_TLS=yes install
cd src && make install
make[1]: ディレクトリ '/home/ec2-user/valkey-7.2.7/src' に入ります
    CC Makefile.dep

Hint: It's a good idea to run 'make test' ;)

    INSTALL valkey-server
    INSTALL valkey-benchmark
    INSTALL valkey-cli
    INSTALL SYMLINK redis-server -> valkey-server  
    INSTALL SYMLINK redis-cli -> valkey-cli  
    INSTALL SYMLINK redis-benchmark -> valkey-benchmark  
    INSTALL SYMLINK redis-check-rdb -> valkey-check-rdb  
    INSTALL SYMLINK redis-check-aof -> valkey-check-aof  
    INSTALL SYMLINK redis-sentinel -> valkey-sentinel  
make[1]: ディレクトリ '/home/ec2-user/valkey-7.2.7/src' から出ます
```

# Valkeyへの接続確認

インストールできたので valkey への接続を行います。
```bash:接続
$ valkey-cli -h <valkeyエンドポイント> -p 6379 -c --tls
```

HSETコマンドでデータをセットします。
```bash:データ格納
> HSET car:1 make ferrari model sf90spider year 2024 engine "4.0 L V8" horsepower 769hp transmission "8-speed auto" price 580000
(integer) 7
```

HMGETコマンドで、ちゃんとデータが格納されていることを確認します。
```bash:データ取得
> HMGET car:1 make model price
1) "ferrari"
2) "sf90spider"
3) "580000"
```

今度は格納されたデータを削除します。
```bash:データ削除
> HDEL car:1 make model price
(integer) 3
```

改めて、HMGETを実行し、今度はデータが削除されていることを確認します。
```bash:データ取得
> HMGET car:1 make model price
1) (nil)
2) (nil)
3) (nil)
```

**nil** となり、データが削除されたのを確認できました。
`quit`コマンドで Valkey への接続を終了します。
```bash:quit
> quit
```
以上で確認完了です。


# おわりに
Redis のライセンス改定に伴い、これから Valkey への切り替えが増えてくると思うので、コマンドインストールといったシンプルなことでもしっかりメモとして残していけたらなと思います。


### 参考

https://aws.amazon.com/jp/blogs/news/get-started-with-amazon-elasticache-for-valkey/

https://docs.aws.amazon.com/ja_jp/AmazonElastiCache/latest/dg/SupportedCommands.html