Download - Redis
![Page 1: Redis](https://reader033.vdocuments.us/reader033/viewer/2022042815/5580be9bd8b42ac6088b5253/html5/thumbnails/1.jpg)
маленький помощник больших приложений
Андрей СавченкоAejis
![Page 2: Redis](https://reader033.vdocuments.us/reader033/viewer/2022042815/5580be9bd8b42ac6088b5253/html5/thumbnails/2.jpg)
Что такое Redis?
Key-value хранилище
Publish-subscribe сервер
![Page 3: Redis](https://reader033.vdocuments.us/reader033/viewer/2022042815/5580be9bd8b42ac6088b5253/html5/thumbnails/3.jpg)
Особенности
Высокая скорость
Персистентность данных
Транзакции, репликация
![Page 4: Redis](https://reader033.vdocuments.us/reader033/viewer/2022042815/5580be9bd8b42ac6088b5253/html5/thumbnails/4.jpg)
Типы данных
Строка (String)
Хеш (Hash)
Список (List)
Множество (Set)
Упорядоченное множество (Sorted set)
![Page 5: Redis](https://reader033.vdocuments.us/reader033/viewer/2022042815/5580be9bd8b42ac6088b5253/html5/thumbnails/5.jpg)
Клиенты
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
![Page 6: Redis](https://reader033.vdocuments.us/reader033/viewer/2022042815/5580be9bd8b42ac6088b5253/html5/thumbnails/6.jpg)
CтрокиSET testkey “Hello”GET testkeyMSET key1 “Hello” key2 “world”
SET counter 1INCR counterGET counter #=> “2”
![Page 7: Redis](https://reader033.vdocuments.us/reader033/viewer/2022042815/5580be9bd8b42ac6088b5253/html5/thumbnails/7.jpg)
Xеши
HSET test key1 “Hello”HSET test key2 “World”HGET test key2 #=> “World”HGETALL test #=> “key1” “Hello” “key2” “World”
![Page 8: Redis](https://reader033.vdocuments.us/reader033/viewer/2022042815/5580be9bd8b42ac6088b5253/html5/thumbnails/8.jpg)
Списки
RPUSH test “zero”RPUSH test “one”RPUSH test “two”LRANGE test 1 2 #=> “one” “two”
![Page 9: Redis](https://reader033.vdocuments.us/reader033/viewer/2022042815/5580be9bd8b42ac6088b5253/html5/thumbnails/9.jpg)
Множества
SADD users “andrey”SADD users “dima”SCARD users #=> 2SISMEMBER users “andrey” #=> 1SISMEMBER users “gleb” #=> 0
![Page 10: Redis](https://reader033.vdocuments.us/reader033/viewer/2022042815/5580be9bd8b42ac6088b5253/html5/thumbnails/10.jpg)
Практическое применение
![Page 11: Redis](https://reader033.vdocuments.us/reader033/viewer/2022042815/5580be9bd8b42ac6088b5253/html5/thumbnails/11.jpg)
Кеши, сессииИнвалидация по времени
SET a18f045 “cache content”EXPIRE a18f045 100
![Page 12: Redis](https://reader033.vdocuments.us/reader033/viewer/2022042815/5580be9bd8b42ac6088b5253/html5/thumbnails/12.jpg)
Кеши, сессииИнвалидация по признаку
SET a18b045 “cache content”SET d98f0c9 “cache content”SADD cond1 a18b045SADD cond1 d98f0c9SMEMBERS cond1DEL {result of smembers}
![Page 13: Redis](https://reader033.vdocuments.us/reader033/viewer/2022042815/5580be9bd8b42ac6088b5253/html5/thumbnails/13.jpg)
Хранение несвязанных (малосвязанных)
данных{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
![Page 14: Redis](https://reader033.vdocuments.us/reader033/viewer/2022042815/5580be9bd8b42ac6088b5253/html5/thumbnails/14.jpg)
Сбор статистики{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
![Page 15: Redis](https://reader033.vdocuments.us/reader033/viewer/2022042815/5580be9bd8b42ac6088b5253/html5/thumbnails/15.jpg)
Связь между демонами
Web-application
Websocketserver
Async jobs server
![Page 16: Redis](https://reader033.vdocuments.us/reader033/viewer/2022042815/5580be9bd8b42ac6088b5253/html5/thumbnails/16.jpg)
Связь между демонами# 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”
![Page 17: Redis](https://reader033.vdocuments.us/reader033/viewer/2022042815/5580be9bd8b42ac6088b5253/html5/thumbnails/17.jpg)
Построение простых графов
# 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
![Page 18: Redis](https://reader033.vdocuments.us/reader033/viewer/2022042815/5580be9bd8b42ac6088b5253/html5/thumbnails/18.jpg)
Вопросы?
twitter.com/ptico
redis.io/commands