Currently using Lettuce but noticed that config properties lacks readFrom property and require code change to implement it, would be possible to externalize this in a property so we can override the default?

I currently have a redis sentinel totally configured by properties but I cannot configure read from property the same way.

Something like:

spring.redis.lettuce.config.read-from=REPLICA_PREFERRED

or

spring.redis.config.read-from=REPLICA_PREFERRED
````

Originally opened a ticket against spring data redis but was requested to open a ticket here.


**Comment From: thiagoteichmann**

Hi @nosan  @wilkinsona , is there any update on this?

**Comment From: nosan**

Hi @thiagoteichmann,

The issue is still in progress. Before moving forward, @wilkinsona reached out to the Lettuce team to request support for more complex ReadFrom types, such as `regex` and `subnet`.

I've created a PR: https://github.com/redis/lettuce/pull/3016. Once it's merged, I believe it would be possible to support this in Spring Boot as well. 

**Comment From: nosan**

However, please keep in mind that I'm just a contributor, so it would be best to wait for @wilkinsona's feedback.

**Comment From: thiagoteichmann**

Sure, no worries, thanks for the update! 👍🏻 

**Comment From: tishun**

@thiagoteichmann are you using snake_case because it is a requirement, or could you also work with kebab-case, e.g.

```properties
spring.redis.lettuce.config.read-from=replica-preferred

It would help us consider how we should implement the solution in the end greatly if we know more about your use case.

Comment From: wilkinsona

@tishun Boot's relaxed binding can take various different property formats so, personally, I wouldn't worry about handling multiple formats in Lettuce. I'd just pick one and stick with it and leave Boot to deal with that complexity.

Comment From: nosan

@wilkinsona I thought that relaxed bindings only applied to property names, not values. Have I misunderstood or missed something here?

Comment From: wilkinsona

Boot can bind enums and similar in a relaxed form as well (see LenientObjectToEnumConverterFactory for example). Although we won't be targetting an enum, I think we should do something here and leave Boot to bear the burden of relaxed binding rather than Lettuce having to deal with it too.

Comment From: thiagoteichmann

@thiagoteichmann are you using snake_case because it is a requirement, or could you also work with kebab-case, e.g.

ini spring.redis.lettuce.config.read-from=replica-preferred

It would help us consider how we should implement the solution in the end greatly if we know more about your use case.

I think kebab would be clearer for me. in my case I might have reads coming from replicas instead of the default master and your sample would be an exact scenario. My original example was just copied from the enum value. :)

Comment From: wilkinsona

Closing in favor of #42588.