同步操作将从 goflyfox/gfstudy 强制同步,此操作会覆盖自 Fork 仓库以来所做的任何修改,且无法恢复!!!
确定后同步将在后台操作,完成时将刷新页面,请耐心等待。
Redis客户端由gredis
模块实现,底层采用了链接池设计。
Redis是当前比较热门的NOSQL系统之一,它是一个开源的使用ANSI c语言编写的key-value存储系统(区别于MySQL的二维表格的形式存储。)。性能出色:Redis读取的速度是110000次/s,写的速度是81000次/s。
String: 字符串、Hash: 散列、List: 列表、Set: 集合、Sorted Set: 有序集合
PUB/SUB:发布订阅;
在5.0支持了全新数据类型:Streams
缓存,登录验证码,消息队列,过滤器,分布式锁,限流等
绝大部分情况下推荐使用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) |
其中的default
和cache
分别表示配置分组名称,我们在程序中可以通过该名称获取对应配置的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
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())
}
# Redis数据库配置
[redis]
default = "127.0.0.1:6379,0"
cache = "127.0.0.1:6379,1,123456?idleTimeout=600"
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。