網(wǎng)站首頁 編程語言 正文
前言摘要
上一篇文章為大家介紹了 GoFrame gcache使用實踐 | 緩存控制 淘汰策略 ,得到了大家積極的反饋。
后續(xù)幾篇文章再接再厲,仍然為大家介紹GoFrame框架緩存相關(guān)的知識點,以及自己項目使用中的一些總結(jié)思考,GoFrame框架下文簡稱gf。
GoFrame gredis
goframe框架支持兩種方式來管理redis配置和獲取redis對象,一種是通過配置文件+單例對象的方式;一種是模塊化通過配置管理方法及對象創(chuàng)建方法。
而我們是使用的前者:通過配置文件+單例對象的方式。
配置文件(推薦)
絕大部分情況下推薦使用g.Redis單例方式來操作redis。
推薦使用配置文件來管理Redis配置,在config.toml中的配置示例如下:
# Redis數(shù)據(jù)庫配置
[redis]
default = "127.0.0.1:6379,0"
cache = "127.0.0.1:6379,1,123456?idleTimeout=600"
其中,Redis的配置格式為:
host:port[,db,pass?maxIdle=x&maxActive=x&idleTimeout=x&maxConnLifetime=x]
各配置項說明如下:
配置項名稱 | 是否必須 | 默認(rèn)值 | 說明 |
---|---|---|---|
host | 是 | - | 地址 |
port | 是 | - | 端口 |
db | 否 | 0 | 數(shù)據(jù)庫 |
pass | 否 | - | 授權(quán)密碼 |
maxIdle | 否 | 10 | 允許閑置的連接數(shù)(0表示不限制) |
maxActive | 否 | 100 | 最大連接數(shù)量限制(0表示不限制) |
idleTimeout | 否 | 10 | 連接最大空閑時間(單位秒,不允許設(shè)置為0) |
maxConnLifetime | 否 | 30 | 連接最長存活時間(單位秒,不允許設(shè)置為0) |
tls | 否 | false | 是否使用TLS認(rèn)證 |
skipVerify | 否 | false | 通過TLS連接時,是否禁用服務(wù)器名稱驗證 |
其中的default和cache分別表示配置分組名稱,我們在程序中可以通過該名稱獲取對應(yīng)配置的redis單例對象。
不傳遞分組名稱時,默認(rèn)使用redis.default配置分組項)來獲取對應(yīng)配置的redis客戶端單例對象。 執(zhí)行后,輸出結(jié)果為:
使用示例:
package main import ( "fmt" "github.com/gogf/gf/frame/g" "github.com/gogf/gf/util/gconv" ) func main() { g.Redis().DoVar("SET", "k", "v") v, _ := g.Redis().DoVar("GET", "k") fmt.Println(v.String()) }
打印結(jié)果
v
配置方法(高級)
由于gf是模塊化的框架,除了可以通過耦合且便捷的g模塊來自動解析配置文件并獲得單例對象之外,也支持開發(fā)者模塊化使用gredis包。
但是這種用法對開發(fā)者的要求相對較高。
gredis提供了全局的分組配置功能,相關(guān)配置管理方法如下:
func SetConfig(config Config, name ...string) func GetConfig(name ...string) (config Config, ok bool) func RemoveConfig(name ...string) func ClearConfig()
其中name參數(shù)為分組名稱,即為通過分組來對配置對象進(jìn)行管理,我們可以為不同的配置對象設(shè)置不同的分組名稱,隨后我們可以通過Instance單例方法獲取redis客戶端操作對象單例。
func Instance(name ...string) *Redis
使用示例:
package main import ( "fmt" "github.com/gogf/gf/database/gredis" "github.com/gogf/gf/util/gconv" ) var ( config = gredis.Config{ Host : "127.0.0.1", Port : 6379, Db : 0, } ) func main() { group := "test" gredis.SetConfig(&config, group) redis := gredis.Instance(group) defer redis.Close() _, err := redis.Do("SET", "k", "v") if err != nil { panic(err) } r, err := redis.Do("GET", "k") if err != nil { panic(err) } fmt.Println(gconv.String(r)) }
總結(jié)
gredis相關(guān)的知識點比較多,所以打算拆成多篇文章進(jìn)行更新。
這篇文章重點為大家介紹了gredis的配置方式:支持配置文件進(jìn)行管理,也支持通過配置方法進(jìn)行管理。
原文鏈接:https://juejin.cn/post/7108272085452980261
相關(guān)推薦
- 2022-05-10 ioc基于注解方式
- 2022-06-12 python操作RabbitMq的三種工作模式_python
- 2022-07-22 python:實現(xiàn)abbreviation縮寫算法(附完整源碼)
- 2022-09-26 SharedPreferences存儲HashMap和相互轉(zhuǎn)化
- 2022-07-26 arduino上傳程序出錯不成功常見的問題解決
- 2022-10-13 Python?變量教程之打包和解包參數(shù)_python
- 2022-11-19 C++如何去除cpp文件的注釋詳解_C 語言
- 2022-04-09 IDEA中命令行安裝git報錯:error: failed to push some refs to
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支