blog.ThrowCatch
Разработчики TC о нововведениях, программировании и тенденциях
  • Чем полезен Redis?

    Чем полезен Redis?

    Впервые я наткнулся на Redis пару месяцев назад в процессе поиска решения для одной специфической задачи. Почитал, посмотрел тесты и решил найти ему применение в архитектуре throwcatch.me.

    Что это такое?

    Надо отметить что Redis относится к семейству NoSQL баз данных. Redis — это высокопроизводительное нереляционное распределенное key-value хранилище данных. Например вы можете установить для ключа "surname_1992" в качестве значения строку "Smith". В отличие от Memcached, который может в любой момент удалить ваши данные, вытесняя старые записи новыми, Redis хранит информацию постоянно, таким образом он похож на MemcacheDB.

    Что он может?

    Redis поддерживает не только строки в качестве значений, но и более сложные структуры данных:

    • строки (string);
    • списки (lists);
    • коллекции/множества (sets);
    • упорядоченные коллекции/множества (sorted sets, начиная с версии 1.1);
    • хэши (hash, начиная с версии 1.2.6).

    Тип структуры данных определяет те операции, которые с ней могут быть произведены.

    Производительность

    Пожалуй это самый интересный момент. 110000 запросов SET в секунду, 81000 запросов GET в секунду на Linux-сервере начального уровня (тесты). Проверить производительность redis у себя на сервере вы можете с помощью утилиты redis-benchmark, которая создается при компилировании redis.

    Высокая скорость работы Redis обеспечивается тем, что данные хранятся в оперативной памяти и сохраняются на диск либо через равные промежутки времени, либо при превышении определённого количества не сохранённых запросов. Из этого вытекает, что используя Redis, вы можете потерять результаты нескольких последних запросов, что вполне приемлимо для большинства веб-приложений, учитывая, что обращение к Redis по скорости сравнимо с обращением к оперативной памяти. Тем не менее, потерь можно избежать через избыточность — Redis поддерживает неблокирующую master-slave репликацию.

    Единственным ограничением является ограниченность памяти. Разумеется все данные сохраняются из памяти на диск, дабы предотвратить их потерю. Но когда лимит памяти исчерпан, то поиск производится не в памяти, а на диске, что замедляет получение данных. Но это актуально только при очень большом количестве информации. Начиная с версии 1.2 можно включить особый режим Virtual Memory. Суть его заключается в том, что все ключи хранятся в памяти, а значения сохраняются на диск. Вот немного цифровых параметров:

    VM off: 300k keys, 4096 bytes values: 1.3G used
    VM on:  300k keys, 4096 bytes values: 73M used
    VM off: 1 million keys, 256 bytes values: 430.12M used
    VM on:  1 million keys, 256 bytes values: 160.09M used
    VM on:  1 million keys, values as large as you want, still: 160.09M used
    

    API

    На данный момент написано около 12-13 клиентских библиотек для различных языков. ПРотокол обмена очень простой, поэтому не составит труда написать свою собственную библиотеку.

    Опыт применения

    Мой опыт работы с Redis совсем небольшой. Несмотря на то, что throwcatch далеко не hightload проект, я решил интегрировать Redis в архитектуру. Почему бы не сэкономить на ресурсах, если это возможно?

    Применение #1

    В качестве эксперимента я написал бэкэнд к django для хранения сессий в redis. Специальных синтетических тестов не проводил.

    Применение #2

    Поскольку redis позволяет использовать различные структуры данных для хранения интересов пользователей. В redis создаётся два ключа interesting:user_id и ignored:user_id. Значениями ключей являются простые списки, состоящие из тегов. Таким образом удалось добиться снижения количества sql запросов к РСУБД.

    Перспективы

    Первые коммиты в репозиторий проекта были произведены ровно год назад, 22 марта 2009. Redis развивается очень динамично. Буквально каждую неделю появляются новые возможности, а коммиты в репозиторий производятся каждый день. Совсем недавно компания wmvare объявила о том, что будет финансировать разработчика redis.

    Лицензия и поддерживаемые платформы

    Redis — написан на ANSI C и работает на большинстве POSIX-систем (Linux, MacOS X, *BSD, Solaris). Он абсолютно бесплатен и распространяется под лицензией BSD.

    redis, nosql, сурбд, бд. Комментировать Опубликовано во вторник, 30-го марта 2010 в категории архитектура.
  • Новый ТС, новая архитектура

    Новый ТС, новая архитектура

    Как уже наверное многие пользователи заметили, ТС немного изменился в плане юзабилити, а так же претерпел значительные архитектурные изменения. Вот об архитектурных решениях и внутренностях я напишу несколько постов.

    Пожалуй надо обозначить несколько из них:

    • Чем полезен Redis
    • Дружественный OpenID
    • Jinja2 против django templates
    • Как не надо запускать проект

    Кстати, движек блога тоже обновился. Теперь можно использовать свои TC данные для авторизации.

    throwcatch, разработка. Комментировать Опубликовано в субботу, 20-го марта 2010 в категории размышления.
  • День программиста

    День программиста

    Уже много лет программисты отмечают в середине сентября свой профессиональный праздник.

    Теперь, согласно указу президента Российской Федерации, День программиста — официальный праздник в России. Теперь Россия единственная страна в мире, где День программиста празднуется официально.

    Поздравляю всех зарегистрированных пользователей throwcatch.me и тех, кто ещё присоединится к нам. Это наш с вами профессиональный праздник.

    программирование. Комментировать Опубликовано в воскресенье, 13-го сентября 2009 в категории размышления.
  • Переезд на новый сервер

    Переезд на новый сервер

    ThrowCatch переехал на новый сервер. К сожалению переезд оказался не гладким, поэтому возможны перебои в работе сайта.

    Теперь следить за новостями и информационными сообщениями можно зафоловив пользователя ThrowCatchMe

    hosting. Комментировать Опубликовано в четверг, 6-го августа 2009
  • Запущен блог

    Запущен блог

    Запустил блог. Стало невозможно следить за багрепортами и пожеланиями в разных вопросах и комментариях, поэтому лучше отписываться здесь в комментариях или в форму фидбека.

    Некоторые проблемы доставил троль. Честно говоря я просто не был готов к такому развитию событий. Система саморегуляции действенна и работает, но получился такой казус. Пока людей мало, она плохо функционирует, а у меня не было возможности пресечь его действия сразу.

    Часть багрепортов исправил, на всё сразу не хватает сил. Поэтому исправляю по мере в порядке приоритета.

    Блог запустил в срочном порядке, поэтому здесь тоже может быть не всё гладко, но я это исправлю.

    throwcatch. Комментировать Опубликовано в воскресенье, 26-го июля 2009
  • Войти или зарегистрироваться
  • Проекты
    • throwcatch.me — сайт вопросов и ответов для программистов
    • dzone.me — лучшие ссылки для программистов и не только
  • Свежие сообщения
    • Чем полезен Redis?
    • Новый ТС, новая архитектура
    • День программиста
    • Переезд на новый сервер
    • Запущен блог
  • Метки
    throwcatch  hosting  программирование  разработка  redis  nosql  сурбд  бд 
Дизайн, вёрстка и программирование
obout.ru
© 2009—2010 obout.ru