Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Сравнение СУБД Новый топик    Ответить
 Посоветуйте альтернативу memcached  [new]
swen.son
Member

Откуда:
Сообщений: 4
Нужен in-memory LRU store, с возможностью конфигурирования TTL для отдельных элементов, и объема выделяемой памяти на весь кэш. Дополнительный write-through на диск, в качестве бэкинга - тоже подойдет.

Ожидаемая нагрузка: 150-200 записей в секунду, 150-200 чтений в секунду.

Сейчас используем memcached, но с ним проблемы при сохранении новых данных, когда кэш на 100% полон, а новые данные такие, что не укладываются ни в один slab (bucket).

Возможно подойдет Redis, но пока не пробовали. Какие еще можно посмотреть варианты?
11 мар 15, 15:01    [17370409]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте альтернативу memcached  [new]
swen.son
Member

Откуда:
Сообщений: 4
Как дополнение: распределенный кэш не нужен, только локальный
11 мар 15, 15:02    [17370428]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте альтернативу memcached  [new]
Вася Уткин
Guest
swen.son
Как дополнение: распределенный кэш не нужен, только локальный

MySQL (таблицы с типами: Memory, MyISAM или MariaDB) + API (SocketHandler или Memcached-plugin) - тянет до 700 000 запросов в секунду, даже на ноутбуке с SATA-SSD диском.
Одновременно можно обращаться и как к Memcached (MySQL Memcached-plugin), и как к SQL (PHP/C/C++/.Net/Java/Python через MySQL Connectors).
Если не нужно 700 000 запросов в секунду, можно и логируемые ACID-движки использовать (ExtraDB, InnoDB), но если юзать тупо как key-value, то из ACID увидите только D (Durability) и скорость на порядок поменьше.

есть - in-memory LRU store
есть - с возможностью конфигурирования объема выделяемой памяти на весь кэш
есть - Дополнительный write-through на диск
есть - Ожидаемая нагрузка: 150-200 записей в секунду, 150-200 чтений в секунду.

"с возможностью конфигурирования TTL для отдельных элементов" - это можно понимать по разному.
Как вариант, MySQL (движок Memory), в каждой таблице дополнительное поле timestamp и по таймеру EVENT удалять старые:

CREATE TABLE my_table (
key VARCHAR(32),
value VARCHAR(65536),
filed_timestamp TIMESTAMP,
PRIMARY KEY (key)
) ENGINE=MEMORY;

TIMESTAMP по умолчанию NOT NULL, а его значение по умолчанию равно NOW().

CREATE EVENT addTimer 
ON SCHEDULE EVERY 2 SECOND 
DO 
DELETE FROM my_table WHERE filed_timestamp + TTL < now() 
11 мар 15, 17:04    [17371418]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте альтернативу memcached  [new]
swen.son
Member

Откуда:
Сообщений: 4
MySQL вариант не нравится, ввиду того что хотелось бы сериализовать java-объекты целиком, не заморачиваясь с полями и типизацией.
Так же желательно, чтобы это был вариант hash map, с константным временем чтения по ключу.

Понимаю, что на MySQL можно это все сделать, но слишком много костылей.
12 мар 15, 09:43    [17373461]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте альтернативу memcached  [new]
Вася Уткин
Guest
swen.son
MySQL вариант не нравится, ввиду того что хотелось бы сериализовать java-объекты целиком, не заморачиваясь с полями и типизацией.
Так же желательно, чтобы это был вариант hash map, с константным временем чтения по ключу.

Понимаю, что на MySQL можно это все сделать, но слишком много костылей.

Обычно это подходит тем, кто уже использует MySQL, и для ускорения хочет добавить ещё один лишний слой в виде memcache/redis.
В MySQL есть hash map - хэш индексы CREATE INDEX id_index USING HASH и есть BLOB чтобы хранить объект целиком не заморачиваясь с полями и типизацией, но BLOB-а нет в движке MEMORY :)
Т.е. если достаточно 700 000 запросов в секунду, то можно обойтись и не in-memory.
12 мар 15, 13:35    [17374988]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте альтернативу memcached  [new]
Serge555
Guest
swen.son
MySQL вариант не нравится, ввиду того что хотелось бы сериализовать java-объекты целиком, не заморачиваясь с полями и типизацией.
Так же желательно, чтобы это был вариант hash map, с константным временем чтения по ключу.


http://hazelcast.com
27 мар 15, 07:47    [17438225]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте альтернативу memcached  [new]
Миранда
Member

Откуда:
Сообщений: 4
Serge555
swen.son
MySQL вариант не нравится, ввиду того что хотелось бы сериализовать java-объекты целиком, не заморачиваясь с полями и типизацией.
Так же желательно, чтобы это был вариант hash map, с константным временем чтения по ключу.


http://hazelcast.com

спасибо)
18 апр 15, 20:07    [17533974]     Ответить | Цитировать Сообщить модератору
 Re: Посоветуйте альтернативу memcached  [new]
Alexey Kuznetsov
Member

Откуда: Krasnoyarsk
Сообщений: 1141
swen.son
Нужен in-memory LRU store, ....

Apache Ignite - все есть из коропки + куча еще всякого.
2 июн 15, 21:51    [17722606]     Ответить | Цитировать Сообщить модератору
Все форумы / Сравнение СУБД Ответить