Download model/token_cache.go from AZILS/new-api: direct link, hf CLI and curl.
- Browser
- Download file 1.59 kB
-
https://huggingface.co/spaces/AZILS/new-api/resolve/main/model/token_cache.go
- Command line
-
hf download hf://spaces/AZILS/new-api/model/token_cache.go
-
curl -L -o token_cache.go https://huggingface.co/spaces/AZILS/new-api/resolve/main/model/token_cache.go
1.59 kB
| package model | |
| import ( | |
| "fmt" | |
| "time" | |
| "github.com/QuantumNous/new-api/common" | |
| "github.com/QuantumNous/new-api/constant" | |
| ) | |
| func cacheSetToken(token Token) error { | |
| key := common.GenerateHMAC(token.Key) | |
| token.Clean() | |
| err := common.RedisHSetObj(fmt.Sprintf("token:%s", key), &token, time.Duration(common.RedisKeyCacheSeconds())*time.Second) | |
| if err != nil { | |
| return err | |
| } | |
| return nil | |
| } | |
| func cacheDeleteToken(key string) error { | |
| key = common.GenerateHMAC(key) | |
| err := common.RedisDelKey(fmt.Sprintf("token:%s", key)) | |
| if err != nil { | |
| return err | |
| } | |
| return nil | |
| } | |
| func cacheIncrTokenQuota(key string, increment int64) error { | |
| key = common.GenerateHMAC(key) | |
| err := common.RedisHIncrBy(fmt.Sprintf("token:%s", key), constant.TokenFiledRemainQuota, increment) | |
| if err != nil { | |
| return err | |
| } | |
| return nil | |
| } | |
| func cacheDecrTokenQuota(key string, decrement int64) error { | |
| return cacheIncrTokenQuota(key, -decrement) | |
| } | |
| func cacheSetTokenField(key string, field string, value string) error { | |
| key = common.GenerateHMAC(key) | |
| err := common.RedisHSetField(fmt.Sprintf("token:%s", key), field, value) | |
| if err != nil { | |
| return err | |
| } | |
| return nil | |
| } | |
| // CacheGetTokenByKey 从缓存中获取 token,如果缓存中不存在,则从数据库中获取 | |
| func cacheGetTokenByKey(key string) (*Token, error) { | |
| hmacKey := common.GenerateHMAC(key) | |
| if !common.RedisEnabled { | |
| return nil, fmt.Errorf("redis is not enabled") | |
| } | |
| var token Token | |
| err := common.RedisHGetObj(fmt.Sprintf("token:%s", hmacKey), &token) | |
| if err != nil { | |
| return nil, err | |
| } | |
| token.Key = key | |
| return &token, nil | |
| } | |