Методы алгоритма балансировки с Redis - PullRequest
1 голос
/ 21 июня 2020

У меня есть 2-n реализаций похожих запросов Ax ios, названных как функции Method1, Method2 .... MethodN.

Итак, у меня есть общий метод makeRequest это должно выбрать определенный метод для вызова и поддерживать баланс между методами. Все методы должны вызываться примерно одинаковое количество раз.

Как это сделать с Redis?

1 Ответ

1 голос
/ 21 июня 2020

Сортированный набор может быть полезен для этого, но сначала вам нужно перенести (инициализировать) свои методы в отсортированный набор с их начальными оценками. Для простоты я предположил, что у вас есть три метода. Поскольку имена методов уникальны, 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"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...