上節內容講解了如何安裝Redis,如何使用Redis以及Redis的操作。本節內容,繼續來學習在真實的專案案例中,Redis的使用方法和操作步驟。
專案Redis配置
在實戰專案中使用Redis功能,首先需要進行Redis配置。本實戰專案中,關與Redis的配置項包含:連線型別、地址、埠、公共字首。以上配置項被定義包含在Iris框架的redis包中的Config結構體中,Config定義如下:
type Config struct {
// Network "tcp"
Network string
// Addr "127.0.0.1:6379"
Addr string
// Password string .If no password then no 'AUTH'. Default ""
Password string
// If Database is empty "" then no 'SELECT'. Default ""
Database string
// MaxIdle 0 no limit
MaxIdle int
// MaxActive 0 no limit
MaxActive int
// IdleTimeout time.Duration(5) * time.Minute
IdleTimeout time.Duration
// Prefix "myprefix-for-this-website". Default ""
Prefix string
}複製程式碼
Network: 連線型別。TCP
Addr: 即將連線的Redis服務主機IP。本實戰專案的Redis服務部署在本機,因此主機ip為127.0.0.1。Redis服務預設埠為6379。因此,Addr在本例項專案中的配置值為127.0.0.1:6379。
Password: 登陸Redis的密碼。預設配置為空。
Prefix:為要儲存的所有的內容設定公共的字首。預設設定為空。
IdleTimeout:設定Redis中的生效時長。這裡我們設定time.Duration(24) * time.Hour。在實際的開發過程中,開發者可以根據自己的需求設定Redis的生效時長。
Redis在配置檔案中的配置情況如下:
{
"app_name": "CmsProject",
"port": "8080",
"static_path": "/manage/static",
"database": {
"drive": "mysql",
"port": "3306",
"user": "root",
"pwd": "271400",
"database": "qfCms"
},
"redis": {
"network": "tcp",
"addr": "127.0.0.1",
"port": "6379",
"prefix": ""
},
"mode": "dev"
}複製程式碼
Redis連線物件例項化
我們通過讀取配置檔案完成配置內容的讀取,利用Redis配置資訊例項化Redis物件,Redis例項化如下:
var once sync.Once
/**
* 返回Redis例項
*/
func NewRedis() *redis.Database {
var database *redis.Database
once.Do(func() {
//專案配置
cmsConfig := config.InitConfig()
rd := cmsConfig.Redis
database = redis.New(service.Config{
Network: rd.NetWork,
Addr: rd.Addr + ":" + rd.Port,
IdleTimeout: time.Duration(24) * time.Hour,
Prefix: rd.Prefix,
})
})
return database
}
複製程式碼
Redis的例項化使用到了單例方式實現。
將Session儲存方式設定為Redis
redis := datasource.NewRedis()
//設定session的同步位置為redis
sessManager.UseDatabase(redis)複製程式碼
實戰專案中Redis的操作與實現
Redis快取管理員統計功能
adminStatis := sc.Session.Get(ADMINMODULE + date) if adminStatis != nil { adminStatis = adminStatis.(int64) return mvc.Response{ Object: map[string]interface{}{ "status": utils.RECODE_OK, "count": adminStatis, }, } } else { result = sc.Service.GetAdminDailyCount(date) sc.Session.Set(ADMINMODULE, result) }複製程式碼
Redis快取訂單統計功能
orderStatis := sc.Session.Get(ORDERMODULE + date) if orderStatis != nil { orderStatis = orderStatis.(int64) return mvc.Response{ Object: map[string]interface{}{ "status": utils.RECODE_OK, "count": orderStatis, }, } } else { result = sc.Service.GetOrderDailyCount(date) sc.Session.Set(ORDERMODULE+date, result) } 複製程式碼
Redis快取使用者統計功能
userResult := sc.Session.Get(USERMODULE + date) if userResult != nil { result = userResult.(int64) return mvc.Response{ Object: map[string]interface{}{ "status": utils.RECODE_OK, "count": userResult, }, } } else { iris.New().Logger().Error(date) //時間 result = sc.Service.GetUserDailyCount(date) //設定快取 sc.Session.Set(USERMODULE+date, result) }複製程式碼
檢視Redis儲存效果
開啟Redis服務 在Mac下,啟動redis服務使用如下命令:redis
開啟Redis-cli客戶端 在MacOS系統下,啟動redis-cli工具的命令:redis-cli 如上我們可以通過keys命令來檢視我們儲存的所有的內容
get key讀取具體資訊 在查詢所對應的key的redis儲存內容值。