go語言實戰教程: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存儲內容值。

  •  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM