297ocsadapter
104 строки · 2.1 Кб
1package redis
2
3import (
4"github.com/go-redis/redis"
5"istio.io/pkg/log"
6"os"
7"strconv"
8)
9
10var client *redis.Client
11
12func GetUsedUnits(applicationId string) int {
13val, err := getRedisClient().HGet(applicationId, "used").Result()
14if err == redis.Nil {
15return 0
16}
17units, parseErr := strconv.Atoi(val)
18if parseErr != nil {
19log.Fatalf(parseErr.Error())
20}
21return units
22}
23
24func GetRemainingUnits(applicationId string) int {
25val, err := getRedisClient().HGet(applicationId, "remaining").Result()
26if err == redis.Nil {
27return 0
28}
29units, parseErr := strconv.Atoi(val)
30if parseErr != nil {
31log.Fatalf(parseErr.Error())
32}
33return units
34}
35
36func SetUsedUnits(applicationId string, used int) {
37_, err := getRedisClient().HSet(applicationId, "used", used).Result()
38if err != nil {
39log.Errorf(err.Error())
40}
41}
42
43func SetRemainingUnits(applicationId string, remaining int) {
44_, err := getRedisClient().HSet(applicationId, "remaining", remaining).Result()
45if err != nil {
46log.Errorf(err.Error())
47}
48}
49
50func GetUsageInfo() map[string]int {
51resultMap := make(map[string]int)
52keys, _, err := getRedisClient().Scan(0, "*", 0).Result()
53if err != nil {
54log.Errorf(err.Error())
55}
56for _, key := range keys {
57val := GetUsedUnits(key)
58resultMap[key] = val
59}
60return resultMap
61}
62
63func IncreaseUsedValue(applicationId string) {
64val := GetUsedUnits(applicationId)
65SetUsedUnits(applicationId, val+1)
66}
67
68func DecreaseRemainingValue(applicationId string) {
69val := GetRemainingUnits(applicationId)
70SetRemainingUnits(applicationId, val-1)
71}
72
73func getRedisClient() *redis.Client {
74if client != nil {
75return client
76}
77
78var (
79host = getEnv("REDIS_HOST", "localhost")
80port = getEnv("REDIS_PORT", "6379")
81password = getEnv("REDIS_PASSWORD", "")
82)
83
84client = redis.NewClient(&redis.Options{
85Addr: host + ":" + port,
86Password: password,
87DB: 0,
88})
89
90_, err := client.Ping().Result()
91if err != nil {
92log.Fatalf(err.Error())
93}
94
95return client
96}
97
98func getEnv(key, defaultValue string) string {
99value := os.Getenv(key)
100if value == "" {
101return defaultValue
102}
103return value
104}
105