## 緩存機制設計
**Store interface**
目前系統中使用到 `Redis`,`cache` 包不應該只依賴于 `Redis` ,后續如使用其他緩存方案,如 `Memcached` ,可以很方便切換。所以這里我們利用 `Go` 的 `interface` 功能,將數據存儲抽象化。
**RedisStore**
`RedisStore` 是 `cahce` 包的 `Store interface Redis` 實現。目前我們的 `Redis` 里存放多種業務邏輯的數據,如數字驗證碼、短信驗證碼等,緩存的信息應該和這些業務數據使用不同的數據庫。
## 使用
使用緩存前必須引用 `"gohub/pkg/cache"`包文件。
#### 設置緩存
設置自緩存(有效期2小時)
```
cache.Set("name", "張三", 120 * time.Minute)
```
無返回值
*****
#### 緩存自增
針對數值類型的緩存數據,可以使用自增操作,例如:
```
// age自增(步進值為1)
cache.Increment("age")
// age自增(步進值為3),第二個參數是Int64
cache.Increment("age", cast.ToInt64(3))
```
注意:自增操作不會使用緩存前綴
*****
#### 緩存自減
針對數值類型的緩存數據,可以使用自減操作,例如:
```
// age自減(步進值為1)
cache.Decrement("age")
// age自減(步進值為3),第二個參數是Int64
cache.Decrement("age", cast.ToInt64(3))
```
注意:自減操作不會使用緩存前綴
*****
#### 獲取緩存
獲取緩存數據可以使用:
```
cache.Get("test")
```
注意它的返回值不是字符串,如果你想轉換它可以使用:
```
cast.ToString(cache.Get("test"))
```
獲取緩存還支持獲取指定類型的緩存數據:
```
// 應該傳地址, 示例:cache.GetObject("key", &model)
cache.GetObject("test")
cache.GetString("test")
cache.GetBool("test")
cache.GetInt("test")
cache.GetInt32("test")
cache.GetInt64("test")
cache.GetUint("test")
cache.GetUint32("test")
cache.GetUint64("test")
cache.GetFloat64("test")
cache.GetTime("test")
cache.GetDuration("test")
cache.GetIntSlice("test")
cache.GetStringMap("test")
cache.GetStringMapString("test")
...
```
*****
#### 刪除緩存
```
cache.Del("test")
```
*****
#### 清空緩存
```
cache.Flush()
```
## Redis使用
注意:直接操作`redis`是不會添加緩存前綴的
設置緩存
```
redis.Redis.Set("hello", "hi from redis", 10*time.Second)
```
讀取緩存
```
redis.Redis.Get("hello")
```
- 序言
- 基礎
- 安裝GoHub
- 目錄結構
- 開發規范
- 部署項目
- 架構
- 架構總覽
- 生命周期
- 配置
- 配置介紹
- 配置目錄
- 配置格式
- 配置加載
- 讀取配置
- 動態配置
- 環境變量配置
- 路由
- 路由模式
- 路由定義
- 路由參數
- 路由分組
- 路由限流
- 路由拆分
- 控制器
- 控制定義
- 控制器初始化
- 中間件
- Make創建控制器
- 請求
- 請求信息
- 數據庫
- 連接數據庫
- 基本使用
- Make創建模型
- 日志
- 介紹
- 日志驅動
- 日志寫入
- HTTP日志
- 數據庫請求日志
- 錯誤和調試
- Debuger調試器
- 驗證
- 驗證器
- 驗證規則
- Make創建驗證器
- 雜項
- 緩存
- 分頁
- 驗證碼
- CURL請求
- 命令行
- 基礎知識
- console 包
- Cobra 基礎
- 命令行模式
- 附錄
- 配置參考
- 第三方依賴庫