Встретил такой вот кусок странного кода в описании INCR у Redis.
Понятно, что это на LUA, но там же
redis.call() должен быть, нельзя же команды redis'а в eval'ные функции прямо так вставлять??
В общем, хоть и оффтоп, но поясню, что именно там написано. С помощью атомарных инкрементов они демонстрируют паттерн кода для rate limit. Причем, они предлагают глобально два решения: одно -- луа скрипт (см. Eval) который исполняется на стороне сервера и второе -- без использования скриптинга, с помощью вызова редис команд из приложения. В качестве языка для этого шаблона кода они выбрали sql (как понятный всем читателям) и показали пример того, как без скриптинга, но с помощью multi, можно реализовать эту функциональность. В принципе, в данном конкретном случае, этот multi даже будет работать, потому что в качестве ключей всегда используется только одно значение.
На глаз, кстати, там очевиден race condition. Но надо отдать должное разработчикам, я вычитался, и они его тоже упомянули в самом конце.