golib/gcache/readme.adoc

62 lines
977 B
Plaintext
Raw Normal View History

2023-06-15 21:22:51 +08:00
= 缓存设计
: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
== 实现
2023-06-15 21:22:51 +08:00
已于 2023-06-21 实现。
可以基于 `redis` 进行一些基本使用。
== 设计
2023-06-15 21:22:51 +08:00
从使用倒推设计。
=== 场景1
2023-06-15 21:22:51 +08:00
自己管理 `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
2023-06-15 21:22:51 +08:00
程序自动管理 `key`:
[source,golang]
----
cache.get(func() {
return 'foo'
}, 7200)
----
这种方式一般情况下比较方便,要是需要手动使缓存失效,则要麻烦一些。因此,这种方
式暂时不实现。