Wiki源代码Redis源码

由用户 xu yang 在 2022/04/27 12:22 保存的版本 2.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是否过期) then(1)
24 if (当前环境为主节点) then(yes)
25 :返回null;
26 stop
27 endif
28
29 if (当前环境为从节点,并且命令为读的时候,那说明key过期是安全的) then(yes)
30 :返回null;
31 stop
32 endif
33 endif
34
35 :实际查询数据lookupKey;
36 if (返回值为空) then(yes)
37 :缓存命中+1;
38 else(no)
39 :缓存非命中+1;
40 endif
41
42 :返回查询的结果;
43
44 end
45 @enduml
46 {{/plantuml}}