Для этого можно использовать скрипт lua, для получения дополнительной информации проверьте документы redis.
В приведенном ниже скрипте lua вызывается lpop, если найденный результат возвращает элемент, иначе он получит данные sh с использованием lpu. sh. Надеюсь, что это отвечает на вопрос.
eval "local v = redis.call('lpop', KEYS[1]); if not v then return redis.call('lpush', KEYS[1], ARGV[1]); else return v; end;" 1 "ns:queue" 1