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