提问者:小点点

基于Redis的平衡算法方法


我有2-N个类似Axios请求的实现,命名为函数method1method2.。。。 方法

所以我有一个通用的方法“makeRequest”,它应该选择某个方法来调用,并支持方法之间的平衡。 所有方法的调用次数应大致相同。

怎么和Redis一起做?


共1个答案

匿名用户

Sorted set可能对此很有帮助,但首先需要将方法迁移(初始化)到具有初始分数的Sorted set。 为了简单起见,我假设您有三种方法。 由于方法名称是唯一的,所以set将适合您的用例。 score将用于跟踪使用次数。

  • 通过使用zadd为每个方法设置0分数。 (初始化,将执行一次)
  • 使用zrange methods 0 0获得得分最低的方法(使用较少)
  • 获得带有ZRANGE的方法名称后,使用zincrby增加方法的得分(增加使用计数)
127.0.0.1:6379> ZADD methods 0 method1 0 method2 0 method3
(integer) 3
127.0.0.1:6379> ZRANGE methods 0 -1 WITHSCORES
1) "method1"
2) "0"
3) "method2"
4) "0"
5) "method3"
6) "0"
127.0.0.1:6379> ZRANGE methods 0 0
1) "method1"
127.0.0.1:6379> ZINCRBY methods 1 method1
"1"
127.0.0.1:6379> ZRANGE methods 0 0
1) "method2"
127.0.0.1:6379> ZINCRBY methods 1 method2
"1"
127.0.0.1:6379> ZRANGE methods 0 0
1) "method3"
127.0.0.1:6379> ZINCRBY methods 1 method3
"1"
127.0.0.1:6379> ZRANGE methods 0 -1 WITHSCORES
1) "method1"
2) "1"
3) "method2"
4) "1"
5) "method3"
6) "1"
127.0.0.1:6379> ZRANGE methods 0 0
1) "method1"