命令扩展
为了便于后续对redis操作在底层扩展,我们对go-redis 命令进行了统一封装
所有命令位于redisdao/command.go
文件中
示例
我们先看下Get
, Set
在redisdao中的实现方式
func (this *xesRedis) Get(keyName string, keyParams []interface{}) (back string, err error) {
this.setInfo(keyName, keyParams, "Get", []interface{}{})
res := this.exec()
return res.ToString()
}
func (this *xesRedis) Set(keyName string, keyParams []interface{}, value interface{}, ex int64) (back string, err error) {
args := []interface{}{value}
if ex > 0 {
args = append(args, "ex")
args = append(args, ex)
}
this.setInfo(keyName, keyParams, "Set", args)
return this.execCmd().ToString()
}
参数keyParams
为切片类型,这个主要是为了格式化 keyName
时使用,比如我们keyName 可能是形如my_redis_key_%v_%v
这个样的带有占位符的字符串
这样的设计主要是为了使我们的key更通用!
exec() or execCmd() ?
- exec() 同步
- execCmd() 支持协程异步执行