缓存预热升级lockKey升级方式
This commit is contained in:
parent
1fe39e0547
commit
f558f78e1c
@ -10,6 +10,7 @@ package httpclient
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"git.zhangdeman.cn/zhangdeman/network/httpclient/implement"
|
"git.zhangdeman.cn/zhangdeman/network/httpclient/implement"
|
||||||
|
"git.zhangdeman.cn/zhangdeman/wrapper"
|
||||||
"net"
|
"net"
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
@ -297,8 +298,9 @@ func (hc *HttpClient) Request() *define.Response {
|
|||||||
"remaining_ttl": ttl,
|
"remaining_ttl": ttl,
|
||||||
}, hc.reqCfg)
|
}, hc.reqCfg)
|
||||||
// 配置了最小剩余时间,并且key剩余有效期小于最小剩余时间
|
// 配置了最小剩余时间,并且key剩余有效期小于最小剩余时间
|
||||||
// 预热加锁, 并发请求触发预热, 仅触发一个即可, 使用接口做key
|
// 预热加锁, 并发请求触发预热, 仅触发一个即可, 使用接口做key + query参数做key, 按照一般约定, 写请求不会做缓存, 只有读请求会
|
||||||
if err := hc.reqOption.CacheInstance.Lock(hc.reqCfg.FullUrl); err != nil {
|
lockKey := wrapper.String(hc.reqCfg.FullUrl + serialize.JSON.MarshalForStringIgnoreError(hc.reqCfg.Query)).Md5().Value
|
||||||
|
if err := hc.reqOption.CacheInstance.Lock(lockKey); err != nil {
|
||||||
log.RecordWarn("接口请求命中缓存, 缓存结果有效期大于剩余时长小于配置阈值, 触发预热, 加锁失败, 未执行预热", map[string]any{
|
log.RecordWarn("接口请求命中缓存, 缓存结果有效期大于剩余时长小于配置阈值, 触发预热, 加锁失败, 未执行预热", map[string]any{
|
||||||
"min_ttl": cachePreHeatConfig.MinTTL,
|
"min_ttl": cachePreHeatConfig.MinTTL,
|
||||||
"remaining_ttl": ttl,
|
"remaining_ttl": ttl,
|
||||||
@ -312,7 +314,7 @@ func (hc *HttpClient) Request() *define.Response {
|
|||||||
"lock_key": hc.reqCfg.FullUrl,
|
"lock_key": hc.reqCfg.FullUrl,
|
||||||
}, hc.reqCfg)
|
}, hc.reqCfg)
|
||||||
_ = hc.requestBackendApi()
|
_ = hc.requestBackendApi()
|
||||||
if err := hc.reqOption.CacheInstance.Unlock(hc.reqCfg.FullUrl); nil != err {
|
if err := hc.reqOption.CacheInstance.Unlock(lockKey); nil != err {
|
||||||
log.RecordError("接口请求命中缓存, 缓存结果有效期大于剩余时长小于配置阈值, 触发预热, 执行预热后, 释放锁失败", map[string]any{
|
log.RecordError("接口请求命中缓存, 缓存结果有效期大于剩余时长小于配置阈值, 触发预热, 执行预热后, 释放锁失败", map[string]any{
|
||||||
"min_ttl": cachePreHeatConfig.MinTTL,
|
"min_ttl": cachePreHeatConfig.MinTTL,
|
||||||
"remaining_ttl": ttl,
|
"remaining_ttl": ttl,
|
||||||
|
Loading…
x
Reference in New Issue
Block a user