hset :
//将哈希表 key 中的字段 field 的值设为 value 。 //HSET KEY_NAME FIELD VALUE _,err = r.Do("hset","students","name","张三") if err != nil { fmt.Println("hset error : ", err) return }
hget :
//获取存储在哈希表中指定字段的值 //HGET KEY_NAME FIELD_NAME name,err := redis.String(r.Do("hget","students","name")) if err != nil { fmt.Println("hget error : ", err) return } fmt.Println("name = ",name) // name = 张三
HEXISTS :
//查看哈希表 key (students)中,指定的字段(name)是否存在 bo,err := redis.Bool(r.Do("HEXISTS","students","name")) if err != nil { fmt.Println("HEXISTS error : ", err) return } fmt.Println("bo = ",bo)
hdel :
//删除 bo,err := redis.Bool(r.Do("hdel","students","name")) if err != nil { fmt.Println("hdel error : ", err) return } fmt.Println("bo = ",bo) //bo = true
hgetall :
// 获取在哈希表中指定 key 的所有字段和值 _,_ = r.Do("hset","students","name1","张三") _,_ = r.Do("hset","students","name2","李四") m,err := redis.StringMap(r.Do("hgetall","students")) if err != nil { fmt.Println("hgetall error : ", err) return } fmt.Println("m = ",m) //m = map[name1:张三 name2:李四]
lpush 和 lrange :
// 插入到列表头部 _,_ = r.Do("lpush","user","张三") _,_ = r.Do("lpush","user","李四") // 获取列表指定范围内的元素 values, _ := redis.Values(r.Do("lrange", "user", "0", "100")) for _, v := range values { fmt.Println(string(v.([]byte))) }
sadd 和 smembers :
// 向集合添加成员 _,_ = r.Do("sadd","username","zhangsan") _,_ = r.Do("sadd","username","lisi") // 返回集合中的所有成员 arr,err := redis.Strings(r.Do("SMEMBERS","username")) if err != nil { fmt.Println("error : ",err) return } fmt.Println("arr = ",arr)
管道:
连接通过发送(Send)、刷新(Flush)和接收(Receive)方法支持管道。
Send(commandName string, args ...interface{}) error Flush() error Receive() (reply interface{}, err error)
// send将命令发送到缓冲区中 // flush刷新缓冲区,将命令发送到redis服务器 // receive负责处理接收到的消息内容, 注意:receive一次只从结果中拿出一个send的命令进行处理 r.Send("set","color","yellow") //发送到缓冲区 r.Send("get","color") //发送到缓冲区 r.Flush() // 刷新缓冲区 r.Receive() //处理接收到的消息 处理set color, _ := redis.String(r.Receive()) //处理接收到的消息 处理get fmt.Println("color = ",color) //color = yellow
发布订阅 :
// PubSubConn类型用实现订阅者的方便方法包装了Conn。 // Subscribe、PSubscribe、Unsubscribe和PUnsubscribe方法发送和刷新订阅管理命令。 // receive方法将推送消息转换为方便的类型,以便在类型开关中使用。 func subscribe(){ r, err := redis.Dial("tcp", "127.0.0.1:6379") if err != nil { fmt.Println(err) return } defer r.Close() // PubSubConn类型用实现订阅者的方便方法包装了Conn。 psc := redis.PubSubConn{r} // 订阅频道信息 psc.Subscribe("example") for { switch v := psc.Receive().(type) { case redis.Message: fmt.Printf("订阅频道 : %s 信息 : %s\n", v.Channel, v.Data) case redis.Subscription: fmt.Printf("%s: %s %d\n", v.Channel, v.Kind, v.Count) case error: fmt.Println(v) return } } }
func main(){ // 链接Redis r,err := redis.Dial("tcp","127.0.0.1:6379") if err != nil { fmt.Println("Connect to redis error", err) return } defer r.Close() go subscribe() go subscribe() for { var s string fmt.Scanln(&s) // 将信息发送到指定的频道 _, err := r.Do("PUBLISH", "example", s) if err != nil { fmt.Println("PUBLISH error: ", err) return } } }
结果:
example: subscribe 1
example: subscribe 1
AAA
订阅频道 : example 信息 : AAA
订阅频道 : example 信息 : AAA