Oleg
все остальные кейсы использовать не надо
Tishka17
> If no command targets the key constantly, and there are many keys with a TTL associated, there can be a significant delay between the time the key time to live drops to zero, and the time the expired event is generated. Basically expired events are generated when the Redis server deletes the key and not when the time to live theoretically reaches the value of zero. https://redis.io/topics/notifications
Anonymous
в общем единственный нормальный кейс использования ttl, это гарантия того, что ты не получишь устаревшие данные
Не понял. Ты выставил на ключ ттл. Если ключ еще жив, что А, если нет то Б. Ты об этом?
Anonymous
> If no command targets the key constantly, and there are many keys with a TTL associated, there can be a significant delay between the time the key time to live drops to zero, and the time the expired event is generated. Basically expired events are generated when the Redis server deletes the key and not when the time to live theoretically reaches the value of zero. https://redis.io/topics/notifications
Там написано "Много". В моем представлении много - это в рамках редиски почти дохуя. Но таких TTL ключей там не будет много в принципе никогда. Поэтому и выбрал.
Oleg
Не понял. Ты выставил на ключ ттл. Если ключ еще жив, что А, если нет то Б. Ты об этом?
я о том, что в нормальном сценарии редис может узнать о том, что ttl истек только в момент попытки получения этого ключа. Т.е. он достает данные по ключу, видит что там есть ttl, если он не истек возвращает значение, если истек - то возвращает, что этого ключа нет и физически его удаляет
Oleg
Окей. Они же в доках прямо пишут заявленную точность.
покажи где написано про заявленную точность expired-нотификаций
Anonymous
Oleg
это про получение ключа
Oleg
как ты представляешь себе мгновенную реакцию на истечение ttl в хэш-таблице?
Anonymous
Я не знаю, что у них под коробкой. В редиске. Может там какие-нибудь таймеры
Oleg
Я не знаю, что у них под коробкой. В редиске. Может там какие-нибудь таймеры
В общем, ты пытаешься применять инструмент для того для чего он не предназначен, и необоснованно негодуешь почему он не работает так как ты ожидаешь
Oleg
это не проблема редиса, а проблема того, что ты не понимаешь как он работает
Oleg
Зачем тогда они сделали сабскрайбы?
для подписки на события. И события действительно отправляются. Но применительно к ttl они явно говорят каким образом эти ключи инвалидируются и соответсвенно только в этот момент срабатывает event
Oleg
@MarkEgorov https://redis.io/commands/expire#how-redis-expires-keys
Oleg
Ага. И еще неоч прямо за точность отвечает параметр hz.
а где я это говорил? Да, при увеличении hz редис начинает чаще вычищать expired ключи, но это все равно не дает никаких гарантий. Ты же понимаешь что результат зависит от кол-ва ключей с ttl?
Oleg
если ты задрал hz до 100 и при твоих 1000 ключах все ок, то это не значит, что когда ключей станет 1кк все будет работать так как ты ожидаешь
Oleg
это не изначально нерабочая схема, и редис для этого не предназначен
Anonymous
а где я это говорил? Да, при увеличении hz редис начинает чаще вычищать expired ключи, но это все равно не дает никаких гарантий. Ты же понимаешь что результат зависит от кол-ва ключей с ttl?
А я выше писал, что у меня изначально ttl ключей много не будет. Это не сессии пользователей. И уж с соточкой-другой редиска должна справится.
Tishka17
Я не знаю, что у них под коробкой. В редиске. Может там какие-нибудь таймеры
Я же кинул ссылку. "Между истечением таймаута и нотификацией может быть огромная задержка"
Anonymous
Как в sublime3 сделать подсветку модулей с библиотек?
Oleg
А я выше писал, что у меня изначально ttl ключей много не будет. Это не сессии пользователей. И уж с соточкой-другой редиска должна справится.
Вообще тут можно говорить только о вероятности. Может сработать быстро, а может и нет. Это зависит от того какие рандомные ключи редис выберет для проверки
Oleg
Test 20 random keys from the set of keys with an associated expire.
Anonymous
Вообще тут можно говорить только о вероятности. Может сработать быстро, а может и нет. Это зависит от того какие рандомные ключи редис выберет для проверки
Задержка в пять секунд приемлема. Неприемлема в минуту. Пока посмотрю. Вроде полет ровный, почти секунда в секунду.
Oleg
Test 20 random keys from the set of keys with an associated expire.
если в этих 20 рандомных ключах будет меньше 5 expired, то придется ждать следующий цикл, который запустится через 1/hz секунд
Anonymous
Тогда зачем тебе вообще эти уведомления?
Мне надо некое внешнее кей валуе, которое гарантированно вернет нотификацию, что ключу хана. Ну или через get.
Tishka17
Ну через гет тебе редис стопудово вернет
Tishka17
А зачем нотификация?
Oleg
В общем не надо так делать. Гарантий никаких, это вообще не масштабируется на большее количество ключей, увеличивает нагрузку на cpu
Tishka17
Какой кейс вообще
Anonymous
А зачем нотификация?
Элегантно получается.
Tishka17
Итого, тебе надо получать нотификации, если не было никаких действий с ключом N-секунд. Так?
Tishka17
Вообще много у тебя там операций записи?
Savva
AI начал генерить трансгендеров
Anonymous
Итого, тебе надо получать нотификации, если не было никаких действий с ключом N-секунд. Так?
Нет. Мне нужен срок жизни ключа. Дальше демон получает уведомление, генерирует пак событий - и рассылает их.
Tishka17
Ты оперируешь опять ключами. Давай в терминах бизнес логики
Tishka17
Может есть решение
Tishka17
Чоблин
Tishka17
Чо
Tishka17
Все ещё не понятно, что значит "как переменную"
Tishka17
Приведи пример
Tishka17
Ну
Richard
У вас проекты на хероку нормально пашут?
Alexander
Всем привет
Alexander
Вопрос немного не по теме
Alexander
Но, не могу скачать файл с ЯД
Alexander
через curl
Alexander
Через апи получил итоговую ссылку
Alexander
Обращаюсь к ней curl -o ./FILE.FILE HTTP:…//../
Alexander
Скачивается файл 32 б с содержимым HTTP 422 No parameter: filename
Tishka17
Наверно randint надо числа передавать, а ты строки суешь
Alexander
А сам вывод curl таков: [1] 83057 [2] 83058 [3] 83059 [4] 83060 [5] 83061 [6] 83062 [7] 83063 [8] 83064 [9] 83065 [10] 83066 [2] Done filename=v3.efi [3] Done disposition=attachment [4] Done hash= [5] Done limit=0 [6] Done content_type=application%2Fx-dosexec [7] Done fsize=927424 [8] Done hid=f588265224c6eaa74b95ddc0159a6d5f [9] Done media_type=unknown [10]+ Done tknv=v2 MacBook-Pro-Alexandr:~ alexandr$ % Total % Received % Xferd Average Speed Time Time Time Current Dload Upload Total Spent Left Speed 100 32 0 32 0 0 165 0 --:--:-- --:--:-- --:--:-- 165
Tishka17
Они у тебя и так переменные
Tishka17
Просто в них не числа, а строки
Tishka17
Потому что инпут возвращает строки
Tishka17
И вообще иди в чат новичков
Eldar
А правила читать не учили?
Alex
чукча не читатель...
Eldar
Тут, бля, каждому новенькому бот пишет "прочитай правила"!
Alex
просто большая часть людей - идиоты, увы
Тот
На то он и бот чтобы его игнорировать
Anonymous
Ты оперируешь опять ключами. Давай в терминах бизнес логики
Ой, это сложно. 1. Появляется событие А 2. Длиться оно должно N времени. 3. По истечении должно генерироваться событие B. Мы не можем держать в памяти демона все эти три значения из-за закладываемого требования, что он всегда может упасть.
Alex
я бы RO выдавал, пока новенький боту в личку не напишет "Я подтверждаю, что прочитал правила чата".
Alex
А тогда спать не смогу)
Нужен другой бот, чтобы банить тех, кто к тебе в личку стучится.
Alex
Микросервисы епт
Anonymous
Я поначалу даже погуглил, мож в новых версиях популярных субд есть что-то такое. Но увы.
Nikolay
Вы зачем мне стим сломали
Richard
Вы зачем мне стим сломали
Steam down? Current network status and problems | Downdetector downdetector.com Real-time network status for Steam. Can't play your games? Is the service down? The Steam platform also enables gamers to save games online and enables in-game voice and chat.
Nikolay
Да я вижу
Richard
-Москва
Richard
PEP 8 - руководство по написанию кода на Python | Python 3 для... PythonWorld.ru PEP 8 - этот документ описывает соглашение о том, как писать код для языка python, включая стандартную библиотеку, входящую в состав python.
Richard
Зубри