Estrutura de dados principais do Redis e novos recursos do Redis 6 em detalhes

Índice

1.lista

2.hash 

 3.Definir

4. Definir 

 5.GeoHash

 6. Perguntas frequentes sobre entrevistas

6.1 Cache do lado do cliente 

6.2 Permissões ACL 


1.lista

Redis é uma estrutura kV em redisDB, que é armazenada no dict do dicionário. O dict contém duas estruturas hashTable, que existem na forma de uma matriz. A lista é uma estrutura de dados ordenada e a lista rápida e ziplist de lista encadeada dupla são usados ​​como a implementação subjacente.

[root@localhost ~]# cd /usr/local/redis-6.2.7
[root@localhost redis-6.2.7]# src/redis-server redis.conf
[root@localhost redis-6.2.7]# src/redis-cli
127.0.0.1:6379> lpush a-list a b c
(integer) 3
127.0.0.1:6379> rpush a-list e f g
(integer) 6
127.0.0.1:6379> rpush a-list e 1100 f g
(integer) 10
127.0.0.1:6379> type a-list
list
127.0.0.1:6379> object encoding a-list
"quicklist"

 A estrutura de dados da lista é a seguinte:

2.hash 

 O hash é armazenado em uma ziplist quando o campo é relativamente pequeno e em uma hashtable quando o campo é relativamente grande.A figura a seguir mostra a cena em que o código-chave de codificação do objeto é alterado de uma ziplist para uma hashtable.

127.0.0.1:6379> hset a-hash name caiji age 35 f1 v1 f2 v2 f3 v3
(integer) 5
127.0.0.1:6379> hgetall a-hash
 1) "name"
 2) "caiji"
 3) "age"
 4) "35"
 5) "f1"
 6) "v1"
 7) "f2"
 8) "v2"
 9) "f3"
10) "v3"
127.0.0.1:6379> type a-hash
hash
127.0.0.1:6379> object encoding a-hash
"ziplist"
127.0.0.1:6379> hset a-hash f4 aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa
(integer) 1
127.0.0.1:6379> hgetall a-hash
 1) "f1"
 2) "v1"
 3) "name"
 4) "caiji"
 5) "f2"
 6) "v2"
 7) "age"
 8) "35"
 9) "f3"
10) "v3"
11) "f4"
12) "aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa"
127.0.0.1:6379> type a-hash
hash
127.0.0.1:6379> object encoding a-hash
"hashtable"

 A estrutura de dados do hash é a seguinte, você pode configurar o intervalo de armazenamento de ziplist e hashtable definindo o arquivo de configuração redis.conf

Perguntas da entrevista: seleção de string e hash e vantagens e desvantagens

 

 3.Definir

Set é um tipo de dados desordenado e desduplicado automaticamente. Ele é ordenado quando é armazenado em números inteiros. A camada inferior usa a estrutura de dados intset. É desordenado quando é armazenado em strings e é armazenado em hashtable.

127.0.0.1:6379> sadd a-set 1 2 3 5 10 9 4 4 4
(integer) 7
127.0.0.1:6379> smembers a-set
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
6) "9"
7) "10"
127.0.0.1:6379> type a-set
set
127.0.0.1:6379> object encoding a-set
"intset"
127.0.0.1:6379> sadd a-set a
(integer) 1
127.0.0.1:6379> smembers a-set
1) "a"
2) "3"
3) "10"
4) "9"
5) "4"
6) "2"
7) "5"
8) "1"
127.0.0.1:6379> type a-set
set
127.0.0.1:6379> object encoding a-set
"hashtable"

A estrutura de dados do intset é a seguinte, com três elementos.

 

4. Definir 

O princípio da skiplist usa pesquisa binária e o método index forma uma árvore de índice para pesquisar dados e o número do índice da camada K = n/2^k.

127.0.0.1:6379> zadd a-zset 100 a 200 b 150 c
(integer) 3
127.0.0.1:6379> zrange a-zset 0 -1 withscores
1) "a"
2) "100"
3) "c"
4) "150"
5) "b"
6) "200"
127.0.0.1:6379> type a-zset
zset
127.0.0.1:6379> object encoding a-zset
"ziplist"

 5.GeoHash

GeoHash é um algoritmo mais implementação zset

ajuda @geo 

127.0.0.1:6379> help @geo
127.0.0.1:6379> geoadd locations 116.3209103486328 39.92916527606944 guozhuang
(integer) 1
127.0.0.1:6379> geoadd locations 116.391621 39.946583 beijignzhan 116.401969 39.959857 ditangongyuan
(integer) 2
127.0.0.1:6379> geodist locations guozhuang beijignzhan km
"6.3337"
127.0.0.1:6379> geodist locations ditangongyuan beijignzhan km
"1.7200"
127.0.0.1:6379> georadiusbymember locations guozhuang 8 km
1) "guozhuang"
2) "beijignzhan"
3) "ditangongyuan"
127.0.0.1:6379> georadiusbymember locations guozhuang 7 km
1) "guozhuang"
2) "beijignzhan"
127.0.0.1:6379> keys *
1) "locations"
127.0.0.1:6379> type locations
zset
127.0.0.1:6379> object encoding locations
"ziplist"

 A implementação subjacente do geohash, as regras de codificação de longitude e latitude são as seguintes. gethash pode enviar apenas o intervalo difuso, não a latitude e longitude específicas, e é adequado para cenários em que a precisão não é tão alta

 

 

 

 6. Perguntas frequentes sobre entrevistas

1. O modelo multithreading do redis , pesquise thread-I/O em redis.conf para obter notas detalhadas

Processo de execução do Redis: ler-analisar resp protocolo-executar comando-gravar

O multi-threading está desativado por padrão, você pode definir o parâmetro io-thread em redis.conf, conforme mostrado abaixo

 Depois de configurar o parâmetro io-threads-do-reads, outros threads de E/S também podem executar tarefas de leitura e gravação 

6.1 Cache do lado do cliente 

 Depois que o cliente local solicitar ao servidor, ele armazenará em cache uma parte dos dados localmente e, quando os dados forem modificados na próxima vez, invalidará de forma síncrona o cache do cliente e retornará os dados mais recentes. O Redis6.0 suporta apenas cache autônomo e os clusters não podem armazenar em cache.

6.2 Permissões ACL 

Por padrão, os clientes podem executar tarefas quando entram e o flushdb limpa todos os dados.

Definindo requirepass foobared no arquivo redis.conf como a palavra-chave requirepass, você pode fazer login por meio da palavra-chave auth

 

 Definir usuário de permissão 

Ver usuários perigosos 

 

 

 Persistir no arquivo de configuração 

 Você também pode configurar as permissões ACL para um arquivo de configuração separado definindo o caminho do arquivo aclfile no arquivo redis.conf e remover parâmetros como usuário aclice em

 

 

 

 

Acho que você gosta

Origin blog.csdn.net/qq_21575929/article/details/125628664
Recomendado
Clasificación