Slide 1

Slide 1 text

маленький помощник больших приложений Андрей Савченко Aejis

Slide 2

Slide 2 text

Что такое Redis? Key-value хранилище Publish-subscribe сервер

Slide 3

Slide 3 text

Особенности Высокая скорость Персистентность данных Транзакции, репликация

Slide 4

Slide 4 text

Типы данных Строка (String) Хеш (Hash) Список (List) Множество (Set) Упорядоченное множество (Sorted set)

Slide 5

Slide 5 text

Клиенты ActionScript, C, C#, C++, Clojure, Common Lisp, Erlang, Go, Haskell, haXe, Io, Java, Lua, Node.js, Objective-C, Perl, PHP, Python, Ruby, Scala, Smalltalk, Tcl

Slide 6

Slide 6 text

Cтроки SET testkey “Hello” GET testkey MSET key1 “Hello” key2 “world” SET counter 1 INCR counter GET counter #=> “2”

Slide 7

Slide 7 text

Xеши HSET test key1 “Hello” HSET test key2 “World” HGET test key2 #=> “World” HGETALL test #=> “key1” “Hello” “key2” “World”

Slide 8

Slide 8 text

Списки RPUSH test “zero” RPUSH test “one” RPUSH test “two” LRANGE test 1 2 #=> “one” “two”

Slide 9

Slide 9 text

Множества SADD users “andrey” SADD users “dima” SCARD users #=> 2 SISMEMBER users “andrey” #=> 1 SISMEMBER users “gleb” #=> 0

Slide 10

Slide 10 text

Практическое применение

Slide 11

Slide 11 text

Кеши, сессии Инвалидация по времени SET a18f045 “cache content” EXPIRE a18f045 100

Slide 12

Slide 12 text

Кеши, сессии Инвалидация по признаку SET a18b045 “cache content” SET d98f0c9 “cache content” SADD cond1 a18b045 SADD cond1 d98f0c9 SMEMBERS cond1 DEL {result of smembers}

Slide 13

Slide 13 text

Хранение несвязанных (малосвязанных) данных {user_id = 1} HSET settings:1 receive_emails “1” HSET settings:1 records_per_page “20” HSET settings:1 preffered_syntax “markdown” HGETALL settings:1

Slide 14

Slide 14 text

Сбор статистики {post_id=42} INCR posts:42 GET posts:42 # How many views/votes? ZINCRBY posts 1 42 ZSCORE posts 42 # How many views/votes? ZREVRANGE posts O 9 # TOP-10 posts ZREVRANGE posts O 9 WITHSCORES # TOP-10 with views/votes quantity

Slide 15

Slide 15 text

Связь между демонами Web-application Websocket server Async jobs server

Slide 16

Slide 16 text

Связь между демонами # Websocket server: SUBSCRIBE messages # Async jobs server: SUBSCRIBE jobs # Web-application: PUBLISH jobs “videos:12:mpeg:ogg” PUBLISH messages “Video encoding #12 started” # Async jobs server: PUBLISH messages “Video encoding #12 finished”

Slide 17

Slide 17 text

Построение простых графов # User 1 adds user 5 to friends SADD users:1:friends 5 SADD users:5:friend_of 1 ... # Get user 5 friends SMEMBERS users:5:friends # Get user 5 mutual friends SCARD users:5:friends users:5:friend_of # Get common friens of user 5 and 7 SCARD users:5:friends users:7:friends # Are user 7 friend of user 5? SISMEMBER users:5:friends 7

Slide 18

Slide 18 text

Вопросы? [email protected] twitter.com/ptico redis.io/commands