hammer-backend-redis icon indicating copy to clipboard operation
hammer-backend-redis copied to clipboard

Redis cluster support for do_count_hit

Open carlogilmar opened this issue 2 years ago • 1 comments

Hi! As I mention here: https://github.com/ExHammer/hammer-backend-redis/issues/39 we had problems using this with a Redis Cluster. Looking the documentation looks like the client connector needs to enable a cluster mode to make operations without the MOVED error.

Replication

  1. I created a redis cluster: https://redis.io/docs/management/scaling/#create-and-use-a-redis-cluster
  2. I connected to just one node in the config file.

Possible Solution

  • When you try to execute a SET instruction in a cluster, if the node connected receives the record, you should receive the tuple {:ok, "OK"}.
  • When you try to execute a SET instruction in a cluster but the node connected is not able to store the record, then you should receive a Redix.Error with the moved error message: MOVED 991 127.0.0.1:6001. This means you need to save the record in that specific node.

image

First Approach to design the solution

  1. Validate the MOVED error in the do_count_hit/5 function.
  2. Parse the correct node direction from the redix error.
  3. Create a new connection to that node.
  4. This will happen any time when you are in a cluster, we need to validate the connections to avoid create many connections to the same node. I achieve this registering the node direction as name.

Feedback

I'd like to get feedback on this possible solution, other pending part is add tests for this, but I'm a little bit confusing on that part. What do you think? Maybe there are other solutions.

carlogilmar avatar Jan 31 '23 23:01 carlogilmar

looks like this need to rebased if you get get a chance

epinault avatar Mar 29 '24 22:03 epinault