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
