From 3994366651511e19cd99cef180a0ddc3270d4ce8 Mon Sep 17 00:00:00 2001 From: Yamagishi Kazutoshi Date: Thu, 14 Aug 2025 18:43:25 +0000 Subject: [PATCH] Display Valkey version on admin dashboard --- .devcontainer/compose.yaml | 20 +++++++++++++ .../dimension/software_versions_dimension.rb | 14 +++------- .../dimension/space_usage_dimension.rb | 14 +++------- .../admin/metrics/dimension/store_helper.rb | 28 +++++++++++++++++++ 4 files changed, 56 insertions(+), 20 deletions(-) create mode 100644 app/lib/admin/metrics/dimension/store_helper.rb diff --git a/.devcontainer/compose.yaml b/.devcontainer/compose.yaml index ced5ecfe884..33704cd88ae 100644 --- a/.devcontainer/compose.yaml +++ b/.devcontainer/compose.yaml @@ -55,6 +55,24 @@ services: networks: - internal_network + valkey: + image: valkey/valkey:8-alpine + restart: unless-stopped + volumes: + - valkey-data:/data + networks: + - internal_network + + dragonfly: + image: docker.dragonflydb.io/dragonflydb/dragonfly + restart: unless-stopped + volumes: + - dragonfly-data:/data + networks: + - internal_network + ulimits: + memlock: -1 + es: image: docker.elastic.co/elasticsearch/elasticsearch-oss:7.10.2 restart: unless-stopped @@ -84,6 +102,8 @@ services: volumes: postgres-data: redis-data: + valkey-data: + dragonfly-data: es-data: lt-data: diff --git a/app/lib/admin/metrics/dimension/software_versions_dimension.rb b/app/lib/admin/metrics/dimension/software_versions_dimension.rb index 91ab4f836d1..e64a6b1180a 100644 --- a/app/lib/admin/metrics/dimension/software_versions_dimension.rb +++ b/app/lib/admin/metrics/dimension/software_versions_dimension.rb @@ -1,7 +1,7 @@ # frozen_string_literal: true class Admin::Metrics::Dimension::SoftwareVersionsDimension < Admin::Metrics::Dimension::BaseDimension - include Redisable + include Admin::Metrics::Dimension::StoreHelper def key 'software_versions' @@ -45,13 +45,11 @@ class Admin::Metrics::Dimension::SoftwareVersionsDimension < Admin::Metrics::Dim end def redis_version - value = redis_info['redis_version'] - { key: 'redis', - human_key: 'Redis', - value: value, - human_value: value, + human_key: store_name, + value: store_version, + human_value: store_version, } end @@ -117,8 +115,4 @@ class Admin::Metrics::Dimension::SoftwareVersionsDimension < Admin::Metrics::Dim rescue Terrapin::CommandNotFoundError, Terrapin::ExitStatusError, Oj::ParseError nil end - - def redis_info - @redis_info ||= redis.info - end end diff --git a/app/lib/admin/metrics/dimension/space_usage_dimension.rb b/app/lib/admin/metrics/dimension/space_usage_dimension.rb index c03464ecaa9..1b4d224c770 100644 --- a/app/lib/admin/metrics/dimension/space_usage_dimension.rb +++ b/app/lib/admin/metrics/dimension/space_usage_dimension.rb @@ -1,8 +1,8 @@ # frozen_string_literal: true class Admin::Metrics::Dimension::SpaceUsageDimension < Admin::Metrics::Dimension::BaseDimension - include Redisable include ActionView::Helpers::NumberHelper + include Admin::Metrics::Dimension::StoreHelper def key 'space_usage' @@ -27,14 +27,12 @@ class Admin::Metrics::Dimension::SpaceUsageDimension < Admin::Metrics::Dimension end def redis_size - value = redis_info['used_memory'] - { key: 'redis', - human_key: 'Redis', - value: value.to_s, + human_key: store_name, + value: store_size.to_s, unit: 'bytes', - human_value: number_to_human_size(value), + human_value: number_to_human_size(store_size), } end @@ -57,10 +55,6 @@ class Admin::Metrics::Dimension::SpaceUsageDimension < Admin::Metrics::Dimension } end - def redis_info - @redis_info ||= redis.info - end - def search_size return unless Chewy.enabled? diff --git a/app/lib/admin/metrics/dimension/store_helper.rb b/app/lib/admin/metrics/dimension/store_helper.rb new file mode 100644 index 00000000000..d406ef5aab0 --- /dev/null +++ b/app/lib/admin/metrics/dimension/store_helper.rb @@ -0,0 +1,28 @@ +# frozen_string_literal: true + +module Admin::Metrics::Dimension::StoreHelper + include Redisable + + protected + + def store_name + return 'Valkey' if redis_info.key?('valkey_version') + return 'Dragonfly' if redis_info.key?('dragonfly_version') + + 'Redis' + end + + def store_version + redis_info['valkey_version'] || redis_info['dragonfly_version'] || redis_info['redis_version'] + end + + def store_size + redis_info['used_memory'] + end + + private + + def redis_info + @redis_info ||= redis.info + end +end