diff options
author | wxiaoguang <wxiaoguang@gmail.com> | 2022-04-02 00:34:57 +0800 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-04-02 00:34:57 +0800 |
commit | 4f27c289472a4cfafb5a9b0e38e6a3413c30c562 (patch) | |
tree | 4a9388cfaf2efe4e9d0ed0242736769ef7e3e083 /modules/cache/cache_redis.go | |
parent | 4c5cb1e2f2c7a1fcc3b151192bd45bd1bbc090bd (diff) | |
download | gitea-4f27c289472a4cfafb5a9b0e38e6a3413c30c562.tar.gz gitea-4f27c289472a4cfafb5a9b0e38e6a3413c30c562.zip |
Remove legacy `unknwon/com` package (#19298)
Follows: #19284
* The `CopyDir` is only used inside test code
* Rewrite `ToSnakeCase` with more test cases
* The `RedisCacher` only put strings into cache, here we use internal `toStr` to replace the legacy `ToStr`
* The `UniqueQueue` can use string as ID directly, no need to call `ToStr`
Diffstat (limited to 'modules/cache/cache_redis.go')
-rw-r--r-- | modules/cache/cache_redis.go | 33 |
1 files changed, 25 insertions, 8 deletions
diff --git a/modules/cache/cache_redis.go b/modules/cache/cache_redis.go index e4b9a70f63..ff6c8d424c 100644 --- a/modules/cache/cache_redis.go +++ b/modules/cache/cache_redis.go @@ -6,11 +6,11 @@ package cache import ( "fmt" + "strconv" "time" "code.gitea.io/gitea/modules/graceful" "code.gitea.io/gitea/modules/nosql" - "code.gitea.io/gitea/modules/util" "gitea.com/go-chi/cache" "github.com/go-redis/redis/v8" @@ -24,20 +24,37 @@ type RedisCacher struct { occupyMode bool } -// Put puts value into cache with key and expire time. +// toStr convert string/int/int64 interface to string. it's only used by the RedisCacher.Put internally +func toStr(v interface{}) string { + if v == nil { + return "" + } + switch v := v.(type) { + case string: + return v + case []byte: + return string(v) + case int: + return strconv.FormatInt(int64(v), 10) + case int64: + return strconv.FormatInt(v, 10) + default: + return fmt.Sprint(v) // as what the old com.ToStr does in most cases + } +} + +// Put puts value (string type) into cache with key and expire time. // If expired is 0, it lives forever. func (c *RedisCacher) Put(key string, val interface{}, expire int64) error { + // this function is not well-designed, it only puts string values into cache key = c.prefix + key if expire == 0 { - if err := c.c.Set(graceful.GetManager().HammerContext(), key, util.ToStr(val), 0).Err(); err != nil { + if err := c.c.Set(graceful.GetManager().HammerContext(), key, toStr(val), 0).Err(); err != nil { return err } } else { - dur, err := time.ParseDuration(util.ToStr(expire) + "s") - if err != nil { - return err - } - if err = c.c.Set(graceful.GetManager().HammerContext(), key, util.ToStr(val), dur).Err(); err != nil { + dur := time.Duration(expire) * time.Second + if err := c.c.Set(graceful.GetManager().HammerContext(), key, toStr(val), dur).Err(); err != nil { return err } } |