命令扩展


为了便于后续对redis操作在底层扩展,我们对go-redis 命令进行了统一封装
所有命令位于redisdao/command.go文件中

示例

我们先看下Get, Set 在redisdao中的实现方式

  1. func (this *xesRedis) Get(keyName string, keyParams []interface{}) (back string, err error) {
  2. this.setInfo(keyName, keyParams, "Get", []interface{}{})
  3. res := this.exec()
  4. return res.ToString()
  5. }
  6. func (this *xesRedis) Set(keyName string, keyParams []interface{}, value interface{}, ex int64) (back string, err error) {
  7. args := []interface{}{value}
  8. if ex > 0 {
  9. args = append(args, "ex")
  10. args = append(args, ex)
  11. }
  12. this.setInfo(keyName, keyParams, "Set", args)
  13. return this.execCmd().ToString()
  14. }

参数keyParams 为切片类型,这个主要是为了格式化 keyName 时使用,比如我们keyName 可能是形如my_redis_key_%v_%v 这个样的带有占位符的字符串
这样的设计主要是为了使我们的key更通用!

exec() or execCmd() ?

  • exec() 同步
  • execCmd() 支持协程异步执行