Можно было бы тупо послать матчасть учить, да ладно не буду :-)
«Memcached хранит в памяти только ключ -> значение.
Смысл же Redis хранить ключ -> (значение1; значение2;…; значениеN). В основном, конечно.»
Memcached предназначен для кеширования, а редис для персистент хранения. Они вообще то этим отличаются. В основном :-)
И это принципиально разные продукты и использовать их нужно каждый для своих задач.
«Что вы тут предлагаете сравнивать? Сколько каждый тратит на выборку из памяти? Наверное, одинаково, если память одинаковая. „
Здесь не сдержусь — матчасть подучите. В части конкурентного доступа из разных тредов, что и когда лочится, как обеспечивается атомарность операций и вообще кто и чего делает. Где ботленек у кого. Что делает мемкешед я знаю, что делает редис — нет. Вот только редис в любом случае делает больше…
“По-моему, делать бенчмарк довольно глупо в том смысле, что вы будете сравнивать молоток с циркулярной пилой. Это немного разные инструменты по своей природе. Хотя циркулярной пилой можно попробовать забивать гвозди, а молотком попробовать пилить доски.»
Если бы вы были хотя бы немного внимательны, то наверняка заметили бы одну деталь. Мой пост был ответом на утверждение:
«достойная замена memcached, спасибо»
Под заменой заменой я понимаю продукт который умеет все, что умеет заменяемый как минимум не хуже и дополнительные возможности. В данном случае это не так. Нет данных по производительности и отсутствует LRU, который вообще то в редисе как бы и не к чему :-)
Вот только если редис вместо memcached использовать, то LRU руками городить нужно, а это я вам скажу дело не очень благодарное. Но нужное, особенно в свете известной проблемы редиса со свапом.
Если бы вы адресовали утверждение
«Это немного разные инструменты по своей природе. Хотя циркулярной пилой можно попробовать забивать гвозди, а молотком попробовать пилить доски.»
первому посту, это было бы абсолютно логично, а так, если выражаться политкорректно — это глупость.
«Кстати, и наверное количество плюсов на вашей комментарии, естественно незаслуженное, как раз отражает реальность того, что люди не видят дальше своего носа. Вот он хвалит мемкеш, а я его знаю. Плюс ему. Это так, философское :) „
Философ из вас тоже не очень. Найти в моем посте то что мне нравится или не нравится. Воображение у вас однако :-)
Мне к примеру в мемкешед тоже кое что не нравится. Могли бы к примеру при set'е cas отдавать. Причем реализовать это не так уж и сложно. Все примочки с тегированием нафиг бы были не нужны. Вот только не делают почему то :-(
Append Only File нормально работает?
У него принцип — после снапшопа накапливать бинлоги, потом полный снапшот и по кругу, или апдейтит снапшоп на основе бинлогов параллельным тредом?
Как выглядит %id во время создания/апдейта снапшота?
Мы пока используем старый вариант («снапшоты») и Append Only File еще не тестировали.
Схема следующая: ведется бинлог изменений, и при старте редиса изменения из него подсасываются в базу. Подробнее об этом можно почитать в вики проекта.
Плюсы этой схемы — при падении редиса при обычной схеме вы теряли данные которые были добавлены в промежуток снапшота. В данном случае вы не теряете данные.
Минусы — размер бин лога растет, и сейчас у редиса нету встроенных средств ротации, для этого используется комманда BGREWRITEAOF.
Мне кажется что был бы очень полезен гибридный вариант и автоматическая ротация лога с настройками в конфиге.
Таки хотелось бы узнать, в каких реальных проектах используется Redis, как при этом выглядит реальный код, и как лучше проектировать для такого типа БД (а то все привыкли к реляционным)?
Ну я же не об этом спросил.
Победные заявления на сайте и реальный опыт хабровчан — разные вещи.
А вот меня и интересует реальный код на любой платформе. Пример из жизни.
Чем логика взаимодействия отличается от релационных БД? Каковы неочевидные особенности?
Вот такой бы пример разобрать по-русски, в сравнении с традиционной «мускульной» логикой. И указать, где же те весомые плюсы, что должны оправдать изучение новой технологии и миграцию на неё.
переписал часть своего сервиса под редис — не могу нарадоваться :) Долго не мог привыкнуть к нерелеационному мышлению :) но в итоге теперь думаю нафиг этот монстр МуСКуЛ надо вообще!?
не совсем понятен вопрос.
PDO+SQLite в класическом исполнении медленее ровно настолько, насколько медленнее обращение к диску чем к памяти.
если же PDO+SQLite (in MEMORY only) тогда надо придумывать механизмы сохранения данных на диск, дабы не потерять данные при краше.
Добрый день, я абсолютный новичок в использовании Redis. Поставил его впервые и более менее познакомился с ним после прочтения этой статьи.
Простое подключение к серверу и получение значения строкового скалярного значения ключа занимает 8-10 мс.
Это довольно много. Например, самодельная система хранения сериализованных значений в файлах делает это примерно в 100 раз быстрее.
Подскажите, пожалуйста, это нормальная ситуация для redis? И можно ли как-то ускорить? Буду благодарен за советы и ссылки.
Обновились Redis 1.2.1 и PHP клиент Rediska 0.3.0