GoFrame gredis 配置管理 | 配置文件、配置方法的对比

本文涉及的产品
云数据库 Redis 版,社区版 2GB
推荐场景:
搭建游戏排行榜
简介: goframe框架支持两种方式来管理redis配置和获取redis对象,一种是通过配置文件+单例对象的方式;一种是模块化通过配置管理方法及对象创建方法。

GoFrame gredis


goframe框架支持两种方式来管理redis配置和获取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 10 允许闲置的连接数(0表示不限制)
maxActive 100 最大连接数量限制(0表示不限制)
idleTimeout 10 连接最大空闲时间(单位秒,不允许设置为0)
maxConnLifetime 30 连接最长存活时间(单位秒,不允许设置为0)
tls false 是否使用TLS认证
skipVerify false 通过TLS连接时,是否禁用服务器名称验证


其中的defaultcache分别表示配置分组名称,我们在程序中可以通过该名称获取对应配置的redis单例对象。

不传递分组名称时,默认使用redis.default配置分组项)来获取对应配置的redis客户端单例对象。 执行后,输出结果为:


使用示例:


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())
}


打印结果


v


配置方法(高级)


由于gf是模块化的框架,除了可以通过耦合且便捷的g模块来自动解析配置文件并获得单例对象之外,也支持开发者模块化使用gredis包。

但是这种用法对开发者的要求相对较高。


gredis提供了全局的分组配置功能,相关配置管理方法如下:


func SetConfig(config Config, name ...string)
func GetConfig(name ...string) (config Config, ok bool)
func RemoveConfig(name ...string)
func ClearConfig()


其中name参数为分组名称,即为通过分组来对配置对象进行管理,我们可以为不同的配置对象设置不同的分组名称,随后我们可以通过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))
}


相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
相关文章
|
域名解析 Kubernetes Java
图文详述Nacos配置中心使用:应用间配置共享、扩展配置文件加载优先级、新老版本差异
图文详述Nacos配置中心使用:应用间配置共享、扩展配置文件加载优先级、新老版本差异
2620 1
图文详述Nacos配置中心使用:应用间配置共享、扩展配置文件加载优先级、新老版本差异
|
9月前
|
消息中间件 SpringCloudAlibaba 前端开发
【Java项目】从0到1完成Nacos配置文件扩展和共享
【Java项目】从0到1完成Nacos配置文件扩展和共享
241 0
|
10月前
|
安全 Java 测试技术
SpringBoot配置文件数据加密自定义开发详解
本章将对SpringBoot配置文件中的数据加密做自定义开发. 在SpringBoot开发过程中配置文件是明文存放在application.yml或者application.properties文件中,这种配置方式会带来一定的安全隐患,本章将对这个问题提出一个简单的解决方案。
|
11月前
|
Nacos 微服务
Nacos配置管理-统一配置管理、配置自动刷新、多环境多服务共享配置
Nacos配置管理-统一配置管理、配置自动刷新、多环境多服务共享配置
158 0
|
11月前
|
XML 开发框架 JSON
03.【.netcore Configuration】新一代的配置系统Configuration在支持多数据源,热更新,层级化方面代码快速实践
03.【.netcore Configuration】新一代的配置系统Configuration在支持多数据源,热更新,层级化方面代码快速实践
92 0
|
JSON Java 数据库连接
Springboot 日志、配置文件、接口数据如何脱敏?老鸟们都是这样玩的!
Springboot 日志、配置文件、接口数据如何脱敏?老鸟们都是这样玩的!
|
SQL druid Java
基于springboot+jpa 实现多租户动态切换多数据源 - 使用Flyway实现多数据源数据库脚本管理和迭代更新
基于springboot+jpa 实现多租户动态切换多数据源 - 使用Flyway实现多数据源数据库脚本管理和迭代更新
1349 0
基于springboot+jpa 实现多租户动态切换多数据源 - 使用Flyway实现多数据源数据库脚本管理和迭代更新
|
JSON Java 数据库
SpringBoot2.x基础篇:灵活的使用外部化配置信息
`SpringBoot`提供了内部配置`application.yml`文件的方式来进行全局配置,还支持使用`profiles`来激活不同环境下使用不同的配置文件,而这种方式毕竟是已经打包完成了,因此存在一定的局限性,像数据库特殊敏感配置也可能存在泄露的风险,如何解决这种问题呢?我们来看看本章要讲到的外部配置的方式吧!!!
|
缓存 Java 测试技术
【Nacos源码之配置管理 七】服务端增删改配置数据之后如何通知集群中的其他机器
在后台管理界面可以直接增删改查所有的配置数据,那么问题来了 1. [x] 增删改数据这个操作,除了落库,还做了哪些操作? 1新增配置数据 打开后台新建一个配置
【Nacos源码之配置管理 七】服务端增删改配置数据之后如何通知集群中的其他机器
|
Java 数据库
SpringBoot——多环境配置文件、自定义配置文件的创建
SpringBoot——多环境配置文件、自定义配置文件的创建
SpringBoot——多环境配置文件、自定义配置文件的创建