Как использовать оперативную память для хранения словаря Python?
Добрый вечер!
Суть такая: подключаюсь к AD(LDAP), беру от туда данные и записываю в словарь. В данный момент я записываю словарь в обычный текстовый файл. Такая манипуляция необходима чтоб не тянуть каждый раз данные из AD когда пользователь пытается получить доступ к боту, а раз в день обновлять мой словарь с нужными данными для доступа и брать информацию с него.
А теперь вопрос: можно ли как-то реализовать так, чтоб словарь записывался в выделенную память, а бот тянул из этой памяти данные? Может есть какой модуль? Решение не обязательно, просто подтолкнуть в нужное русло, а там уже сам докопаюсь до сути и реализую) Главное чтоб решение было быстрее и, возможно, безопаснее чем тянуть данные из файла.
Твои рассуждения имеют изъян. Ты предполагаешь что дешевле качать базу LDAP и сохранять ее в файл и потом этот файл использовать, чем просто подключаться из бота к LDAP. Я не согласен с этой идеей.
Или может быть на самом деле проблема не в этом? Безопасность доступы то да сё.
mayton2019, всю базу я не качаю, ищу только пользователей у которых есть нужные поля (пользователей не очень много) с ID телеги и группой доступа к боту. Бот должен проверять есть ли доступ к нужной функции и подумал что может лучше как-то сохранять список "достойных" где-то рядом, а не проверять для каждой функции бота доступ в LDAP.
Как лучше делать и почему?)) Боту каждый раз трогать AD или всё таки раз в день потрогать и "насиловать" файл\память\что-то ещё?)
AcTapD, идея с файлом - фигня полная. Как ты там поиск реализуешь? Линейный небось?
Между твоим приложением и LDAP можно поставить бесконечное количество баз и систем. Memcached, Redis, RocksDb. Все они обладают опцией TTL и подходят для кешей в временем жизни.
Но до того как брать эти технологии я-бы попробовал хранить записи в памяти сеанса бота. По ключевому слову LRU гуглится следующая штука https://pypi.org/project/python-lru/ посмотри. Может ее возможностей хватит и тебе не нужны будут другие инстанции. Все предположения относительно перформанса - остаются просто предположениями. Нужно запускать бота. Смотреть как он работает. Может тебе вообще кеш не нужен.
mayton2019, спасибо за развёрнутый комментарий) Я поэтому и искал что-то более адекватное, нежели хранение в файле.
Практиковался с выборкой нужной информации с LDAP и вносил её в словарь. А словарь вписал в строку файла, ну и обратно преобразовывал строку в словарь) Практика ведь на то и нужна, чтоб делать какой-то бред, а потом осознавать это и делать по другому)