当前位置:网站首页>Details of redis core data structure & new features of redis 6

Details of redis core data structure & new features of redis 6

2022-07-07 13:57:00 bingtanghulu_ six

Catalog

1.list

2.hash 

 3.Set

4.Zset 

 5.GeoHash

 6. Interview FAQs


1.list

redis stay redisDB There is a k-V structure , Stored in dictionary dict in ,dict Contains two hashTable structure , Exists as an array , among list  Is an ordered data structure , Use double ended linked list quicklist and ziplist As an underlying implementation .

[[email protected] ~]# cd /usr/local/redis-6.2.7
[[email protected] redis-6.2.7]# src/redis-server redis.conf
[[email protected] 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"

 list The data structure is as follows :

2.hash 

 hash Use when the field is small ziplist Storage , When it is relatively large hashtable Storage , The following figure shows object encoding key Code by ziplist Change to hashtable Scene .

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"

 hash The data structure is as follows , Can be set by redis.conf Configuration file configuration ziplist and hashtable The storage range of

Interview questions :string and hash Selection and advantages and disadvantages

 

 3.Set

Set For unordered automatic de duplication data types , It is ordered when all are stored in integer , Bottom use intset data structure , When stored in strings, it is unordered , Use hashtable Storage .

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"

intset The data structure is as follows , There are three elements .

 

4.Zset 

skiplist principle , Use half to find , The index method forms an index tree to find data , The first K Layer index number =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 It's an algorithm plus zset Realized

help @geo 

 

 

 geohash Underlying implementation , The longitude and latitude coding rules are as follows .gethash Only fuzzy ranges can be sent , No specific longitude and latitude will be sent , It is suitable for scenes with low accuracy

 

 

 

 6. Interview FAQs

1. redis The multithreading model of , stay redis.conf Mid search thread-I/O There are detailed notes

redis Execution process :read- analysis resp agreement - Carry out orders - write in

Multithreading is off by default , You can set redis.conf in io-thread Parameters , Here's the picture

 

  Configured with io-threads-do-reads Parameters later others I/O Threads can also perform read and write tasks  

 

原网站

版权声明
本文为[bingtanghulu_ six]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/188/202207071149358449.html