Pull to refresh

Comments 33

Подскажите, есть ли у Redis свои «скелеты в шкафу»? К примеру, когда я начал интересоваться Mongodb то был «приятно» удивлён когда mongo отожрала всю память на сервере и ещё и отдавать её не хотела ни коим образом. Может плохо читал доки, каюсь.
Ну редис не предназначен для работы с данными больше оперативной памяти. Транзакции там весьма ограниченные. Больше ничего не приходит в голову.
более того, данных в памяти должно быть по возможности не больше половины оперативки. потому что периодически редис форкается и в чайлд-процессе сбрасывает данные на диск. вот у нас он любил уходить в своп и начинались недетские тормоза
Можно включить appendonly и он перестанет форкаться, только придется периодически делать bgrewriteaof (ночью, например).
Благодаря copy-on-write, такого не должно происходить. У меня не происходит. Но в доках, что-то читал про возможные проблемы на линуксах, я не особо вчитывался.
Пока данные на диск сбрасываются, вполне может что-то писаться в базу, так что всё равно копии страниц будут создаваться.
Чтобы это имело значение время полного обновления содержимого редиса должно брить сопоставимо с временем записи снепшота, что крайне нетипично
Редис, как и любой другой инструмент, надо использовать с умом. У моих коллег бывали случаи, когда машина уходила в своп при сбросе данных на диск (хранили сессии). Подозреваю, что плохо сконфигурировали этот момент. Было дело, сам лично клал ферму фронтендов выборкой ключей по маске (примерно так — 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.
Теперь я отношусь к таким предупреждениям с особым трепетом.
И вообще, если есть сомнения в идеологической верности выбранной технологии мне помогают такие вот посты.
Надо отметить, что memcached позволяет распределять данные по серверам, а redis ограничивается мастер-слейв репликацией. То есть в первом случае мы получаем масштабируемость, а во втором — скорость (никаких запросов сетевого характера на локальную машину).
Выглядит не плохо, прямо как memcached :)

В любом случае здорово, что в нише memcached есть серьезные подвижки (клоны?).
При этом при создании новых id будет лаг, зависящий от расстояния между серверами, поэтому использовать кластер memcached можно в пределах одного датацентра, в лучшем случае.
Ну дык на то memcached кэшем и зовут, область и способы применения специфичны. Если вы хотели этим подчеркнуть что-то из redis, то этот намек слишком трудноуловим (по крайней мере для меня).

И о времени обновления значений сказано… достаточно.
Я всего лишь хотел подчеркнуть, что мастер-мастер в memcached условный.

Редис я вообще не знаю.
Видимо вы далеки не только от редиса, но и от мемкеша. Memcached не умеет распределять данные по серверам, это делают клиентские библиотеки
Может и так, может и далек :)

В своем сравнении я подробно не разбирал отличия этих систем, сознательно утрировал (тут есть и посерьезнее поводы придраться, было бы желание). Таков был замысел :)

Ну а называть библиотекой то, что реализуется… ммм… двумя строчками кода, при чем в каждом проекте… не слишком? )
Что реализуется двумя строчками? о_О. Сетевое взаимодействие приложения и мемкеша или шардинг?
Шардинг можно и в одну уложить :) Я же имел ввиду именно библиотеки типа redis.io/clients
Шардинг. Вы правы, я нет. Видимо думал о чём-то своём… :)
UFO just landed and posted this here
Вот введут то чтотут обещают, будут использоваться сетевые протоколы, забудете о былой скорости :)
UFO just landed and posted this here
Если не тайна, можно узнать сколько там конкретно миллисекунд в ожидании ответа от redis и в выполнении php кода? Сколько съедают у вас запросы по сети (не работа самого redisа)?
UFO just landed and posted this here
… и так и не отписался… А ведь любопытно же.
Что реализуется двумя строчками? о_О. Сетевое взаимодействие приложения и мемкеша или шардинг?
Шардинг можно и в одну уложить :) Я же имел ввиду именно библиотеки типа redis.io/clients
НЛО подчисти плиз, я промахнулся
UFO just landed and posted this here
А вот как решить такую задачу редисом: нужно считать кол-во хитов поста за последние n дней?
Пока решил делать HINCRBY hits <post_id>:<timestamp> 1 и агрегировать этот хешлист, с подчищением протухших записей. Но все равное хешлист распухает и единственно решение это дробить таймстамп (хиты за 10/20/30… мин), теряя тем самым точность статистики (хотя и не нужна высокая точность).
Нужно дробить время, если за последние n дней, то до дней. И надо определиться с вопросом прежде, чем на него отвечать. Если вопрос «А вот как решить такую задачу редисом: нужно считать кол-во хитов поста за последние n дней?», то дальнейший рассуждения о точности выглядят неуместными.

P.S. Если хочется много статистики, то самый эффективный способ — использовать битовые маски. Есть реализация для питона.
Sign up to leave a comment.

Articles