Skip to content

Alternate configuration for Redis#409

Merged
Oumph merged 1 commit intomasterfrom
redis_config
Feb 15, 2026
Merged

Alternate configuration for Redis#409
Oumph merged 1 commit intomasterfrom
redis_config

Conversation

@Oumph
Copy link
Member

@Oumph Oumph commented Jan 25, 2026

Actuellement redis est dans un conteneur différent de la partie RoR (sur le même hôte). Il y a donc besoin de surcharger la configuration pour ce redis qui n'est pas sur 127.0.0.1 / localhost. Par contre on ne fait rien niveau authentification ou support TLS, donc à réserver à un réseau local...

Les REDIS_HOST/PORT/URL semblent être des variables standards. Le REDIS_CACHE_URL est spécifique à la configuration de notre CMS.

@echarp
Copy link
Member

echarp commented Jan 25, 2026

Normalement, tu peux aussi utiliser la syntaxe: ENV.fetch("REDIS_CACHE_URL", "redis://localhost:6379/1/cache"), ça permet de gérer la valeur par défaut.

@Trim
Copy link
Member

Trim commented Jan 26, 2026 via email

@Oumph
Copy link
Member Author

Oumph commented Feb 15, 2026

Ce qui semble utilisé comme convention par d'autres :

https://www.rubydoc.info/gems/redis/5.4.1
exemple avec Redis.new(url: ENV["REDIS_URL"]) et le code lib/redis/client.rb avec url: -> { ENV["REDIS_URL"] }

ou bien

./share-LinuxFr.org/tests/mastodon/mastodon/spec/lib/mastodon/redis_configuration_spec.rb:        ClimateControl.modify REDIS_PASSWORD: 'testpass', REDIS_HOST: 'redis.example.com', REDIS_PORT: '3333', REDIS_DB: '3' do

Dans notre cas on a besoin de:

par contre le redis_cache_store dit prendre une REDIS_URL (cf https://guides.rubyonrails.org/caching_with_rails.html#activesupport-cache-rediscachestore ) et du coup je ne comprends pas la config actuelle avec le /cache dans "redis://localhost:6379/1/cache" (dedans les clés sont en /views/... pas en /cache par exemple)

@Oumph
Copy link
Member Author

Oumph commented Feb 15, 2026

irb(main):001:0> require "redis"
=> true
irb(main):005:0> redis = Redis.new(url: "redis://x.x.x.x:6379/1/sdflshgdjkghuieuihjkghjkhgdjkhgd")
=> #<Redis client v4.0.2 for redis://x.x.x.x:6379/1>
irb(main):006:0> redis.get("mykey")
=> nil
irb(main):007:0> redis.set("mykey", "toto")
=> "OK"
irb(main):008:0> redis.get("mykey")
=> "toto"

a priori le /cache est juste là pour faire joli

@Oumph
Copy link
Member Author

Oumph commented Feb 15, 2026

Cf 649f5a0 qui précise que c'est le 'namespace' https://github.com/nono/redis-store

-  config.cache_store = :redis_store, "redis://linuxfr.org:6379/0"
+  config.cache_store = :redis_store, "redis://linuxfr.org:6379/0/cache"

https://github.com/nono/redis-store/blob/1e611c18bb1292042b2ef9ae6916164ce49fbfe4/lib/redis/store.rb#L25

Et j'avais raté ça dans la doc https://api.rubyonrails.org/v8.1.2/classes/ActiveSupport/Cache/RedisCacheStore.html

No namespace is set by default. Provide one if the Redis cache server is shared with other apps: namespace: 'myapp-cache'.

@Oumph
Copy link
Member Author

Oumph commented Feb 15, 2026

(conseil de lecture: mettre la musique de Retour vers le futur)

nono-redis-store avait une notion de namespace.

52c7ae3

-  gem "nono-redis-store",      "~>1.0"
+  gem "redis-store",           "~>1.0"

redis-store 1.0 avait une notion de namespace cf redis-store/redis-store@7b24cb1

b955509

-  gem "redis-store",           "~>1.0"
+  gem "redis-activesupport",   "~>3.2"

puis f602114 "Use the new redis cache store from Rails 5.2"

ce qui nous ramène à

No namespace is set by default. Provide one if the Redis cache server is shared with other apps: namespace: 'myapp-cache'.

bref c'est un namespace pour ActiveSupport https://api.rubyonrails.org/v8.1.2/classes/ActiveSupport/Cache/RedisCacheStore.html , pas pour Redis lui-même. Et a priori faut le garder.

@Oumph Oumph merged commit 8d01362 into master Feb 15, 2026
@Oumph Oumph deleted the redis_config branch February 15, 2026 17:15
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants