Какой тип данных лучше всего подходит для хранения очков в Redis?

Рейтинг: 0Ответов: 1Опубликовано: 21.03.2015

Есть две кнопки на веб-странице: like иunlike.
Когда пользователь нажимает на эти кнопки, посылается запрос, подсчитывающий количество кликов.

Что является лучшим и удобным из типов в редисе, чтобы сохранить подсчет?

У меня есть несколько вариантов:

- Использование key.   - Использовать hash со счетом одного поля и ключ кнопки ID.   - Использовать sortet sets.

Проблема в том, что нужно показать имена пользователей, которые кнопки и количество кликов каждой кнопки.

Если делать так, для каждой записи будет создаваться отдельный set, что не удобно:

$key = 'reposts:news:200';
$time = time();
$this->redis->zadd($key, $time, array());

Ответы

▲ 1Принят

Можно использовать SET.

В качестве ключа делать button_id, а в список добавлять JSON объект с данными о пользователе. Таким образом записи в Redis будут иметь следующий вид

button1:
    {"user_id":"1", "name":"Pupkin"}
    {"user_id":"101", "name":"Vaskin"}
    ....
    {"user_id":"11", "name":"Puper"}

Узнать кол-во нажатий можно легко узнать подсчитав кол-во элементов в set.