= 缓存设计 :author: tiglog :experimental: :toc: left :toclevels: 3 :toc-title: 目录 :sectnums: :icons: font :!webfonts: :autofit-option: :source-highlighter: rouge :rouge-style: github :source-linenums-option: :revdate: 2022-11-30 :imagesdir: ./img **注:** 暂时直接使用 `go-resdis/cache` 从使用倒推设计。 == 场景1 自己管理 `key`: [source,golang] ---- ck := "key_foo" data := cache.get(ck) if !data { // <1> data = FETCH_DATA() cache.set(ck, data, 7200) // <2> } return data ---- <1> `get` 值为 `false` 表示没有缓存或缓存已过期 <2> 7200 为缓存有效期(单位为秒),若指定为 0 表示不过期。 == 场景2 程序自动管理 `key`: [source,golang] ---- cache.get(func() { return 'foo' }, 7200) ---- 这种方式一般情况下比较方便,要是需要手动使缓存失效,则要麻烦一些。因此,这种方 式暂时不实现。