Bläddra i källkod

增加列出所有

John Doe 4 månader sedan
förälder
incheckning
5138e9594d
2 ändrade filer med 99 tillägg och 3 borttagningar
  1. 69 0
      config/redis.go
  2. 30 3
      config/redis_test.go

+ 69 - 0
config/redis.go

@@ -9,7 +9,19 @@ import (
 	"gogs.daxia.dev/huanan/pkg.daxia.dev.git/rdb"
 )
 
+var Prefix = ""
+
+func InitPrefix(prefix string) {
+	Prefix = prefix
+}
+
 func GetString(key string, defaultVal string) string {
+	if Prefix == "" {
+		logrus.Fatal("prefix没设置")
+	}
+
+	key = Prefix + key
+
 	data, err := rdb.GetRDB().Get(context.Background(), key).Result()
 	if err != nil {
 		logrus.Error(err)
@@ -20,6 +32,12 @@ func GetString(key string, defaultVal string) string {
 }
 
 func GetInt(key string, defaultVal int) int {
+	if Prefix == "" {
+		logrus.Fatal("prefix没设置")
+	}
+
+	key = Prefix + key
+
 	data, err := rdb.GetRDB().Get(context.Background(), key).Result()
 	if err != nil {
 		logrus.Error(err)
@@ -30,6 +48,12 @@ func GetInt(key string, defaultVal int) int {
 }
 
 func GetInt64(key string, defaultVal int64) int64 {
+	if Prefix == "" {
+		logrus.Fatal("prefix没设置")
+	}
+
+	key = Prefix + key
+
 	data, err := rdb.GetRDB().Get(context.Background(), key).Result()
 	if err != nil {
 		logrus.Error(err)
@@ -44,6 +68,12 @@ func SetInt(key string, val int) error {
 }
 
 func SetString(key string, val string) error {
+	if Prefix == "" {
+		logrus.Fatal("prefix没设置")
+	}
+
+	key = Prefix + key
+
 	_, err := rdb.GetRDB().Set(context.Background(), key, val, 0).Result()
 	if err != nil {
 		logrus.Error(err)
@@ -52,3 +82,42 @@ func SetString(key string, val string) error {
 
 	return nil
 }
+
+func ListAll() (map[string]string, error) {
+	if Prefix == "" {
+		logrus.Fatal("prefix没设置")
+	}
+
+	var err error
+
+	resultMap := map[string]string{}
+	var cursor uint64
+	for {
+		var keys []string
+		keys, cursor, err = rdb.GetRDB().Scan(context.Background(), cursor, Prefix+"*", 0).Result()
+		if err != nil {
+			logrus.Error(err)
+
+			return nil, err
+		}
+
+		for _, key := range keys {
+			//fmt.Println("key", key)
+			data, err := rdb.GetRDB().Get(context.Background(), key).Result()
+			if err != nil {
+				logrus.Error(err)
+				return nil, err
+			}
+
+			resultMap[key] = data
+		}
+
+		// 没有更多key了
+		if cursor == 0 {
+			break
+		}
+	}
+
+	return resultMap, nil
+
+}

+ 30 - 3
config/redis_test.go

@@ -1,13 +1,15 @@
 package config
 
 import (
+	"fmt"
 	"testing"
 
+	"github.com/sirupsen/logrus"
 	"github.com/spf13/viper"
 	"gogs.daxia.dev/huanan/pkg.daxia.dev.git/rdb"
 )
 
-func TestConfig(t *testing.T) {
+func Setup() {
 	viper.Set("rdb.addr", "localhost:6379")
 	viper.Set("rdb.password", "")
 	viper.Set("rdb.db", "1")
@@ -15,10 +17,14 @@ func TestConfig(t *testing.T) {
 
 	err := rdb.InitClient()
 	if err != nil {
-		t.Fatal(err)
+		logrus.Fatal(err)
 	}
+}
+
+func TestConfig(t *testing.T) {
+
+	Setup()
 
-	//
 	SetString("test_data1", "test")
 
 	data := GetString("test_data1", "empty")
@@ -32,3 +38,24 @@ func TestConfig(t *testing.T) {
 		t.Fatal(`intData != 1`)
 	}
 }
+
+func TestList(t *testing.T) {
+	Setup()
+
+	InitPrefix("test_config")
+
+	SetString("test_data1", "test1")
+	SetString("test_data2", "test2")
+	SetInt("test_data3", 1)
+
+	resultMap, err := ListAll()
+	if err != nil {
+		t.Fatal(err)
+	}
+
+	if len(resultMap) != 3 {
+		t.Fatal("len(resultMap) != 3")
+	}
+
+	fmt.Println(resultMap)
+}