|
@@ -0,0 +1,81 @@
|
|
|
|
+package redis_client
|
|
|
|
+
|
|
|
|
+import (
|
|
|
|
+ "context"
|
|
|
|
+ "errors"
|
|
|
|
+ "github.com/redis/go-redis/v9"
|
|
|
|
+ "time"
|
|
|
|
+)
|
|
|
|
+
|
|
|
|
+type Client struct {
|
|
|
|
+ redisClient *redis.Client
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func NewClient(address string, userName string, password string, db int) (*Client, error) {
|
|
|
|
+ if address == "" {
|
|
|
|
+ return nil, errors.New("redis address不能为空")
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return &Client{redisClient: redis.NewClient(&redis.Options{
|
|
|
|
+ Addr: address,
|
|
|
|
+ Username: userName,
|
|
|
|
+ Password: password,
|
|
|
|
+ DB: db,
|
|
|
|
+ })}, nil
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func Destroy(client *Client) error {
|
|
|
|
+ if client == nil || client.redisClient == nil {
|
|
|
|
+ return nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ err := client.redisClient.Close()
|
|
|
|
+ if err != nil {
|
|
|
|
+ return err
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ client.redisClient = nil
|
|
|
|
+
|
|
|
|
+ return nil
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func (client *Client) Set(key string, value any, expireSec int64) error {
|
|
|
|
+ cmd := client.redisClient.Set(context.Background(), key, value, time.Second*time.Duration(expireSec))
|
|
|
|
+ if cmd.Err() != nil {
|
|
|
|
+ return cmd.Err()
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return nil
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func (client *Client) Get(key string) (any, error) {
|
|
|
|
+ cmd := client.redisClient.Get(context.Background(), key)
|
|
|
|
+ if cmd.Err() != nil {
|
|
|
|
+ if cmd.Err().Error() == redis.Nil.Error() {
|
|
|
|
+ return nil, nil
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return nil, cmd.Err()
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return cmd.Val(), nil
|
|
|
|
+}
|
|
|
|
+
|
|
|
|
+func (client *Client) GetMulti(keys []string) (map[string]any, error) {
|
|
|
|
+ result := make(map[string]any)
|
|
|
|
+ for _, key := range keys {
|
|
|
|
+ cmd := client.redisClient.Get(context.Background(), key)
|
|
|
|
+ if cmd.Err() != nil {
|
|
|
|
+ if cmd.Err().Error() == redis.Nil.Error() {
|
|
|
|
+ result[key] = nil
|
|
|
|
+ continue
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return nil, cmd.Err()
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ result[key] = cmd.Val()
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ return result, nil
|
|
|
|
+}
|