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 12.1 23 note left
24 返回1代表已经过期
25 endnote
xu yang 14.1 26 if(调用expireIfNeeded方法判断key是否过期)then(1)
xu yang 8.1 27 if(当前环境为主节点)then(yes)
xu yang 9.1 28 :返回null;
xu yang 2.1 29 stop
30 endif
xu yang 1.1 31
xu yang 8.1 32 if(当前环境为从节点,并且命令为读的时候,那说明key过期是安全的)then(yes)
xu yang 2.1 33 :返回null;
34 stop
35 endif
xu yang 10.1 36 endif
xu yang 1.1 37
xu yang 11.1 38 :调用lookupKey方法,查询value的值;
xu yang 10.1 39 if(返回值为空)then(yes)
xu yang 7.1 40 :缓存命中+1;
41 else(no)
42 :缓存非命中+1;
43 endif
xu yang 5.1 44
xu yang 2.1 45 :返回查询的结果;
46
xu yang 1.1 47 end
48 @enduml
49 {{/plantuml}}