我有2-N个类似Axios请求的实现,命名为函数method1
,method2
.。。。 方法
。
所以我有一个通用的方法“makeRequest”,它应该选择某个方法来调用,并支持方法之间的平衡。 所有方法的调用次数应大致相同。
怎么和Redis一起做?
Sorted set可能对此很有帮助,但首先需要将方法迁移(初始化)到具有初始分数的Sorted set。 为了简单起见,我假设您有三种方法。 由于方法名称是唯一的,所以set
将适合您的用例。 score
将用于跟踪使用次数。
zadd
为每个方法设置0
分数。 (初始化,将执行一次)zrange methods 0 0
获得得分最低的方法(使用较少)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"