2 Commits

  1. BIN
      周新忠学习笔记/4.2/1.jpg
  2. BIN
      周新忠学习笔记/4.2/2.jpg
  3. BIN
      周新忠学习笔记/4.2/3.jpg
  4. BIN
      周新忠学习笔记/4.2/4.jpg
  5. 72
      周新忠学习笔记/4.2/周新忠4月2日学习笔记.md

BIN
周新忠学习笔记/4.2/1.jpg

After

Width: 1080  |  Height: 1920  |  Size: 1.2 MiB

BIN
周新忠学习笔记/4.2/2.jpg

After

Width: 1080  |  Height: 1920  |  Size: 1.2 MiB

BIN
周新忠学习笔记/4.2/3.jpg

After

Width: 1080  |  Height: 1920  |  Size: 1.2 MiB

BIN
周新忠学习笔记/4.2/4.jpg

After

Width: 1920  |  Height: 1080  |  Size: 1.1 MiB

72
周新忠学习笔记/4.2/周新忠4月2日学习笔记.md

@ -0,0 +1,72 @@
## 技术方面
### gredis
配置
```yaml
redis:
default:
address: 端口+地址
db: 数据库编号
pass: 密码
```
String : Set/Get
```go
var,err:=g.Redis().Set(ctx,"key","value")//设置string类型数据
value,err:=g.Redis().Get(ctx,"key")//获取string类型数据,value为*gvar.Var格式
err:=g.Redis().SetEx(ctx,"key","value",ttl)//设置值并设定ttl
g.Redis().Do(ctx,"SET",key,value)//根据传入的参数顺序拼接redis语句,按每个关键词/值进行拆分
//获取redis长链接
conn,_:=g.Redis().conn(ctx)
defer conn.Close()
conn.Do()//执行命令
```
### gdb钩子
```go
//钩子类型:
Select Insert Update Delete
type HookHandler struct{
Select HookFuncSelect
Insert HookFuncInsert
Update HookFuncUpdate
Delete HookFuncDelete
}
//注册方法:
func (m *Model)Hook(hook HookHandler) *Model{}
//使用方法:
1.初始化钩子
hook:=gdb.HookHandler{
Select:func (ctx context.Context,in *gdb.HookSelectInput)(result gdb.Result,err error){
//这里写相应的处理逻辑
result,err:=in.Next(ctx)//此处之前是Before钩子,此处之后是After钩子
}
}
2.绑定钩子
g.Model("table").Hook(hook)//一次性使用
func init(){
g.DB().Model("table").Hook(hook)//全局使用
}
```
在demo项目中添加了新的课程查询功能,在查询时加入了redis做缓存中间件,查询时先看redis内有没有数据,有则直接返回缓存数据,没有再请求数据库
添加了数据库钩子,在增删改操作中绑定了全局钩子,如果进行了增删改操作则删除redis中缓存的课程List,保证不会读到未修改的脏数据
现想添加课程-用户的多对多联合查询,但目前尝试了ScanList和With关联均失败
Loading…
Cancel
Save