маленький помощникбольших приложений     Андрей Савченко          Aejis
Что такое Redis?Key-value хранилищеPublish-subscribe сервер
ОсобенностиВысокая скоростьПерсистентность данныхТранзакции, репликация
Типы данныхСтрока (String)Хеш (Hash)Список (List)Множество (Set)Упорядоченное множество (Sorted set)
КлиентыActionScript, C, C#, C++, Clojure, Common Lisp, Erlang, Go, Haskell,   haXe, Io, Java, Lua, Node.js,  Objective-C, ...
CтрокиSET testkey “Hello”GET testkeyMSET key1 “Hello” key2 “world”SET counter 1INCR counterGET counter #=> “2”
XешиHSET test key1 “Hello”HSET test key2 “World”HGET test key2 #=> “World”HGETALL test #=> “key1” “Hello” “key2” “World”
СпискиRPUSH test “zero”RPUSH test “one”RPUSH test “two”LRANGE test 1 2 #=> “one” “two”
МножестваSADD users “andrey”SADD users “dima”SCARD users #=> 2SISMEMBER users “andrey” #=> 1SISMEMBER users “gleb” #=> 0
Практическое применение
Кеши, сессии        Инвалидация по времениSET a18f045 “cache content”EXPIRE a18f045 100
Кеши, сессии       Инвалидация по признакуSET a18b045 “cache content”SET d98f0c9 “cache content”SADD cond1 a18b045SADD con...
Хранение несвязанных  (малосвязанных)       данных{user_id = 1}HSET settings:1 receive_emails “1”HSET settings:1 records_p...
Сбор статистики{post_id=42}INCR posts:42GET posts:42 # How many views/votes?ZINCRBY posts 1 42ZSCORE posts 42 # How many v...
Связь между демонами                    Websocket                     server  Web-application                    Async job...
Связь между демонами# Websocket server:SUBSCRIBE messages# Async jobs server:SUBSCRIBE jobs# Web-application:PUBLISH jobs ...
Построение простых            графов# User 1 adds user 5 to friendsSADD users:1:friends 5SADD users:5:friend_of 1...# Get ...
Вопросы?redis.io/commands andrey@aejis.eutwitter.com/ptico
Upcoming SlideShare
Loading in …5
×

Redis

1,572 views
1,499 views

Published on

Devclub presentation, 11.10.11

Published in: Technology

Redis

  1. 1. маленький помощникбольших приложений Андрей Савченко Aejis
  2. 2. Что такое Redis?Key-value хранилищеPublish-subscribe сервер
  3. 3. ОсобенностиВысокая скоростьПерсистентность данныхТранзакции, репликация
  4. 4. Типы данныхСтрока (String)Хеш (Hash)Список (List)Множество (Set)Упорядоченное множество (Sorted set)
  5. 5. Клиенты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
  6. 6. CтрокиSET testkey “Hello”GET testkeyMSET key1 “Hello” key2 “world”SET counter 1INCR counterGET counter #=> “2”
  7. 7. XешиHSET test key1 “Hello”HSET test key2 “World”HGET test key2 #=> “World”HGETALL test #=> “key1” “Hello” “key2” “World”
  8. 8. СпискиRPUSH test “zero”RPUSH test “one”RPUSH test “two”LRANGE test 1 2 #=> “one” “two”
  9. 9. МножестваSADD users “andrey”SADD users “dima”SCARD users #=> 2SISMEMBER users “andrey” #=> 1SISMEMBER users “gleb” #=> 0
  10. 10. Практическое применение
  11. 11. Кеши, сессии Инвалидация по времениSET a18f045 “cache content”EXPIRE a18f045 100
  12. 12. Кеши, сессии Инвалидация по признакуSET a18b045 “cache content”SET d98f0c9 “cache content”SADD cond1 a18b045SADD cond1 d98f0c9SMEMBERS cond1DEL {result of smembers}
  13. 13. Хранение несвязанных (малосвязанных) данных{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
  14. 14. Сбор статистики{post_id=42}INCR posts:42GET posts:42 # How many views/votes?ZINCRBY posts 1 42ZSCORE posts 42 # How many views/votes?ZREVRANGE posts O 9 # TOP-10 postsZREVRANGE posts O 9 WITHSCORES # TOP-10 withviews/votes quantity
  15. 15. Связь между демонами Websocket server Web-application Async jobs server
  16. 16. Связь между демонами# 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”
  17. 17. Построение простых графов# User 1 adds user 5 to friendsSADD users:1:friends 5SADD users:5:friend_of 1...# Get user 5 friendsSMEMBERS users:5:friends# Get user 5 mutual friendsSCARD users:5:friends users:5:friend_of# Get common friens of user 5 and 7SCARD users:5:friends users:7:friends# Are user 7 friend of user 5?SISMEMBER users:5:friends 7
  18. 18. Вопросы?redis.io/commands andrey@aejis.eutwitter.com/ptico

×