Ai
3 Star 12 Fork 6

up-zero/redis-desktop-client

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
key.go 3.53 KB
一键复制 编辑 原始数据 按行查看 历史
GetcharZp 提交于 2022-11-30 23:16 +08:00 . fix 优化*redis.Client的获取
package service
import (
"context"
"gitee.com/up-zero/redis-desktop-client/internal/define"
"gitee.com/up-zero/redis-desktop-client/internal/helper"
"github.com/go-redis/redis/v8"
)
// KeyList 键列表
func KeyList(req *define.KeyListRequest) ([]string, error) {
rdb, err := helper.GetRedisClient(req.ConnIdentity, req.Db)
var count = define.DefaultKeyLen
if req.Keyword != "" {
count = define.MaxKeyLen
}
res, _, err := rdb.Scan(context.Background(), 0, "*"+req.Keyword+"*", count).Result()
if err != nil {
return nil, err
}
return res, nil
}
// GetKeyValue 获取键值对
func GetKeyValue(req *define.KeyValueRequest) (*define.KeyValueReply, error) {
rdb, err := helper.GetRedisClient(req.ConnIdentity, req.Db)
_type, err := rdb.Type(context.Background(), req.Key).Result()
if err != nil {
return nil, err
}
var reply = &define.KeyValueReply{
Type: _type,
}
if _type == "string" {
v, err := rdb.Get(context.Background(), req.Key).Result()
if err != nil {
return nil, err
}
reply.Value = v
} else if _type == "hash" {
keys, _, err := rdb.HScan(context.Background(), req.Key, 0, "", define.MaxHashLen).Result()
if err != nil {
return nil, err
}
data := make([]*define.KeyValue, 0, len(keys)/2)
for i := 0; i < len(keys); i += 2 {
data = append(data, &define.KeyValue{
Key: keys[i],
Value: keys[i+1],
})
}
reply.Value = data
} else if _type == "list" {
list, err := rdb.LRange(context.Background(), req.Key, 0, define.MaxListLen-1).Result()
if err != nil {
return nil, err
}
data := make([]*define.KeyValue, 0, len(list))
for i := 0; i < len(list); i++ {
data = append(data, &define.KeyValue{
Value: list[i],
})
}
reply.Value = data
} else if _type == "set" {
sets, _, err := rdb.SScan(context.Background(), req.Key, 0, "", define.MaxSetLen).Result()
if err != nil {
return nil, err
}
data := make([]*define.KeyValue, 0, len(sets))
for i := 0; i < len(sets); i++ {
data = append(data, &define.KeyValue{
Value: sets[i],
})
}
reply.Value = data
} else if _type == "zset" {
z, err := rdb.ZRevRangeWithScores(context.Background(), req.Key, 0, define.MaxZSetLen-1).Result()
if err != nil {
return nil, err
}
reply.Value = z
}
ttl, err := rdb.TTL(context.Background(), req.Key).Result()
if err != nil {
return nil, err
}
reply.TTL = ttl
return reply, nil
}
// DeleteKeyValue 删除键值对
func DeleteKeyValue(req *define.KeyValueRequest) error {
rdb, err := helper.GetRedisClient(req.ConnIdentity, req.Db)
_, err = rdb.Del(context.Background(), req.Key).Result()
return err
}
// CreateKeyValue 创建键值对
func CreateKeyValue(req *define.CreateKeyValueRequest) error {
rdb, err := helper.GetRedisClient(req.ConnIdentity, req.Db)
if req.Type == "string" {
err = rdb.Set(context.Background(), req.Key, "value", -1).Err()
} else if req.Type == "hash" {
err = rdb.HSet(context.Background(), req.Key, map[string]string{"key": "value"}).Err()
} else if req.Type == "list" {
err = rdb.RPush(context.Background(), req.Key, "value").Err()
} else if req.Type == "set" {
err = rdb.SAdd(context.Background(), req.Key, "value").Err()
} else if req.Type == "zset" {
err = rdb.ZAdd(context.Background(), req.Key, &redis.Z{
Score: 0,
Member: "value",
}).Err()
}
return err
}
// UpdateKeyValue 更新键值对数据
func UpdateKeyValue(req *define.UpdateKeyValueRequest) error {
rdb, err := helper.GetRedisClient(req.ConnIdentity, req.Db)
// type ==> string
err = rdb.Set(context.Background(), req.Key, req.Value, req.TTL).Err()
return err
}
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
1
https://gitee.com/up-zero/redis-desktop-client.git
git@gitee.com:up-zero/redis-desktop-client.git
up-zero
redis-desktop-client
redis-desktop-client
v0.1.2

搜索帮助