x
This commit is contained in:
+26
-16
@@ -27,7 +27,6 @@ var sillyGirl = MakeBucket("sillyGirl")
|
||||
// }
|
||||
|
||||
var MakeBucketlocker sync.Mutex
|
||||
var app storage.Bucket
|
||||
|
||||
func MakeBucket(name string) storage.Bucket {
|
||||
MakeBucketlocker.Lock()
|
||||
@@ -45,7 +44,8 @@ func MakeBucket(name string) storage.Bucket {
|
||||
// Set = redis.Set
|
||||
// logs.Info("已使用redis进行数据存储")
|
||||
// }
|
||||
app = bkt
|
||||
var app = bkt
|
||||
isredis := false
|
||||
if def := bkt.GetString("storage"); def == "redis" {
|
||||
func() {
|
||||
defer func() {
|
||||
@@ -53,6 +53,8 @@ func MakeBucket(name string) storage.Bucket {
|
||||
if err != nil {
|
||||
// console.Warn("redis异常,已默认启用boltdb进行数据存储")
|
||||
bkt = app
|
||||
} else {
|
||||
isredis = true
|
||||
}
|
||||
}()
|
||||
bkt = redis.Initsillyplus(app.GetString("redis_addr"), app.GetString("redis_password"))
|
||||
@@ -63,24 +65,32 @@ func MakeBucket(name string) storage.Bucket {
|
||||
}
|
||||
logs.Info("默认使用boltdb进行数据存储")
|
||||
}
|
||||
|
||||
storage.Watch(app, "storage", func(old, new, _ string) *storage.Final {
|
||||
if new != "redis" {
|
||||
return nil
|
||||
}
|
||||
message := "Redis连接成功,重启生效!"
|
||||
err := redis.Try(app.GetString("redis_addr"), app.GetString("redis_password"))
|
||||
if err != nil {
|
||||
message = "Redis连接失败,操作无效:" + err.Error()
|
||||
return &storage.Final{
|
||||
Error: errors.New(message),
|
||||
storage.Watch(bkt, "storage", func(old, new, key string) *storage.Final {
|
||||
if isredis {
|
||||
if new == "boltdb" {
|
||||
app.Set2(key, new)
|
||||
return &storage.Final{
|
||||
Message: "重启生效!",
|
||||
}
|
||||
}
|
||||
} else {
|
||||
return &storage.Final{
|
||||
Message: message,
|
||||
if new != "redis" {
|
||||
return nil
|
||||
}
|
||||
message := "Redis连接成功,重启生效!"
|
||||
err := redis.Try(app.GetString("redis_addr"), app.GetString("redis_password"))
|
||||
if err != nil {
|
||||
message = "Redis连接失败,操作无效:" + err.Error()
|
||||
return &storage.Final{
|
||||
Error: errors.New(message),
|
||||
}
|
||||
} else {
|
||||
return &storage.Final{
|
||||
Message: message,
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return nil
|
||||
})
|
||||
storage.Watch(app, "redis_addr", func(old, new, _ string) *storage.Final {
|
||||
message := "Redis连接成功,重启生效!"
|
||||
|
||||
@@ -113,6 +113,37 @@ func (bucket *Bucket) Delete() error {
|
||||
return err
|
||||
}
|
||||
|
||||
func (bucket *Bucket) Set2(key interface{}, value interface{}) (string, error) {
|
||||
new := ""
|
||||
msg := ""
|
||||
k := fmt.Sprint(key)
|
||||
switch value := value.(type) {
|
||||
case []byte:
|
||||
new = string(value)
|
||||
case string:
|
||||
new = value
|
||||
case nil:
|
||||
default:
|
||||
new = fmt.Sprint(value)
|
||||
}
|
||||
return msg, db.Update(func(tx *bolt.Tx) error {
|
||||
b, err := tx.CreateBucketIfNotExists([]byte(bucket.name))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
if new == "" {
|
||||
if err := b.Delete([]byte(k)); err != nil {
|
||||
return err
|
||||
}
|
||||
} else {
|
||||
if err := b.Put([]byte(k), []byte(new)); err != nil {
|
||||
return err
|
||||
}
|
||||
}
|
||||
return nil
|
||||
})
|
||||
}
|
||||
|
||||
func (bucket *Bucket) Set(key interface{}, value interface{}) (string, error) {
|
||||
new := ""
|
||||
msg := ""
|
||||
|
||||
@@ -21,6 +21,7 @@ var DisableHandle = func(uuid string) {
|
||||
|
||||
type Bucket interface {
|
||||
Set(interface{}, interface{}) (string, error)
|
||||
Set2(interface{}, interface{}) (string, error)
|
||||
Copy(string) Bucket
|
||||
IsEmpty() (bool, error)
|
||||
Size() (int64, error)
|
||||
|
||||
@@ -177,6 +177,31 @@ func Get(key string) string {
|
||||
return v
|
||||
}
|
||||
|
||||
func (bucket *Bucket) Set2(key interface{}, value interface{}) (string, error) {
|
||||
new := ""
|
||||
msg := ""
|
||||
k := fmt.Sprint(key)
|
||||
switch value := value.(type) {
|
||||
case []byte:
|
||||
new = string(value)
|
||||
case string:
|
||||
new = value
|
||||
case nil:
|
||||
default:
|
||||
new = fmt.Sprint(value)
|
||||
}
|
||||
if !utils.SlaveMode {
|
||||
if new == "" {
|
||||
return msg, db.HDel(ctx, bucket.name, k).Err()
|
||||
} else {
|
||||
return msg, db.HSet(ctx, bucket.name, k, new).Err()
|
||||
}
|
||||
} else {
|
||||
return toMaster(bucket.name, k, new)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
func (bucket *Bucket) Set(key interface{}, value interface{}) (string, error) {
|
||||
new := ""
|
||||
msg := ""
|
||||
|
||||
Reference in New Issue
Block a user