Yuriy
и соответсвенно HSETNX
Yuriy
А всем "забытым данным" выставлять одинаковые expire - не? Чтобы удалялись одновременно.
Тут похоже суть не в этом Тут суть в том чтобы получать уведомление о том что запись истекла. Но как я выше описал есть другие способ проверки и подчистки ненужного
ShadoWalkeR
Поэтому идея в следующее - добавляется хэш или запись в список, а также ключ с expires (на самом деле 2, но это сейчас не важно) и при удалении ключа внешний/внутренних скрипт идентифицирует что и где искать и дропает
ShadoWalkeR
Да - я очередную наркоманию делаю в телефонии 😃
Yuriy
делай проверку по запросу и не мучай мозг
Yuriy
Так и схема проще получится и всегда валижные данные будут
Yuriy
И не будешь зависеть от механизма публикаций
Yuriy
котороый к слову в редисе не гаарантированный
ShadoWalkeR
А в активное проверке мне надо держать в памяти какие были ключи в предыдущую итерацию. Если в момент рестарта скрипта удалилась запись, то скрипт не почистит эти данные
Yuriy
У тебя ж ключи откуда то прилетают
Yuriy
И судя по тому что дело касается телефонии прилетают они скорее всего из запросов-ответов
ShadoWalkeR
Там тоже все stateless)
Yuriy
Ну тут не в statelesss дело
ShadoWalkeR
Осталось только чистку данных запилить и из одно микросервиса таймер в эту же схему перенести
ShadoWalkeR
Пожалуй придется хэш пилить
Yuriy
Запрос в момент диалога все равно содержит одни ите же данные
Yuriy
ты вообще какой кейс там делаешь?
ShadoWalkeR
Распределенный колл центр
ShadoWalkeR
Допилить этот механизм и горизонтальное масштабирование будет делаться просто раскатыванием сервера ансиблом и добавление в камаилио
ShadoWalkeR
Неважно куда падает звонок - он отработается в очереди с правильным позиционированием и нужными операторами
ShadoWalkeR
Ну и почти неважно что отвалится - с точки зрения клиента в наихудшем случае ему просто не ответят
ShadoWalkeR
Yuriy
Это все круто кейс какой?
ShadoWalkeR
Ну как бы под задачу выше и пилю механизм чистки данных на случай если чтот опошло не так
ShadoWalkeR
Потому что остальное я уже все запил
bebebe
Ну как бы под задачу выше и пилю механизм чистки данных на случай если чтот опошло не так
я тоже сначала использовал redis в связке с openresty потом перешел на etcd и в нем из коробки есть TTL на ключи, через некоторое время они сами удаляются
bebebe
кучу гемора ушло
bebebe
хотя в redis это тоже присутствует https://redis.io/commands/ttl
ShadoWalkeR
Мне нужно знать что ключ удаляется чтобы на его основе почитстить данные
ShadoWalkeR
Зачем мне делать работу редиса в скрипте?
ShadoWalkeR
Имею в виду пилить проверку надо удалять ключ или нет
bebebe
Мне нужно знать что ключ удаляется чтобы на его основе почитстить данные
это тоже есть в etcd, можно делать curl запрос с параметром ?wait=true в этом случае HTTP запрос "подвисает" до тех пор пока с этим ключом (ключами, деревом) не произойдут изменения
bebebe
https://coreos.com/etcd/docs/latest/v2/api.html#waiting-for-a-change
bebebe
очень удобно, отлавливать события связанные с изменением в базе
ShadoWalkeR
Какихх именно данных? Просто конкретизируй
Конкретные поля из хэшей и списков надо удалять на основе удаляемого ключа
bebebe
хотя видимо от redis вы уже не избавитесь, поэтому надо страдать
bebebe
и костылять
ShadoWalkeR
Если бы мне просто надо было ключи дропать, я бы вешал expires и сюда со своим вопросом не пришел бы
bebebe
https://redis.io/topics/notifications
bebebe
вот так можно отлавливать события
Yuriy
Конкретные поля из хэшей и списков надо удалять на основе удаляемого ключа
Блин. Ну я понимаю что не абстрактные поля)) данные полей откуда бедрутя? Что это? Остлеживание сессии звонка? Отслживание состояния медиа сервера?
ShadoWalkeR
Блин. Ну я понимаю что не абстрактные поля)) данные полей откуда бедрутя? Что это? Остлеживание сессии звонка? Отслживание состояния медиа сервера?
Подробностей не могу рассказывать. Но в общих чертах там это не буду реализовывать. Именно потому что у меня распредленная система и чем меньше компонент хранит в себе состояние тем она в целом надежней
ShadoWalkeR
Я то найду)
ShadoWalkeR
главное мне тут подсказали где искать)
ShadoWalkeR
За это спасибо)
bebebe
в итоге что вы решили делать?
ShadoWalkeR
Поэксперементирую с Keyspace Notifications. Если не взлетит по каким либо причинам запилю хэши, которые будет скрипт ежесекундно проверять (что хуже - лишняя нагрузка на редис)
ShadoWalkeR
Печально. Имя ключа получаю в notifications, а значение нет. А если изменяемые данные хранить в имени ключа то сильно замороченная логика становится
ShadoWalkeR
Придется пилить хэши и активные проверки.
ShadoWalkeR
Хотя если подумать, то это неважно - если он в списке не найдет данные то просто не назначать таймер заново
vvzvlad
Я гружу скрипт с помощью loadstring. Если я вызываю из этого скрипта trace, то мне не показывается конкретная строка в скрипте, а показывается просто "[string "local mqtt = require 'mqtt'..."]:32: in function <[string "local mqtt = require 'mqtt'..."]:31>", т.е. он воспринимает весь скрипт как одну строку. Для отладки неудобно. Можно ли как-нибудь это решить, кроме как запихиваем скрипта в файл и вызовом load/loadfile?
vvzvlad
сейчас начнется
invariance
😀
Snusmumriken
Эй. Кыш с таким контентом.
vitaly
cайт на луа
vitaly
ничего не знаю
vitaly
😂
Snusmumriken
@ksenia_airbit, что расскажете, помимо бизнеса на биткоинах? Реклама не по теме (или без ста тыщ мильёнов лично на мою кредитку), в данном сообществе - способ угодить в бан.
vitaly
самопис - 6 лет опыта
Snusmumriken
самопис - 6 лет опыта
То что луа - такой замечательный и многогранный ЯП что на нём даже можно сделать порносайт - это восхитительно (особенно если потоковый видос шлётся тоже средствами луа). Но вот проблема в том, что а) в чате дети; б) те кто хотят прон - сами найдут; в) по сайту даже не скажешь что он на луа, луашникам нечему учиться, вот если бы ты вывесил сурц - куда ни шло.
vitaly
я согласен
vitaly
это был стеб на стеб
B
Я что-то пропустил? У кого-то есть прон сайт на луа?
B
А дайте посмотреть?
Tadeusz
на луа весь код - сплошной прон
Tadeusz
исходники сталкера открой
fgntfg
Луа очень красивый язык
Tadeusz
Не ужасный, я бы так сказал )
vitaly
Не ужасный, я бы так сказал )
в чешском языке "ужасный" это типа сног-сшибательный
vitaly
Я что-то пропустил? У кого-то есть прон сайт на луа?
есть и не один -много - луа был использован для работы в области переменых ингинкс - для уменшения нагрузки на сервера - для вывода страниц - неблокируемый - как то так
vitaly
на большом числе соединений
vitaly
просто борис бритва
vitaly
один минус отлаживать его и ловить не прямые баги тяжело
vitaly
ну, мы не по-чешски говорим )
эм - ну - пора валить же - Прага Вас ждёт
Tadeusz
брага)