GoFrame Redis操作

GoFrame Redis操作

Redis客戶端由gredis模塊實現,底層採用了鏈接池設計。

一、Redis介紹

Redis是當前比較熱門的NOSQL系統之一,它是一個開源的使用ANSI c語言編寫的key-value存儲系統(區別於MySQL的二維表格的形式存儲。)。性能出色:Redis讀取的速度是110000次/s,寫的速度是81000次/s。

支持類型

String: 字符串、Hash: 散列、List: 列表、Set: 集合、Sorted Set: 有序集合

PUB/SUB:發佈訂閱;

在5.0支持了全新數據類型:Streams

使用場景

緩存,登錄驗證碼,消息隊列,過濾器,分佈式鎖,限流等

二、Redis配置文件

絕大部分情況下推薦使用g.Redis單例方式來操作redis。因此同樣推薦使用配置文件來管理Redis配置,在config.toml中的配置示例如下:

# Redis數據庫配置
[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]

各配置項說明如下:

配置項名稱 是否必須 默認值 說明
host - 地址
port - 端口
db 0 數據庫
pass - 授權密碼
maxIdle 0 允許限制的連接數(0表示不閒置)
maxActive 0 最大連接數量限制(0表示不限制)
idleTimeout 60 連接最大空閒時間(單位秒,不允許設置爲0)
maxConnLifetime 60 連接最長存活時間(單位秒,不允許設置爲0)

其中的defaultcache分別表示配置分組名稱,我們在程序中可以通過該名稱獲取對應配置的redis對象。不傳遞分組名稱時,默認使用redis.default配置分組項)來獲取對應配置的redis客戶端單例對象。

三、結果處理

可以看到通過客戶端方法Do/Receive獲取的數據都是二進制形式[]byte的,需要開發者手動進行數據轉換。

當然,gredis模塊也提供了DoVar/ReceiveVar方法,用以獲取可供方便轉換的gvar.Var通用變量結果。

通過gvar.Var的強大轉換功能可以轉換爲任意的數據類型,如基本數據類型Int,String,Strings,或者結構體Struct等等。

四、示例

目錄結構

D:.
│  go.mod
│  go.sum
│  main.go
│
└─config
        config.toml

main.go

package main

import (
	"github.com/gogf/gf/frame/g"
	"github.com/gogf/gf/util/gconv"
)

func main() {
	// redis字符串操作
	g.Redis().Do("SET", "k", "v")
	v, _ := g.Redis().Do("GET", "k")
	g.Log().Info(gconv.String(v))

	// 獲取cache鏈接
	v2, _ := g.Redis("cache").Do("GET", "k")
	g.Log().Info(gconv.String(v2))

	// DoVar轉換
	v3, _ := g.Redis().DoVar("GET", "k")
	g.Log().Info(v3.String())

	// setex
	g.Redis().Do("SETEX", "keyEx", 2000, "v4")
	v4, _ := g.Redis().DoVar("GET", "keyEx")
	g.Log().Info(v4.String())

	// list
	g.Redis().Do("RPUSH", "keyList", "v5")
	v5, _ := g.Redis().DoVar("LPOP", "keyList")
	g.Log().Info(v5.String())

	// hash
	g.Redis().Do("HSET", "keyHash", "v1", "v6")
	v6, _ := g.Redis().DoVar("HGET", "keyHash", "v1")
	g.Log().Info(v6.String())

	// set
	g.Redis().Do("SADD", "keySet", "v7")
	v7, _ := g.Redis().DoVar("SPOP", "keySet")
	g.Log().Info(v7.String())

	// sort set
	g.Redis().Do("ZADD", "keySortSet", 1, "v8")
	v8, _ := g.Redis().DoVar("ZREM", "keySortSet", "v8")
	g.Log().Info(v8.Int())

}

config.toml

# Redis數據庫配置
[redis]
    default = "127.0.0.1:6379,0"
    cache   = "127.0.0.1:6379,1,123456?idleTimeout=600"

代碼地址

項目視頻

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章