Redis — это очень быстрая key-value база данных. Может использоваться как memcached, но отличие от последней в том, что Redis сохраняет свои данные на диск, то есть может быть использован для хранения данных (что мы успешно и делаем). Основные отличии от других собратьев это возможность хранить более сложные структуры данных — списки и «сеты» и атомарные операции с ними.
Так как на хабре уже есть обзор Redis, не вижу смысла продолжать. Перейду к самой «Редиске».
Приветствую читателей. Сейчас я веду разработку собственного фреймворка, основанного, в противовес главенствующей сейчас модели MVC, на базе сигнальной архитектуры (signal/slot). Пока он проходит боевую обкатку в нашем стартапе, и за это время я понял, что просто библиотеки мало — реальные задачи и виденье будущего показывает, что необходим разный функционал, но объединенный одной темой — обработка и доставка информации множеству клиентов в реальном времени (да, в чем-то схоже с Comet-ом, он там тоже есть). Поэтому решено было попробовать реализовать основной компонент — очередь сообщений, которая бы стала основной для следующих проектов, быстрой, гибкой и масштабируемой.
Что получилось? Альфа-версия SignalsyMQ — очередь сообщений на базе PHP/Redis/Zend Framework.
Redis — это очень быстрая key-value база данных. Может использоваться как memcached, но отличие от последней в том, что Redis сохраняет свои данные на диск, то есть может быть использован для хранения данных (что мы успешно и делаем). Основные отличии от других собратьев — более сложные структуры данных (списки, коллекции) и атомарные операции с ними. Читайте более подробный обзор Redis на Хабре.
Good news every one! Мы хорошенько потрудились чтобы сделать этот несовершенный мир чуточку лучше :). Для тех кто не знаком с предметом разговора, сначала стоит прочитать мои предыдущие посты о замечательной key-value базе Redis и о нашем удобном PHP клиенте Rediska (далее Редиска), а также погулять по его домашней страничке.
Уже пол года мы успешно обкатываем Redis на наших проектах (на самом популярном в среднем 130 000 уникальный посетителей в день и 1 500 000 просмотров) и не можем нарадоваться. По ходу разработки проектов, да и честно говоря, чтобы не ударить в грязь лицом перед вами, дорогие мои, мы старались довести Редиску до ума.
Дорогие друзья! На прошлой неделе вышел стабильный релиз чудесной key-value базы Redis версии 2.0 с внушающим количеством нововведений. Эта новость особенно нас обрадовала, так как мы уже год используем Redis в наших нагруженных проектах и впечатления только положительные. Мы обновили PHP клиент Rediska, добавив поддержку новых возможностей.
Эпизод №6 подкаста о разработке на PHP в общем, и используя Zend Framework в частности.
В первый раз приглашен гость — Никита Грошин из Geometria Lab. Попробовали поговорить о том, чем занимается компания в которой он работает: Geometria.ru, Geometria.me, Rediska.
Начну с того, что наш проект находится на начальной стадии развития, а его запуск планируется на 1е ноября. И, чтобы сразу отсечь всю возможную критику касаемо преждевременной оптимизации, скажу, что перед командой была поставлена задача разработать приложение, справляющееся с резкими скачками нагрузки (от 1000 до 50000 и т. п.). В связи с этим было решено закладывать хорошо масштабируемую архитектуру, позволяющую легко и быстро увеличивать производительность системы за счет аппаратной части (по принципу scale-out).
Сегодня мы поговорим о блокировках и покажем свою реализацию. Каждый из разработчиков не раз сталкивался с проблемой, когда необходимо обеспечить однопоточное использование какого-либо ресурса.
Часто для обеспечения такой блокировки используется схема с созданием специального файла, наличие которого определяет факт занятости того или иного ресурса.
Такой подход достаточно прост в реализации, но имеет ряд недостатков. Среди недостатков можно выделить:
отсутствие 100% гарантии блокировки при большом количестве потоков;
блокировка работает в рамках одного сервера;
и самое неприятное – если процесс, который поставил блокировку почему-то её не снял, то остальные процессы так и не смогут получить доступ к этому ресурсу, пока вручную или каким-то другим способом эта блокировка не будет снята.
Когда нужны блокировки?
Каждый раз потребности разные, в основном они сводятся к исключению одновременных повторных действий, обеспечению последовательной работы с каким-то ресурсом, обеспечению равномерной нагрузки.
Работаю с Redis относительно недавно и вот возникла необходимость изменения одного ключа несколькими потоками одновременно. Для работы с Redis в php использую клиент Rediska. Еще когда читал мануал по Rediska видел раздел про транзакции, а сегодня пришло время почитать внимательнее.