Кролики
Кроли это не только ценный мех, но и
шерсть, когти и молоко!
Другая цитата
Redis не только
супер быстрое key-value storage! (хотя этого у
него не отберешь). Встроенные типы данных
дают возможность решать с помощью
Redis-а те задачи, с которыми очень трудно
справиться при использоваии других
хранилищ (а иногда и тех задач, которые
классически выполняются совсем не
хранилищами данных). В этой заметке
описано несколько ситуаций из реальной
практики разработки, когда Redis неожиданно
становился просто-таки спасением
Заманчиво,
конечно, воспользоваться такими
легкодоступными фишками.
Генерирование
уникального ID
…
Рейтинг...
* Какие 100
игроков имеют максимальное количество
очков? (а первые 1000? а с 100 по 200 для
пейджинга?)
* На каком
месте в рейтинге сейчас находится
конкретный игрок?
* Какие 100
игроков имеют максимальное количество
очков за вчерашний день?
Скажу сразу,
на все эти вопросы может ответить и
MySQL. Реально может. В первом случае это
ORDER BY + LIMIT, во втором - COUNT(id) + WHERE score > (
SELECT score WHERE id = id ). Но. Это все тяжелые и
медленные запросы
…
Операции,
связанные с анализом временных промежутков
* при получении
новой точки, смотрим текущий маршрут
* достаем из
этого маршрута последнюю точку
*десериализируем,
вычисляем разницу по времени
* если времени
прошло меньше, чем нужно - добавляем,
больше - новый маршрут
И эта схема
вполне себе будет работать. Но можно ее
значительно упростить и ускорить,
передав ответственность за вычисление
разницы по времени на Redis! Как? Обычным
Expire. Установим время жизни ключа текущего
маршрута в 300 секунд, а потом просто
будем "спрашивать" у Redis-а: существует
или нет текущий маршрут
Вполне
заковыристую логику можно реализовать,
пользуясь фишками Redis.
original post http://vasnake.blogspot.com/2013/03/blog-post.html
original post http://vasnake.blogspot.com/2013/03/blog-post.html
Комментариев нет:
Отправить комментарий