У меня три процесса на одном компьютере:
- Тест (T)
- Сервер nginx с моим собственным модулем (M) --- тест запускается и останавливаетсяпроцесс между каждым разделом теста
- Сервер Redis (R), который всегда работает --- тест не обрабатывает последовательность запуска / остановки этой службы (я тестирую мой модуль nginx, а не Redis).)
Вот диаграмма различных событий:
T M R
| | |
O-------->+ FLUSHDB
| | |
+<--------O (FLUSHDB acknowledge as successful)
| | |
O-------->+ SET key value
| | |
+<--------O (SET acknowledge as successful)
| | |
O--->+ | Start nginx including my module
| | |
| O--->+ GET key
| | |
| +<---O (SUCCESS 80% and FAILURE 20%)
| | |
Тест очищает базу данных Redis с помощью FLUSHDB
, затем добавляет ключ с SET key value
.Затем тест запускает nginx, включая мой модуль.Там время от времени происходит сбой действия GET key
модуля nginx.
Примечание 1: я не использую реализацию ASync
Redis.
Примечание 2: я используюБиблиотека C hiredis
.
Возможно ли, что будет задержка между SET
и следующим GET
с тем же ключом, который будет объяснять, что этот процесс время от времени терпит неудачу?Есть ли способ для меня, чтобы убедиться, что SET
действительно выполняется, когда возвращается функция redisCommand()
?
ВАЖНОЕ ПРИМЕЧАНИЕ: , если я запускаю один такой тест и GET
происходит сбой в моем модуле nginx, в моем Redis появляется ключ:
redis-cli
127.0.0.1:6379> KEYS *
1) "8b95d48d13e379f1ccbcdfc39fee4acc5523a"
127.0.0.1:6379> GET "8b95d48d13e379f1ccbcdfc39fee4acc5523a"
"the expected value"
Так что
SET "8b95d48d13e379f1ccbcdfc39fee4acc5523a" "the expected value"
работал как положено.Только GET
потерпел неудачу, и я бы предположил, что это потому, что это произошло как-то слишком быстро.Есть идеи, как решить эту проблему?