Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Какво става лесно
с Redis?
Свилен Иванов
VarnaConf
20 юли 2013
За мен
2 / 178
● Обича да програмира
● Знае Уорд, Ексел,
Интернет...
● ... но предпочита Java,
Perl, JavaScript, Ruby...
●...
Какво е Redis?
● Сървър за съхранение на key/value данни
● В оперативната памет
– с възможност за периодично синхронизиран...
Видове стойности
4 / 178
Основни команди (1)
● SET/GET или MSET/MGET
● INCR/INCRBY, DECR/DECRBY
– Приложение: броячи
● GETSET – записва нова стойно...
Приложениe: заключване
● Снихронизация между разпределени процеси
● Получаване:
– SETNX lock.foo
<current Unix time + lock...
Ключове и стойности
● Ключове
– няма конкретни изисквания
– пример: типът на обекта, идентификатор и/или друга
информация,...
Тип: list (списък)
Тип: list (списък)
Приложение на списъците
● Опашка за асинхронно изпълнение на
задачи (job queue)
– RPUSH, LPOP
– BRPUSH, BLPOP: блокиращи а...
Тип: set (множество)
Тип: set (множество)
● Операции върху множествата
– SINTER – сечение
● SINTERSTORE
– SUNION – обединение
● SUNIONSTORE
– S...
Приложение на множествата
● Създаване на връзки между обекти
(примерно followers, followees)
– SADD, SREM с ID на потребит...
Тип: подредени множества
(sorted sets)
● Също като Set, но към всеки елемент се
присвоява „тегло“, по което се сортира
● П...
Тип: подредени множества
(sorted sets)
● ZRANK, ZREVRANK – на кое място се
намира в класацията
● ZREMRANGEBY* - премахва е...
Тип: хеш таблица (hash)
Администриране
Администриране (1)
● Надеждно съхранение на данните
– пълно изображение на паметта (snapshoting)
– всяка промяна, в append...
Администриране (2)
● Ако оперативната памет свърши?
– добавяне на още памет
– sharding
● Автоматичен failover
– инструмент...
Демонстрация
Въпроси?
Redis by Svilen Ivanov
Upcoming SlideShare
Loading in …5
×

Redis by Svilen Ivanov

552 views

Published on

Redis talk by Svilen Ivanov at VarnaConf 2013

  • Be the first to comment

  • Be the first to like this

Redis by Svilen Ivanov

  1. 1. Какво става лесно с Redis? Свилен Иванов VarnaConf 20 юли 2013
  2. 2. За мен 2 / 178 ● Обича да програмира ● Знае Уорд, Ексел, Интернет... ● ... но предпочита Java, Perl, JavaScript, Ruby... ● Знае разликата между Java и JavaScript svilen.ivanov@gmail.com @buhtum
  3. 3. Какво е Redis? ● Сървър за съхранение на key/value данни ● В оперативната памет – с възможност за периодично синхронизиране с диска* ● Стойностите, освен string, могат да бъдат: – List (списък) – Hash (хеш таблица) – Set (множество без повторениe) – Sorted Set (подредено множество без повторение) ● Изпълнение на команди в транзакция 3 / 178
  4. 4. Видове стойности 4 / 178
  5. 5. Основни команди (1) ● SET/GET или MSET/MGET ● INCR/INCRBY, DECR/DECRBY – Приложение: броячи ● GETSET – записва нова стойност, връща старата – Приложение: нулиране на брояч ● SETNX – записва стойност, ако няма такъв ключ – Приложение: заключване ● SETBIT, BITCOUNT – Приложение: статистики в реално време
  6. 6. Приложениe: заключване ● Снихронизация между разпределени процеси ● Получаване: – SETNX lock.foo <current Unix time + lock timeout + 1> ● Проверка: – GET lock.foo + проверка дали не е изтекла ● Освобождаване – GETSET lock.foo <current Unix timestamp + lock timeout + 1> + проверка дали не е изтекла – DEL
  7. 7. Ключове и стойности ● Ключове – няма конкретни изисквания – пример: типът на обекта, идентификатор и/или друга информация, по която се налага да се търси – user:123, logins:2013-03-31, user:123:followers, etc. ● Стойности – обикновени низове (конвертирани до байтове) – сериализиран обект: JSON, Protocol Buffers...
  8. 8. Тип: list (списък)
  9. 9. Тип: list (списък)
  10. 10. Приложение на списъците ● Опашка за асинхронно изпълнение на задачи (job queue) – RPUSH, LPOP – BRPUSH, BLPOP: блокиращи аналози ● Реализация на timeline – LPUSH за добавяне – LRANGE за извличане на последните N поста ● „Recently viewed“ – LPUSH – LTRIM n – за премахване на излишните дни
  11. 11. Тип: set (множество)
  12. 12. Тип: set (множество) ● Операции върху множествата – SINTER – сечение ● SINTERSTORE – SUNION – обединение ● SUNIONSTORE – SDIFF – разлика ● SDIFFSTORE
  13. 13. Приложение на множествата ● Създаване на връзки между обекти (примерно followers, followees) – SADD, SREM с ID на потребителя ● Tagging – По едно множество за всеки tag: „tag:linux“, „tag:programming“, „tag:ruby“ – Всяко множество съхранява ID на статия – SINTER „tag:linux“, „tag:programming“
  14. 14. Тип: подредени множества (sorted sets) ● Също като Set, но към всеки елемент се присвоява „тегло“, по което се сортира ● Приложение: класации Stefan1 Peter3 Svilen4 ZADD leaderboard 2 Ivan ZRANGE leaderboard 0 -1 1) "Stefan" 2) "Ivan" 3) "Peter" 4) "Svilen" Ivan2 Stefan1 Peter3 Svilen4
  15. 15. Тип: подредени множества (sorted sets) ● ZRANK, ZREVRANK – на кое място се намира в класацията ● ZREMRANGEBY* - премахва елемент от класацията – RANK – SCORE ● ZINCRBY – увеличава теглото на даден елемент
  16. 16. Тип: хеш таблица (hash)
  17. 17. Администриране
  18. 18. Администриране (1) ● Надеждно съхранение на данните – пълно изображение на паметта (snapshoting) – всяка промяна, в append-only файл – комбинирано ● Репликация от тип „master-slave“ – Използва се за мащабируемост (scalability) – Освобождаване на „master“ сървъра от записване на информацията на диска
  19. 19. Администриране (2) ● Ако оперативната памет свърши? – добавяне на още памет – sharding ● Автоматичен failover – инструмент: sentinel ● Позволява upgrade без downtime – чрез репликация ● Конфигуриране без рестартиране
  20. 20. Демонстрация
  21. 21. Въпроси?

×