| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091 |
- package redis
- import (
- "context"
- "encoding/json"
- "fmt"
- "fwh-toolbox-server/cache"
- "fwh-toolbox-server/utils/minio"
- )
- var (
- autoUpdateConfigCtx = context.Background()
- autoUpdateConfigPrefix = "fwhtoolbox:autoUpdateConfig:"
- )
- func RefreshAutoUpdateConfigFileInfo(objList []minio.MinioFileObject) error {
- key := autoUpdateConfigPrefix + "fileInfo"
- values := make([]interface{}, 0, len(objList))
- // 清空整个 List
- // LTrim start>stop => 清空
- if err := cache.LTrim(autoUpdateConfigCtx, key, 1, 0); err != nil {
- return err
- }
- for _, obj := range objList {
- b, err := json.Marshal(obj)
- if err != nil {
- return err
- }
- values = append(values, b)
- }
- // 右插入(顺序保持)
- return cache.RPush(autoUpdateConfigCtx, key, values...)
- }
- func GetAutoUpdateConfigFileInfoTotal() (int64, error) {
- key := autoUpdateConfigPrefix + "fileInfo"
- return cache.LLen(autoUpdateConfigCtx, key)
- }
- // page 从1开始
- func GetAutoUpdateConfigFileInfoByPage(page uint, size uint) ([]minio.MinioFileObject, error) {
- total, err := GetAutoUpdateConfigFileInfoTotal()
- if err != nil {
- return nil, err
- }
- if page < 1 {
- return nil, fmt.Errorf("param page error(page = %d).", page)
- }
- if size < 1 {
- return nil, fmt.Errorf("param size error(size = %d).", size)
- }
- key := autoUpdateConfigPrefix + "fileInfo"
- // start := int64((page - 1) * size)
- // stop := int64(page*size - 1)
- start := total - int64((page-1)*size) - 1
- stop := total - int64(page*size)
- if start < 0 {
- return nil, fmt.Errorf("param page too large(page = %d).", page)
- }
- if stop < 0 {
- stop = 0
- }
- // 倒序查询,start和stop调换
- strData, err := cache.LRange(autoUpdateConfigCtx, key, stop, start)
- if err != nil {
- return nil, err
- }
- objects := make([]minio.MinioFileObject, 0, len(strData))
- // for _, s := range strData {
- // 倒转数组,因为 LRange 是从左到右,这里要倒序
- for i := len(strData) - 1; i >= 0; i-- {
- var obj minio.MinioFileObject
- s := strData[i]
- if err := json.Unmarshal([]byte(s), &obj); err != nil {
- return nil, err
- }
- objects = append(objects, obj)
- }
- return objects, nil
- }
|