redis
DESCRIPTION
Devclub presentation, 11.10.11TRANSCRIPT
маленький помощник больших приложений
Андрей Савченко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, Perl, PHP, Python,
Ruby, Scala, Smalltalk, Tcl
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 cond1 d98f0c9SMEMBERS cond1DEL {result of smembers}
Хранение несвязанных (малосвязанных)
данных{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
Сбор статистики{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 with views/votes quantity
Связь между демонами
Web-application
Websocketserver
Async jobs server
Связь между демонами# 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”
Построение простых графов
# 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
Вопросы?
twitter.com/ptico
redis.io/commands