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