O documento introduz o Redis, um armazenamento de dados em memória do tipo chave-valor (NoSQL), e apresenta seus principais tipos de dados (strings, hashes, listas, conjuntos e conjuntos ordenados) e casos de uso (cache, sessões, filas e contagens).
2. Redis
- Redis = Remote Dictionary Service
- Armazém de estruturas de dados em memória
- NoSQL
- Chave-Valor
- Atomicidade de operações
3. Casos de Uso
- Cache
- Sessão (isolar estado)
- FPC (Full Page Caching)
- Filas
- Ranking e contabilização
- Ex.: usuários online, páginas acessadas, top 10
- Message broker (Pub/Sub)
4. Tipos de dados
- String
- Hash
- List
- Set
- Sorted set
- Bitmap
- Hyperloglog
- Geospatial Index
5. Plataformas
- Linux & MacOS:
- https://redis.io/download
- Windows
- Não possui versão oficial
- Versão experimental: https://github.com/MSOpenTech/redis
7. Strings - Get, Set & Del
- SET "key_name_string" "value_string"
- SET "key_name_number" 100
- GET "key_name_string"
- GET "key_name_string"
- DEL "key_name_string"
8. MGET & MSET
- MSET key value [key value ...]
- Ex.: MSET nome "Djeison" idade "23"
- MGET key [key ...]
- Ex.: MGET nome idade
10. Keys
- Consulta de chaves
- * = nenhum ou muitos caracteres
- ? = um caractere
- [] = define um domínio
- Ex.:
- KEYS *
- KEYS "spring:session:*"
- KEYS "megasena:resultado:??-05-2017"
- KEYS "megasena:resultado:1[49]-05-20??"
11. Hash - Hset, Hget & Hdel
- Contém pares de campo-valor
- HSET key field value
- Ex.: HSET "usuario:100" "nome" "Sidão"
- HGET key field
- Ex.: HGET "usuario:100" "nome"
- HDEL key field [field ...]
- Ex.: HDEL "usuario:100" "nome"
12. Expiração de chaves
- EXPIRE key seconds
- Tempo para expirar chave
- Ex.: EXPIRE "usuario:100" 60
- TTL key
- Tempo restante para expiração
- "-1" para nunca expira
- Ex.: TTL "usuario:100"
14. Bitmaps
- Conjunto de operações sobre bits
- SETBIT key offset value
- Ex.: SETBIT acesso:01-06-2017 30 1
- GETBIT key offset
- Ex.: GETBIT acesso:01-06-2017 30
- BITCOUNT key
- Ex.: BITCOUNT acesso:01-06-2017
15. Listas
- Implementação de Linked List
- LPUSH key value [value ...]
- RPUSH key value [value ...]
- "Empurra" valores para a lista
- Ex.: LPUSH mensagens "Esta é a primeira mensagem"
- LPOP key
- RPOP key
- "Consumir" valor da lista, remove elemento
- Ex.: LPOP mensagens
17. Espera ocupada (Busy Waiting)
- "É um técnica onde um processo checa de maneira repetitiva se
determinada condição é verdadeira" - Wikipedia
- Deve ser evitada pelo custo computacional
19. Conjuntos
- Não apresenta ordenação
- Não permite duplicidade
- Operações:
- Intersecção
- União
- Diferença
20. Conjuntos
- SADD key member [member ...]
- Ex.: SADD pessoas "Maria" "Joao" "Tadeu"
- SREM key member [member ...]
- Ex.: SREM pessoas "Joao" "Tadeu"
21. Conjuntos
- SCARD key
- Quantidade de elementos
- SMEMBERS key
- Elementos do conjunto
- SISMEMBER key member
- Identifica se membro está no conjunto
22. Conjuntos
- Intersecção:
- SINTER key [key ...]
- Ex.: SINTER pessoas familia
- Diferença
- SDIFF key [key ...]
- Ex.: SDIFF pessoas familia
- União
- SUNION key [key ...]
- Ex.: SUNION pessoas familia
23. Conjuntos Ordenados
- Valores únicos (Strings)
- Associa elemento a uma pontuação
- ZADD key score member
- Adiciona/Cria conjunto ordenado
- Ex.: ZADD jogadores 50 "Tulio"
- Ex.: ZADD jogadores 100 "Tulio"
- ZCARD key
- Cardinalidade do conjunto (número de elementos)
- Ex.: ZCARD jogadores