はじめに
テスト目的でAzure Cache for Redisで意図的にEvictを発生させる必要があり、
色々試した結果やり方がわかったので備忘録として残します。
シンプルにAzure Cache for Redisを立ち上げたい場合は下記の記事をご参照ください。
とりあえずTerraformでAzure Redis for Cacheをつくってみる
方法
1. メモリ管理ポリシーのmaxmemory-policy
をallkeys-random
,
maxmemory_reserved
を設定できる上限値
に設定する。
簡単に設定する内容について説明します。
maxmemory-policy
とは、Redisキャッシュがメモリ使用量の上限に達した際の挙動を設定します。allkeys-random
の場合、上限に達した時、ランダムで削除(Evict)します。
maxmemory_reserved
とは、キャッシュ以外の用途のために予約されたメモリ領域のことです。
これらを設定することで、Evictを発生させる準備が整います。
それでは、実際に設定を行う方法を書いていきます。
azure portal画面であれば、詳細設定から変更を行うことが可能です。
Terraformであれば、以下のように記述します。
resource "random_pet" "test" { length = 1 separator = "" } resource "random_integer" "test" { min = 1 max = 100 } resource "azurerm_redis_cache" "test" { name = "test-redis-cache-${random_pet.test.id}-${random_integer.test.result}" location = azurerm_resource_group.test.location resource_group_name = azurerm_resource_group.test.name capacity = 1 # Redisキャッシュのサイズ family = "C" # 価格タイプ, C(Basic/Standard), P(Premium) sku_name = "Standard" # SKU(Basic, Standard, Premium) enable_non_ssl_port = true # 非TLSポートの有効化 redis_configuration { maxmemory_policy = "allkeys-random" maxmemory_reserved = 755 } }
一応、Github上にコード全体を載せるので必要であれば参考にしてみてください。
https://github.com/tkhs1121/terraform-azure-sample/tree/master/redis-evict
2. 次に大量のデータをsetしていく。
自分はmemtier_benchmarkで以下のコマンドを実行しました。
memtier_benchmark -s "$REDIS_HOST" -a "$REDIS_ACCESS_KEY" -d 1000000 --key-pattern=S:R --ratio=10:1
実行結果
Azure MonitorのメトリクスからEvictされているのが確認できます。
以上です。
最後に
誰かの参考になれば嬉しいです。