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

Redis

  • Upload
    ptico

  • View
    1.349

  • Download
    2

Embed Size (px)

DESCRIPTION

Devclub presentation, 11.10.11

Citation preview

Page 1: Redis

маленький помощник больших приложений

Андрей СавченкоAejis

Page 2: Redis

Что такое Redis?

Key-value хранилище

Publish-subscribe сервер

Page 3: Redis

Особенности

Высокая скорость

Персистентность данных

Транзакции, репликация

Page 4: Redis

Типы данных

Строка (String)

Хеш (Hash)

Список (List)

Множество (Set)

Упорядоченное множество (Sorted set)

Page 5: Redis

Клиенты

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

CтрокиSET testkey “Hello”GET testkeyMSET key1 “Hello” key2 “world”

SET counter 1INCR counterGET counter #=> “2”

Page 7: Redis

Xеши

HSET test key1 “Hello”HSET test key2 “World”HGET test key2 #=> “World”HGETALL test #=> “key1” “Hello” “key2” “World”

Page 8: Redis

Списки

RPUSH test “zero”RPUSH test “one”RPUSH test “two”LRANGE test 1 2 #=> “one” “two”

Page 9: Redis

Множества

SADD users “andrey”SADD users “dima”SCARD users #=> 2SISMEMBER users “andrey” #=> 1SISMEMBER users “gleb” #=> 0

Page 10: Redis

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

Page 11: Redis

Кеши, сессииИнвалидация по времени

SET a18f045 “cache content”EXPIRE a18f045 100

Page 12: Redis

Кеши, сессииИнвалидация по признаку

SET a18b045 “cache content”SET d98f0c9 “cache content”SADD cond1 a18b045SADD cond1 d98f0c9SMEMBERS cond1DEL {result of smembers}

Page 13: Redis

Хранение несвязанных (малосвязанных)

данных{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

Сбор статистики{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

Связь между демонами

Web-application

Websocketserver

Async jobs server

Page 16: Redis

Связь между демонами# 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

Построение простых графов

# 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