= 缓存设计 
: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)
----

这种方式一般情况下比较方便，要是需要手动使缓存失效，则要麻烦一些。因此，这种方
式暂时不实现。

