Записки программиста, обо всем и ни о чем. Но, наверное, больше профессионального.

2013-03-01

Кролики — это не только ценный мех

Кролики
Кроли это не только ценный мех, но и шерсть, когти и молоко!

Другая цитата

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

Комментариев нет:

Отправить комментарий

Архив блога

Ярлыки

linux (241) python (191) citation (186) web-develop (170) gov.ru (159) video (124) бытовуха (115) sysadm (100) GIS (97) Zope(Plone) (88) бурчалки (84) Book (83) programming (82) грабли (77) Fun (76) development (73) windsurfing (72) Microsoft (64) hiload (62) internet provider (57) opensource (57) security (57) опыт (55) movie (52) Wisdom (51) ML (47) driving (45) hardware (45) language (45) money (42) JS (41) curse (40) bigdata (39) DBMS (38) ArcGIS (34) history (31) PDA (30) howto (30) holyday (29) Google (27) Oracle (27) tourism (27) virtbox (27) health (26) vacation (24) AI (23) Autodesk (23) SQL (23) humor (23) Java (22) knowledge (22) translate (20) CSS (19) cheatsheet (19) hack (19) Apache (16) Klaipeda (15) Manager (15) web-browser (15) Никонов (15) functional programming (14) happiness (14) music (14) todo (14) PHP (13) course (13) scala (13) weapon (13) HTTP. Apache (12) SSH (12) frameworks (12) hero (12) im (12) settings (12) HTML (11) SciTE (11) USA (11) crypto (11) game (11) map (11) HTTPD (9) ODF (9) Photo (9) купи/продай (9) benchmark (8) documentation (8) 3D (7) CS (7) DNS (7) NoSQL (7) cloud (7) django (7) gun (7) matroska (7) telephony (7) Microsoft Office (6) VCS (6) bluetooth (6) pidgin (6) proxy (6) Donald Knuth (5) ETL (5) NVIDIA (5) Palanga (5) REST (5) bash (5) flash (5) keyboard (5) price (5) samba (5) CGI (4) LISP (4) RoR (4) cache (4) car (4) display (4) holywar (4) nginx (4) pistol (4) spark (4) xml (4) Лебедев (4) IDE (3) IE8 (3) J2EE (3) NTFS (3) RDP (3) holiday (3) mount (3) Гоблин (3) кухня (3) урюк (3) AMQP (2) ERP (2) IE7 (2) NAS (2) Naudoc (2) PDF (2) address (2) air (2) british (2) coffee (2) fitness (2) font (2) ftp (2) fuckup (2) messaging (2) notify (2) sharepoint (2) ssl/tls (2) stardict (2) tests (2) tunnel (2) udev (2) APT (1) Baltic (1) CRUD (1) Canyonlands (1) Cyprus (1) DVDShrink (1) Jabber (1) K9Copy (1) Matlab (1) Portugal (1) VBA (1) WD My Book (1) autoit (1) bike (1) cannabis (1) chat (1) concurrent (1) dbf (1) ext4 (1) idioten (1) join (1) krusader (1) license (1) life (1) migration (1) mindmap (1) navitel (1) pneumatic weapon (1) quiz (1) regexp (1) robot (1) science (1) seaside (1) serialization (1) shore (1) spatial (1) tie (1) vim (1) Науру (1) крысы (1) налоги (1) пианино (1)