x
This commit is contained in:
+26
-16
@@ -27,7 +27,6 @@ var sillyGirl = MakeBucket("sillyGirl")
|
|||||||
// }
|
// }
|
||||||
|
|
||||||
var MakeBucketlocker sync.Mutex
|
var MakeBucketlocker sync.Mutex
|
||||||
var app storage.Bucket
|
|
||||||
|
|
||||||
func MakeBucket(name string) storage.Bucket {
|
func MakeBucket(name string) storage.Bucket {
|
||||||
MakeBucketlocker.Lock()
|
MakeBucketlocker.Lock()
|
||||||
@@ -45,7 +44,8 @@ func MakeBucket(name string) storage.Bucket {
|
|||||||
// Set = redis.Set
|
// Set = redis.Set
|
||||||
// logs.Info("已使用redis进行数据存储")
|
// logs.Info("已使用redis进行数据存储")
|
||||||
// }
|
// }
|
||||||
app = bkt
|
var app = bkt
|
||||||
|
isredis := false
|
||||||
if def := bkt.GetString("storage"); def == "redis" {
|
if def := bkt.GetString("storage"); def == "redis" {
|
||||||
func() {
|
func() {
|
||||||
defer func() {
|
defer func() {
|
||||||
@@ -53,6 +53,8 @@ func MakeBucket(name string) storage.Bucket {
|
|||||||
if err != nil {
|
if err != nil {
|
||||||
// console.Warn("redis异常,已默认启用boltdb进行数据存储")
|
// console.Warn("redis异常,已默认启用boltdb进行数据存储")
|
||||||
bkt = app
|
bkt = app
|
||||||
|
} else {
|
||||||
|
isredis = true
|
||||||
}
|
}
|
||||||
}()
|
}()
|
||||||
bkt = redis.Initsillyplus(app.GetString("redis_addr"), app.GetString("redis_password"))
|
bkt = redis.Initsillyplus(app.GetString("redis_addr"), app.GetString("redis_password"))
|
||||||
@@ -63,24 +65,32 @@ func MakeBucket(name string) storage.Bucket {
|
|||||||
}
|
}
|
||||||
logs.Info("默认使用boltdb进行数据存储")
|
logs.Info("默认使用boltdb进行数据存储")
|
||||||
}
|
}
|
||||||
|
storage.Watch(bkt, "storage", func(old, new, key string) *storage.Final {
|
||||||
storage.Watch(app, "storage", func(old, new, _ string) *storage.Final {
|
if isredis {
|
||||||
if new != "redis" {
|
if new == "boltdb" {
|
||||||
return nil
|
app.Set2(key, new)
|
||||||
}
|
return &storage.Final{
|
||||||
message := "Redis连接成功,重启生效!"
|
Message: "重启生效!",
|
||||||
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 {
|
} else {
|
||||||
return &storage.Final{
|
if new != "redis" {
|
||||||
Message: message,
|
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 {
|
storage.Watch(app, "redis_addr", func(old, new, _ string) *storage.Final {
|
||||||
message := "Redis连接成功,重启生效!"
|
message := "Redis连接成功,重启生效!"
|
||||||
|
|||||||
@@ -113,6 +113,37 @@ func (bucket *Bucket) Delete() error {
|
|||||||
return err
|
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) {
|
func (bucket *Bucket) Set(key interface{}, value interface{}) (string, error) {
|
||||||
new := ""
|
new := ""
|
||||||
msg := ""
|
msg := ""
|
||||||
|
|||||||
@@ -21,6 +21,7 @@ var DisableHandle = func(uuid string) {
|
|||||||
|
|
||||||
type Bucket interface {
|
type Bucket interface {
|
||||||
Set(interface{}, interface{}) (string, error)
|
Set(interface{}, interface{}) (string, error)
|
||||||
|
Set2(interface{}, interface{}) (string, error)
|
||||||
Copy(string) Bucket
|
Copy(string) Bucket
|
||||||
IsEmpty() (bool, error)
|
IsEmpty() (bool, error)
|
||||||
Size() (int64, error)
|
Size() (int64, error)
|
||||||
|
|||||||
@@ -177,6 +177,31 @@ func Get(key string) string {
|
|||||||
return v
|
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) {
|
func (bucket *Bucket) Set(key interface{}, value interface{}) (string, error) {
|
||||||
new := ""
|
new := ""
|
||||||
msg := ""
|
msg := ""
|
||||||
|
|||||||
Reference in New Issue
Block a user