W3Cschool
恭喜您成為首批注冊用戶
獲得88經(jīng)驗(yàn)值獎(jiǎng)勵(lì)
?gredis
?組件支持兩種方式來管理?redis
?配置和獲取?redis
?對象,一種是通過配置組件+單例對象的方式;一種是模塊化通過配置管理方法及對象創(chuàng)建方法。
絕大部分情況下推薦使用g.Redis單例方式來操作redis。因此同樣推薦使用配置文件來管理Redis配置,在config.yaml中的配置示例如下:
# Redis 配置示例
redis:
# 單實(shí)例配置示例1
default:
address: 127.0.0.1:6379
db: 1
# 單實(shí)例配置示例2
cache:
address: 127.0.0.1:6379
db: 1
pass: 123456
idleTimeout: 600
# Redis 配置示例
redis:
# 集群模式配置方法
group:
address: 127.0.0.1:6379,127.0.0.1:6370
db: 1
配置項(xiàng)名稱 | 是否必須 | 默認(rèn)值 | 說明 |
?address ? |
是 | ?- ? |
格式:?地址:端口 ?
支持Redis單實(shí)例模式和集群模式配置,使用,分隔多個(gè)地址。例如:
?192.168.1.1:6379,192.168.1.2:6379
? |
?db ? |
否 | ?0 ? |
數(shù)據(jù)庫索引 |
?pass ? |
否 | ?- ? |
訪問授權(quán)密碼 |
?minIdle ? |
否 | ?0 ? |
允許閑置的最小連接數(shù) |
?maxIdle ? |
否 | ?10 ? |
允許閑置的最大連接數(shù)(0表示不限制) |
?maxActive ? |
否 | ?100 ? |
最大連接數(shù)量閑置(0表示不限制) |
?idleTimeout ? |
否 | ?10 ? |
連接最大空閑時(shí)間,使用時(shí)間字符串例如?30s/1m/1d ? |
?maxConnLifetime ? |
否 | ?30 ? |
連接最長存活時(shí)間,使用時(shí)間字符串例如?30s/1m/1d ? |
?waitTimeout ? |
否 | ?0 ? |
等待連接池連接的超時(shí)時(shí)間,使用時(shí)間字符串例如?30s/1m/1d ? |
?dialTimeout ? |
否 | ?0 ? |
?TCP ?連接的超時(shí)時(shí)間,使用時(shí)間字符串例如?30s/1m/1d ? |
?readTimeout ? |
否 | ?0 ? |
?TCP ?的?Read ?操作超時(shí)時(shí)間,使用時(shí)間字符串例如?30s/1m/1d ? |
?writeTimeout ? |
否 | ?0 ? |
?TCP ?的?Write ?操作超時(shí)時(shí)間,使用時(shí)間字符串例如?30s/1m/1d ? |
?masterName ? |
否 | ?- ? |
哨兵模式下使用,設(shè)置?MasterName ? |
?tls ? |
否 | ?false ? |
是否使用?TLS ?認(rèn)證 |
?tlsSkipVerify ? |
否 | ?false ? |
通過?TLS ?連接時(shí),是否禁用服務(wù)器名稱驗(yàn)證 |
使用示例:
func main() {
var (
ctx = context.Background()
)
conn, _ := g.Redis().Conn(ctx)
conn.Do(ctx, "SET", "Key", "Value")
v, _ := conn.Do(ctx, "GET", "Key")
fmt.Println(v.String())
}
其中的default
和?cache
?分別表示配置分組名稱,我們在程序中可以通過該名稱獲取對應(yīng)配置的?redis
?單例對象。不傳遞分組名稱時(shí),默認(rèn)使用?redis.default
?配置分組項(xiàng)來獲取對應(yīng)配置的?redis
?客戶端單例對象。 執(zhí)行后,輸出結(jié)果為:
Value
由于?GoFrame
?是模塊化的框架,除了可以通過耦合且便捷的g模塊來自動(dòng)解析配置文件并獲得單例對象之外,也支持有能力的開發(fā)者模塊化使用?gredis
?包。
?gredis
?提供了全局的分組配置功能,相關(guān)配置管理方法如下:
func SetConfig(config Config, name ...string)
func SetConfigByMap(m map[string]interface{}, name ...string) error
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 (
"context"
"fmt"
"github.com/gogf/gf/v2/database/gredis"
"github.com/gogf/gf/v2/util/gconv"
)
var (
config = gredis.Config{
Address: "192.168.1.2:6379, 192.168.1.3:6379",
Db : 1,
}
ctx = context.Background()
)
func main() {
group := "test"
gredis.SetConfig(&config, group)
redis := gredis.Instance(group)
defer redis.Close(ctx)
_, err := redis.Do(ctx, "SET", "k", "v")
if err != nil {
panic(err)
}
r, err := redis.Do(ctx, "GET", "k")
if err != nil {
panic(err)
}
fmt.Println(gconv.String(r))
}
Copyright©2021 w3cschool編程獅|閩ICP備15016281號-3|閩公網(wǎng)安備35020302033924號
違法和不良信息舉報(bào)電話:173-0602-2364|舉報(bào)郵箱:jubao@eeedong.com
掃描二維碼
下載編程獅App
編程獅公眾號
聯(lián)系方式:
更多建議: