Microsoft製 .NETベースの Redis互換キャッシュサーバーの Garnetを Ubuntu Serverにインストールします。
「Garnetインストール(Redis互換) 1」では能書きをたれただけですが、お待たせしました、ここでは環境を作ります。
1.環境
Garnetは .NETで動くクロスプラットフォームのアプリですが、ここではいつものように Ubuntuをサーバーにしてみます。
クライアントの役割は 2つで、C#で書かれた Garnetをビルドして実行できるようにするのと、redis-cliコマンドを使って Garnetにアクセスすることです。
●サーバー
OS | Ubuntu Server 22.04.4 |
.NET | 8.0.3-1 SDK |
Garnet | 1.0.0 |
Ubuntu Serverのインストールについては
「Ubuntu Linux Serverをインストール」と「Ubuntu Serverの初期設定」
で扱っています。
.NET8のインストールについては「.NET8 SDKインストール」で扱っています。
サーバーにはランタイムだけが必要で SDKまではいらないと思うのですが、とりあえず SDKを入れちゃいます。
OSも .NET8も 2024年3月22日時点の最新版(バージョンは上に書いてある通り)を使います。
●クライアント
OS | Lubuntu 22.04.4 |
.NET | 8.0.3-1 SDK |
redis-tools | 6.0.16 |
クライアントの Lubuntuには Garnetにアクセスするクライアントの redis-cliコマンドが入っている [redis-tools]パッケージを予めインストールしておきます。
subro@Lubuntu2204:~$ sudo apt install -y redis-tools
〜〜〜 省略 〜〜〜
特に問題なくインストールできました。
Ubuntu Serverでやったとしてもきっと同じでしょう。
この環境前提で以下を進めていきます。
2.ソースからビルド
公式ドキュメントに以下がありますので、この通りにやっていきます。
Getting Started
これを読むとパッケージで配布してるんではなくて、C#のソースコードからビルドすることになっています。
ビルドはクライアントの Lubuntu 22.04.4の作業になります。
GitHubからソースを取ってこないといけないので、先に gitコマンドをインストールします。
subro@Lubuntu2204:~$ sudo apt install -y git
〜〜〜 省略 〜〜〜
問題なくインストールできました。
後の作業でカレントディレクトリの下に自動的に Garnetプロジェクトの [garnet]ディレクトリができますんで、私はホームディレクトリの下に [work]ディレクトリを作ってそこをカレントディレクトリとしています。
では GitHubからプロジェクトを持ってきましょう。
subro@Lubuntu2204:~/work$ git clone git@github.com:microsoft/garnet.git
Cloning into 'garnet'...
The authenticity of host 'github.com (20.27.177.113)' can't be established.
〜〜〜 省略 〜〜〜
認証関係で弾かれて取れませんね…
そういやリポジトリを書くところの [git@github.com:microsoft/garnet.git] って書き方、何を意味してるのか、私は GitHubに詳しくなく分かりませんでしたので、いつもの方法でやり直しました。
subro@Lubuntu2204:~/work$ git clone https://github.com/microsoft/garnet.git
Cloning into 'garnet'...
remote: Enumerating objects: 10324, done.
remote: Counting objects: 100% (1898/1898), done.
remote: Compressing objects: 100% (906/906), done.
remote: Total 10324 (delta 1048), reused 1295 (delta 962), pack-reused 8426
Receiving objects: 100% (10324/10324), 14.56 MiB | 941.00 KiB/s, done.
Resolving deltas: 100% (7370/7370), done.
ちゃんとプロジェクトディレクトリ [garnet] ができていました。
subro@Lubuntu2204:~/work$ ls -ld garnet
drwxrwxr-x 13 subro subro 4096 3月 22 20:46 garnet
ドキュメントの「Build the Project」という段落に進みます。
プロジェクトディクトリ [garnet] に移動します。
subro@Lubuntu2204:~/work$ cd garnet
subro@Lubuntu2204:~/work/garnet$ ls -l
total 124
-rw-rw-r-- 1 subro subro 444 3月 22 20:46 CODE_OF_CONDUCT.md
-rw-rw-r-- 1 subro subro 175 3月 22 20:46 Directory.Build.props
-rw-rw-r-- 1 subro subro 471 3月 22 20:46 Dockerfile
-rw-rw-r-- 1 subro subro 537 3月 22 20:46 Dockerfile.nanoserver-x64
-rw-rw-r-- 1 subro subro 484 3月 22 20:46 Dockerfile.ubuntu-x64
-rw-rw-r-- 1 subro subro 9757 3月 22 20:46 Garnet.nuspec
-rw-rw-r-- 1 subro subro 20898 3月 22 20:46 Garnet.sln
-rw-rw-r-- 1 subro subro 596 3月 22 20:46 Garnet.snk
-rw-rw-r-- 1 subro subro 1141 3月 22 20:46 LICENSE
-rw-rw-r-- 1 subro subro 2398 3月 22 20:46 NOTICE.md
-rw-rw-r-- 1 subro subro 8549 3月 22 20:46 README.md
-rw-rw-r-- 1 subro subro 2757 3月 22 20:46 SECURITY.md
-rw-rw-r-- 1 subro subro 485 3月 22 20:46 SUPPORT.md
drwxrwxr-x 3 subro subro 4096 3月 22 20:46 benchmark
-rw-rw-r-- 1 subro subro 545 3月 22 20:46 docker-compose.yml
drwxrwxr-x 8 subro subro 4096 3月 22 20:46 libs
drwxrwxr-x 3 subro subro 4096 3月 22 20:46 main
drwxrwxr-x 3 subro subro 4096 3月 22 20:46 metrics
drwxrwxr-x 7 subro subro 4096 3月 22 20:46 playground
drwxrwxr-x 4 subro subro 4096 3月 22 20:46 samples
drwxrwxr-x 6 subro subro 4096 3月 22 20:46 test
drwxrwxr-x 6 subro subro 4096 3月 22 20:46 website
Garnetプロジェクトのビルドに必要な何か(?)を復元します。
subro@Lubuntu2204:~/work/garnet$ dotnet restore
復元対象のプロジェクトを決定しています...
/home/subro/work/garnet/libs/host/Garnet.host.csproj を復元しました (17.9 sec)。
/home/subro/work/garnet/playground/Embedded.perftest/Embedded.perftest.csproj を復元しました (17.9 sec)。
/home/subro/work/garnet/main/GarnetServer/GarnetServer.csproj を復元しました (17.9 sec)。
/home/subro/work/garnet/samples/GarnetClientSample/GarnetClientSample.csproj を復元しました (369 ms)。
/home/subro/work/garnet/samples/MetricsMonitor/MetricsMonitor.csproj を復元しました (371 ms)。
/home/subro/work/garnet/playground/GarnetClientStress/GarnetClientStress.csproj を復元しました (10 ms)。
/home/subro/work/garnet/test/Garnet.test.cluster/Garnet.test.cluster.csproj を復元しました (684 ms)。
/home/subro/work/garnet/playground/Bitmap/Bitmap.csproj を復元しました (2 ms)。
/home/subro/work/garnet/metrics/HdrHistogram/HdrHistogram.csproj を復元しました (3 ms)。
/home/subro/work/garnet/libs/storage/Tsavorite/cs/src/devices/AzureStorageDevice/Tsavorite.devices.AzureStorageDevice.csproj を復元しました (8 ms)。
/home/subro/work/garnet/libs/storage/Tsavorite/cs/src/core/Tsavorite.core.csproj を復元しました (7 ms)。
/home/subro/work/garnet/libs/server/Garnet.server.csproj を復元しました (12 ms)。
/home/subro/work/garnet/libs/common/Garnet.common.csproj を復元しました (5 ms)。
/home/subro/work/garnet/libs/cluster/Garnet.cluster.csproj を復元しました (14 ms)。
/home/subro/work/garnet/libs/client/Garnet.client.csproj を復元しました (6 ms)。
/home/subro/work/garnet/benchmark/Resp.benchmark/Resp.benchmark.csproj を復元しました (8 ms)。
/home/subro/work/garnet/playground/ClusterStress/ClusterStress.csproj を復元しました (3.76 sec)。
/home/subro/work/garnet/playground/TstRunner/TstRunner.csproj を復元しました (4.96 sec)。
/home/subro/work/garnet/test/Garnet.test/Garnet.test.csproj を復元しました (23.28 sec)。
良さげです。
ビルドします。
subro@Lubuntu2204:~/work/garnet$ dotnet build -c Release
MSBuild のバージョン 17.9.6+a4ecab324 (.NET)
復元対象のプロジェクトを決定しています...
復元対象のすべてのプロジェクトは最新です。
Garnet.common -> /home/subro/work/garnet/libs/common/bin/AnyCPU/Release/net8.0/Garnet.common.dll
Garnet.common -> /home/subro/work/garnet/libs/common/bin/AnyCPU/Release/net7.0/Garnet.common.dll
Garnet.common -> /home/subro/work/garnet/libs/common/bin/AnyCPU/Release/net6.0/Garnet.common.dll
Tsavorite.core -> /home/subro/work/garnet/libs/storage/Tsavorite/cs/src/core/bin/AnyCPU/Release/net8.0/Tsavorite.core.dll
HdrHistogram -> /home/subro/work/garnet/metrics/HdrHistogram/bin/AnyCPU/Release/net6.0/HdrHistogram.dll
Tsavorite.core -> /home/subro/work/garnet/libs/storage/Tsavorite/cs/src/core/bin/AnyCPU/Release/net7.0/Tsavorite.core.dll
HdrHistogram -> /home/subro/work/garnet/metrics/HdrHistogram/bin/AnyCPU/Release/net8.0/HdrHistogram.dll
HdrHistogram -> /home/subro/work/garnet/metrics/HdrHistogram/bin/AnyCPU/Release/net7.0/HdrHistogram.dll
Garnet.client -> /home/subro/work/garnet/libs/client/bin/AnyCPU/Release/net7.0/Garnet.client.dll
/home/subro/work/garnet/playground/ClusterStress/OnlineReqGen.cs(6,1): error IDE0005: Using ディレクティブは必要ありません。 (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0005) [/home/subro/work/garnet/playground/ClusterStress/ClusterStress.csproj::TargetFramework=net7.0]
Tsavorite.core -> /home/subro/work/garnet/libs/storage/Tsavorite/cs/src/core/bin/AnyCPU/Release/net6.0/Tsavorite.core.dll
Resp.benchmark -> /home/subro/work/garnet/benchmark/Resp.benchmark/bin/Release/net7.0/Resp.benchmark.dll
Garnet.server -> /home/subro/work/garnet/libs/server/bin/AnyCPU/Release/net7.0/Garnet.server.dll
Bitmap -> /home/subro/work/garnet/playground/Bitmap/bin/Release/net7.0/Bitmap.dll
MetricsMonitor -> /home/subro/work/garnet/samples/MetricsMonitor/bin/Release/net7.0/MetricsMonitor.dll
Garnet.client -> /home/subro/work/garnet/libs/client/bin/AnyCPU/Release/net6.0/Garnet.client.dll
Resp.benchmark -> /home/subro/work/garnet/benchmark/Resp.benchmark/bin/Release/net6.0/Resp.benchmark.dll
/home/subro/work/garnet/playground/ClusterStress/OnlineReqGen.cs(6,1): error IDE0005: Using ディレクティブは必要ありません。 (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0005) [/home/subro/work/garnet/playground/ClusterStress/ClusterStress.csproj::TargetFramework=net6.0]
Garnet.server -> /home/subro/work/garnet/libs/server/bin/AnyCPU/Release/net6.0/Garnet.server.dll
Garnet.client -> /home/subro/work/garnet/libs/client/bin/AnyCPU/Release/net8.0/Garnet.client.dll
GarnetClientStress -> /home/subro/work/garnet/playground/GarnetClientStress/bin/Release/net8.0/GarnetClientStress.dll
Resp.benchmark -> /home/subro/work/garnet/benchmark/Resp.benchmark/bin/Release/net8.0/Resp.benchmark.dll
/home/subro/work/garnet/playground/ClusterStress/OnlineReqGen.cs(6,1): error IDE0005: Using ディレクティブは必要ありません。 (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0005) [/home/subro/work/garnet/playground/ClusterStress/ClusterStress.csproj::TargetFramework=net8.0]
Garnet.server -> /home/subro/work/garnet/libs/server/bin/AnyCPU/Release/net8.0/Garnet.server.dll
GarnetClientSample -> /home/subro/work/garnet/samples/GarnetClientSample/bin/Release/net8.0/GarnetClientSample.dll
Garnet.cluster -> /home/subro/work/garnet/libs/cluster/bin/AnyCPU/Release/net8.0/Garnet.cluster.dll
Tsavorite.devices.AzureStorageDevice -> /home/subro/work/garnet/libs/storage/Tsavorite/cs/src/devices/AzureStorageDevice/bin/AnyCPU/Release/net8.0/Tsavorite.devices.AzureStorageDevice.dll
Garnet.host -> /home/subro/work/garnet/libs/host/bin/AnyCPU/Release/net8.0/Garnet.host.dll
Garnet.test -> /home/subro/work/garnet/test/Garnet.test/bin/AnyCPU/Release/net8.0/Garnet.test.dll
GarnetServer -> /home/subro/work/garnet/main/GarnetServer/bin/AnyCPU/Release/net8.0/GarnetServer.dll
Embedded.perftest -> /home/subro/work/garnet/playground/Embedded.perftest/bin/Release/net8.0/Embedded.perftest.dll
Garnet.cluster -> /home/subro/work/garnet/libs/cluster/bin/AnyCPU/Release/net7.0/Garnet.cluster.dll
Tsavorite.devices.AzureStorageDevice -> /home/subro/work/garnet/libs/storage/Tsavorite/cs/src/devices/AzureStorageDevice/bin/AnyCPU/Release/net7.0/Tsavorite.devices.AzureStorageDevice.dll
Garnet.host -> /home/subro/work/garnet/libs/host/bin/AnyCPU/Release/net7.0/Garnet.host.dll
Garnet.test -> /home/subro/work/garnet/test/Garnet.test/bin/AnyCPU/Release/net7.0/Garnet.test.dll
GarnetServer -> /home/subro/work/garnet/main/GarnetServer/bin/AnyCPU/Release/net7.0/GarnetServer.dll
Embedded.perftest -> /home/subro/work/garnet/playground/Embedded.perftest/bin/Release/net7.0/Embedded.perftest.dll
Garnet.cluster -> /home/subro/work/garnet/libs/cluster/bin/AnyCPU/Release/net6.0/Garnet.cluster.dll
Tsavorite.devices.AzureStorageDevice -> /home/subro/work/garnet/libs/storage/Tsavorite/cs/src/devices/AzureStorageDevice/bin/AnyCPU/Release/net6.0/Tsavorite.devices.AzureStorageDevice.dll
Garnet.host -> /home/subro/work/garnet/libs/host/bin/AnyCPU/Release/net6.0/Garnet.host.dll
Garnet.test -> /home/subro/work/garnet/test/Garnet.test/bin/AnyCPU/Release/net6.0/Garnet.test.dll
GarnetServer -> /home/subro/work/garnet/main/GarnetServer/bin/AnyCPU/Release/net6.0/GarnetServer.dll
Embedded.perftest -> /home/subro/work/garnet/playground/Embedded.perftest/bin/Release/net6.0/Embedded.perftest.dll
Garnet.test.cluster -> /home/subro/work/garnet/test/Garnet.test.cluster/bin/AnyCPU/Release/net7.0/Garnet.test.cluster.dll
TstRunner -> /home/subro/work/garnet/playground/TstRunner/bin/Release/net7.0/TstRunner.dll
Garnet.test.cluster -> /home/subro/work/garnet/test/Garnet.test.cluster/bin/AnyCPU/Release/net8.0/Garnet.test.cluster.dll
Garnet.test.cluster -> /home/subro/work/garnet/test/Garnet.test.cluster/bin/AnyCPU/Release/net6.0/Garnet.test.cluster.dll
ビルドに失敗しました。
/home/subro/work/garnet/playground/ClusterStress/OnlineReqGen.cs(6,1): error IDE0005: Using ディレクティブは必要ありません。 (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0005) [/home/subro/work/garnet/playground/ClusterStress/ClusterStress.csproj::TargetFramework=net7.0]
/home/subro/work/garnet/playground/ClusterStress/OnlineReqGen.cs(6,1): error IDE0005: Using ディレクティブは必要ありません。 (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0005) [/home/subro/work/garnet/playground/ClusterStress/ClusterStress.csproj::TargetFramework=net6.0]
/home/subro/work/garnet/playground/ClusterStress/OnlineReqGen.cs(6,1): error IDE0005: Using ディレクティブは必要ありません。 (https://learn.microsoft.com/dotnet/fundamentals/code-analysis/style-rules/ide0005) [/home/subro/work/garnet/playground/ClusterStress/ClusterStress.csproj::TargetFramework=net8.0]
0 個の警告
3 エラー
経過時間 00:01:15.03
ウフッ、何これ。
同プロジェクトの issueに上がってましたね。ヤレヤレ
Docker build failed on release v1.0.0 on Linux VM #79
一度 [~/work/garnet] ディレクトリを削除して、git clone するところからやり直します。
subro@Lubuntu2204:~/work/garnet$ cd ..
subro@Lubuntu2204:~/work$ rm -r garnet
rm: remove write-protected regular file 'garnet/.git/objects/pack/pack-e3a2b5f781a9642a982deb6ba5d8164d68c4e249.idx'? y
rm: remove write-protected regular file 'garnet/.git/objects/pack/pack-e3a2b5f781a9642a982deb6ba5d8164d68c4e249.pack'? y
subro@Lubuntu2204:~/work$ git clone https://github.com/microsoft/garnet.git
で、ここからが違って、[garnet]ディレクトリではなく、その下の下の [garnet/main/GarnetServer] ディレクトリに移動します。
subro@Lubuntu2204:~/work$ cd garnet/main/GarnetServer
subro@Lubuntu2204:~/work/garnet/main/GarnetServer$
再び dotnet restore をします。
subro@Lubuntu2204:~/work/garnet/main/GarnetServer$ dotnet restore
〜〜〜 省略 〜〜〜
これは問題なく完了しました。
再度ビルドに挑戦。
subro@Lubuntu2204:~/work/garnet/main/GarnetServer$ dotnet build -c Release
MSBuild のバージョン 17.9.6+a4ecab324 (.NET)
復元対象のプロジェクトを決定しています...
復元対象のすべてのプロジェクトは最新です。
Garnet.common -> /home/subro/work/garnet/libs/common/bin/AnyCPU/Release/net8.0/Garnet.common.dll
Tsavorite.core -> /home/subro/work/garnet/libs/storage/Tsavorite/cs/src/core/bin/AnyCPU/Release/net8.0/Tsavorite.core.dll
HdrHistogram -> /home/subro/work/garnet/metrics/HdrHistogram/bin/AnyCPU/Release/net6.0/HdrHistogram.dll
Tsavorite.core -> /home/subro/work/garnet/libs/storage/Tsavorite/cs/src/core/bin/AnyCPU/Release/net6.0/Tsavorite.core.dll
Tsavorite.devices.AzureStorageDevice -> /home/subro/work/garnet/libs/storage/Tsavorite/cs/src/devices/AzureStorageDevice/bin/AnyCPU/Release/net8.0/Tsavorite.devices.AzureStorageDevice.dll
HdrHistogram -> /home/subro/work/garnet/metrics/HdrHistogram/bin/AnyCPU/Release/net7.0/HdrHistogram.dll
Garnet.common -> /home/subro/work/garnet/libs/common/bin/AnyCPU/Release/net6.0/Garnet.common.dll
HdrHistogram -> /home/subro/work/garnet/metrics/HdrHistogram/bin/AnyCPU/Release/net8.0/HdrHistogram.dll
Garnet.common -> /home/subro/work/garnet/libs/common/bin/AnyCPU/Release/net7.0/Garnet.common.dll
Tsavorite.devices.AzureStorageDevice -> /home/subro/work/garnet/libs/storage/Tsavorite/cs/src/devices/AzureStorageDevice/bin/AnyCPU/Release/net6.0/Tsavorite.devices.AzureStorageDevice.dll
Tsavorite.core -> /home/subro/work/garnet/libs/storage/Tsavorite/cs/src/core/bin/AnyCPU/Release/net7.0/Tsavorite.core.dll
Garnet.client -> /home/subro/work/garnet/libs/client/bin/AnyCPU/Release/net6.0/Garnet.client.dll
Garnet.client -> /home/subro/work/garnet/libs/client/bin/AnyCPU/Release/net8.0/Garnet.client.dll
Garnet.server -> /home/subro/work/garnet/libs/server/bin/AnyCPU/Release/net6.0/Garnet.server.dll
Garnet.client -> /home/subro/work/garnet/libs/client/bin/AnyCPU/Release/net7.0/Garnet.client.dll
Garnet.cluster -> /home/subro/work/garnet/libs/cluster/bin/AnyCPU/Release/net6.0/Garnet.cluster.dll
Tsavorite.devices.AzureStorageDevice -> /home/subro/work/garnet/libs/storage/Tsavorite/cs/src/devices/AzureStorageDevice/bin/AnyCPU/Release/net7.0/Tsavorite.devices.AzureStorageDevice.dll
Garnet.server -> /home/subro/work/garnet/libs/server/bin/AnyCPU/Release/net7.0/Garnet.server.dll
Garnet.server -> /home/subro/work/garnet/libs/server/bin/AnyCPU/Release/net8.0/Garnet.server.dll
Garnet.host -> /home/subro/work/garnet/libs/host/bin/AnyCPU/Release/net6.0/Garnet.host.dll
Garnet.cluster -> /home/subro/work/garnet/libs/cluster/bin/AnyCPU/Release/net7.0/Garnet.cluster.dll
GarnetServer -> /home/subro/work/garnet/main/GarnetServer/bin/AnyCPU/Release/net6.0/GarnetServer.dll
Garnet.host -> /home/subro/work/garnet/libs/host/bin/AnyCPU/Release/net7.0/Garnet.host.dll
Garnet.cluster -> /home/subro/work/garnet/libs/cluster/bin/AnyCPU/Release/net8.0/Garnet.cluster.dll
GarnetServer -> /home/subro/work/garnet/main/GarnetServer/bin/AnyCPU/Release/net7.0/GarnetServer.dll
Garnet.host -> /home/subro/work/garnet/libs/host/bin/AnyCPU/Release/net8.0/Garnet.host.dll
GarnetServer -> /home/subro/work/garnet/main/GarnetServer/bin/AnyCPU/Release/net8.0/GarnetServer.dll
ビルドに成功しました。
0 個の警告
0 エラー
経過時間 00:00:04.53
理由は分からないけど、通るんだなこれが。
でもこれで良いのかはわからず…。
次はドキュメントの「Run our Test Suite」段落です。
ビルドでできあがったバイナリに対してテストコードを実行するのでしょう。
こいつはプロジェクトのトップ [~/work/garnet]ディレクトリに戻って実行します。
subro@Lubuntu2204:/work/garnet/main/GarnetServer$ cd ../..
subro@Lubuntu2204:/work/garnet$ dotnet test -c Release -f net8.0 -l "console;verbosity=detailed"
復元対象のプロジェクトを決定しています...
復元対象のすべてのプロジェクトは最新です。
〜〜〜 長いので省略 〜〜〜
成功 SimpleWatchTest [36 ms]
成功 TxnGetSetTest [79 ms]
成功 TxnGetTest [59 ms]
成功 TxnSetTest [74 ms]
NUnit Adapter 4.5.0.0: Test execution complete
成功 WatchKeyFromDisk [381 ms]
成功 WatchNonExistentKey [22 ms]
テストの実行に成功しました。
テストの合計数: 622
成功: 609
スキップ: 13
合計時間: 5.0621 分
合計時間が出てもいつまでも帰ってこないのでCtrl+Cで強制終了させました。
若干怪しい結果が出ているものもありましたけど、大丈夫かな?
上の「スキップ: 13」については Azureストレージを使う場合のテストらしく、環境変数で同テストをやるように設定しなければスキップされるとドキュメントの「Tip」に書いてありましたので問題は無さげです。
試しにもう一回テストしてみたら、スキップも出ずちゃんと戻っても来ました。
謎です。
これで Garnetができはしたと思います。
==========
どうにかビルド完了まではきましたが、ビルド時のエラーは GitHubに issueが上がってなかったら C#に疎い私ではクリアできないものでした。
Ver 1.0.0とはいえまだユルいのか、Linuxでやるから良くないのか、とにかく荒削りって感じがします。
次回はデプロイをして実際に使用してみる回になりますが、果たして上手く行くんでしょうか。
「Garnetインストール(Redis互換) 3」に続きます。
次回困ることになる予定なのが、.NETで作ったプログラムの本番環境へのデプロイ方法なんですね。
しかし日本語書籍でそこら辺を体系的に綴った書籍はなさげで、.NET8の本もなく、更に言うと ASP.NETの本しかないのです。
何となくこの本なら仙道のようになんとかしてくれると思うのは気のせいでしょうか。
でも 2021年刊かぁ…。