Комментарии 33
Подскажите, есть ли у Redis свои «скелеты в шкафу»? К примеру, когда я начал интересоваться Mongodb то был «приятно» удивлён когда mongo отожрала всю память на сервере и ещё и отдавать её не хотела ни коим образом. Может плохо читал доки, каюсь.
Ну редис не предназначен для работы с данными больше оперативной памяти. Транзакции там весьма ограниченные. Больше ничего не приходит в голову.
более того, данных в памяти должно быть по возможности не больше половины оперативки. потому что периодически редис форкается и в чайлд-процессе сбрасывает данные на диск. вот у нас он любил уходить в своп и начинались недетские тормоза
Редис, как и любой другой инструмент, надо использовать с умом. У моих коллег бывали случаи, когда машина уходила в своп при сбросе данных на диск (хранили сессии). Подозреваю, что плохо сконфигурировали этот момент. Было дело, сам лично клал ферму фронтендов выборкой ключей по маске (примерно так — KEYS posts:*). А вообще, редис действительно очень удобен, и им приятно пользоваться.
То есть строка из документации вас не смутила перед этим?
Warning: consider KEYS as a command that should only be used in production environments with extreme care. It may ruin performance when it is executed against large databases. This command is intended for debugging and special operations, such as changing your keyspace layout.
Warning: consider KEYS as a command that should only be used in production environments with extreme care. It may ruin performance when it is executed against large databases. This command is intended for debugging and special operations, such as changing your keyspace layout.
И вообще, если есть сомнения в идеологической верности выбранной технологии мне помогают такие вот посты.
Надо отметить, что memcached позволяет распределять данные по серверам, а redis ограничивается мастер-слейв репликацией. То есть в первом случае мы получаем масштабируемость, а во втором — скорость (никаких запросов сетевого характера на локальную машину).
В разработке redis.io/presentation/Redis_Cluster.pdf
При этом при создании новых id будет лаг, зависящий от расстояния между серверами, поэтому использовать кластер memcached можно в пределах одного датацентра, в лучшем случае.
Ну дык на то memcached кэшем и зовут, область и способы применения специфичны. Если вы хотели этим подчеркнуть что-то из redis, то этот намек слишком трудноуловим (по крайней мере для меня).
И о времени обновления значений сказано… достаточно.
И о времени обновления значений сказано… достаточно.
Видимо вы далеки не только от редиса, но и от мемкеша. Memcached не умеет распределять данные по серверам, это делают клиентские библиотеки
Может и так, может и далек :)
В своем сравнении я подробно не разбирал отличия этих систем, сознательно утрировал (тут есть и посерьезнее поводы придраться, было бы желание). Таков был замысел :)
Ну а называть библиотекой то, что реализуется… ммм… двумя строчками кода, при чем в каждом проекте… не слишком? )
В своем сравнении я подробно не разбирал отличия этих систем, сознательно утрировал (тут есть и посерьезнее поводы придраться, было бы желание). Таков был замысел :)
Ну а называть библиотекой то, что реализуется… ммм… двумя строчками кода, при чем в каждом проекте… не слишком? )
НЛО прилетело и опубликовало эту надпись здесь
Что реализуется двумя строчками? о_О. Сетевое взаимодействие приложения и мемкеша или шардинг?
Шардинг можно и в одну уложить :) Я же имел ввиду именно библиотеки типа redis.io/clients
Шардинг можно и в одну уложить :) Я же имел ввиду именно библиотеки типа redis.io/clients
НЛО прилетело и опубликовало эту надпись здесь
А вот как решить такую задачу редисом: нужно считать кол-во хитов поста за последние n дней?
Пока решил делать
Пока решил делать
HINCRBY hits <post_id>:<timestamp> 1
и агрегировать этот хешлист, с подчищением протухших записей. Но все равное хешлист распухает и единственно решение это дробить таймстамп (хиты за 10/20/30… мин), теряя тем самым точность статистики (хотя и не нужна высокая точность).Нужно дробить время, если за последние n дней, то до дней. И надо определиться с вопросом прежде, чем на него отвечать. Если вопрос «А вот как решить такую задачу редисом: нужно считать кол-во хитов поста за последние n дней?», то дальнейший рассуждения о точности выглядят неуместными.
P.S. Если хочется много статистики, то самый эффективный способ — использовать битовые маски. Есть реализация для питона.
P.S. Если хочется много статистики, то самый эффективный способ — использовать битовые маски. Есть реализация для питона.
Зарегистрируйтесь на Хабре, чтобы оставить комментарий
Redis: лёгкие яблоки