Wiki源代码Redis源码

由用户 xu yang 在 2022/04/27 12:30 保存的版本 13.1

Show last authors
1 get命令本质是调用了lookupKeyRead这个底层方法,
2 lookupKeyRead方法如下:
3
4 {{plantuml}}
5 @startuml
6 start
7
8
9 : lookupKeyReadWithFlags;
10
11
12 end
13 @enduml
14 {{/plantuml}}
15
16
17 lookupKeyReadWithFlags方法如下:
18
19 {{plantuml}}
20 @startuml
21 start
22
23 if(调用expireIfNeeded方法判断key是否过期)
24 note left
25 返回1代表已经过期
26 endnote
27 then(1)
28 if(当前环境为主节点)then(yes)
29 :返回null;
30 stop
31 endif
32
33 if(当前环境为从节点,并且命令为读的时候,那说明key过期是安全的)then(yes)
34 :返回null;
35 stop
36 endif
37 endif
38
39 :调用lookupKey方法,查询value的值;
40 if(返回值为空)then(yes)
41 :缓存命中+1;
42 else(no)
43 :缓存非命中+1;
44 endif
45
46 :返回查询的结果;
47
48 end
49 @enduml
50 {{/plantuml}}