Mode:
Duration:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
package main
import "fmt"
var database = map[int]string{
1: "Alice",
}
var cache = map[int]string{}
func getUser(id int) string {
// Cache Aside Pattern
if value, ok := cache[id]; ok {
return value
}
value := database[id]
cache[id] = value
return value
}
func updateUser(id int, name string) {
// Write Through Pattern
database[id] = name
cache[id] = name
}
func invalidateCache(id int) {
delete(cache, id)
}
func main() {
fmt.Println("First Request:", getUser(1))
fmt.Println("Second Request:", getUser(1))
updateUser(1, "Bob")
fmt.Println("Updated:", getUser(1))
invalidateCache(1)
fmt.Println("Cache invalidated")
}Coding works best on desktop or with an external keyboard.