package redisrpc
|
|
|
|
import (
|
|
"encoding/json"
|
|
"log"
|
|
"strconv"
|
|
|
|
"github.com/golang/protobuf/proto"
|
|
)
|
|
|
|
/**
|
|
* 使用用户名查询
|
|
*/
|
|
func HGetString(key, field string, url ...string) (string, error) {
|
|
|
|
conn, _, err := Conn(url...)
|
|
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
defer conn.Close()
|
|
|
|
req := &HGetRequest{proto.String(key), proto.String(field), nil}
|
|
|
|
res := &GetStringResponse{}
|
|
|
|
err = conn.HGet(req, res)
|
|
|
|
if err != nil {
|
|
return "", err
|
|
}
|
|
|
|
return res.GetValue(), nil
|
|
}
|
|
|
|
//设置
|
|
func HSet(key, field, value string, url ...string) (int64, error) {
|
|
|
|
conn, _, err := Conn(url...)
|
|
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
defer conn.Close()
|
|
|
|
req := &HSetRequest{proto.String(key), proto.String(field), proto.String(value), nil}
|
|
|
|
res := &HSetResponse{}
|
|
|
|
err = conn.HSet(req, res)
|
|
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
return res.GetRet(), nil
|
|
}
|
|
|
|
//删除
|
|
func HDel(key string, field string, url ...string) (int64, error) {
|
|
|
|
conn, _, err := Conn(url...)
|
|
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
defer conn.Close()
|
|
|
|
req := &HDelRequest{proto.String(key), proto.String(field), nil}
|
|
|
|
res := &DelResponse{}
|
|
|
|
err = conn.HDel(req, res)
|
|
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
return res.GetRet(), nil
|
|
}
|
|
|
|
/**
|
|
* 全部
|
|
*/
|
|
func HGetAll(key string, url ...string) ([]map[string]string, error) {
|
|
|
|
conn, _, err := Conn(url...)
|
|
|
|
if err != nil {
|
|
return []map[string]string{}, err
|
|
}
|
|
defer conn.Close()
|
|
|
|
req := &GetRequest{proto.String(key), nil}
|
|
|
|
res := &HGetListResponse{}
|
|
|
|
err = conn.HGetAll(req, res)
|
|
|
|
if err != nil {
|
|
return []map[string]string{}, err
|
|
}
|
|
|
|
value := res.GetList()
|
|
|
|
var list []map[string]string
|
|
|
|
err = json.Unmarshal(value, &list)
|
|
|
|
if err != nil {
|
|
log.Println("json unmarshal error:", err)
|
|
return []map[string]string{}, err
|
|
}
|
|
return list, nil
|
|
}
|
|
|
|
/**
|
|
* 全部
|
|
*/
|
|
func HGetList(key string, url ...string) ([]string, error) {
|
|
|
|
conn, _, err := Conn(url...)
|
|
|
|
if err != nil {
|
|
return []string{}, err
|
|
}
|
|
defer conn.Close()
|
|
|
|
req := &GetRequest{proto.String(key), nil}
|
|
|
|
res := &HGetListResponse{}
|
|
|
|
err = conn.HGetList(req, res)
|
|
|
|
if err != nil {
|
|
return []string{}, err
|
|
}
|
|
|
|
value := res.GetList()
|
|
|
|
var list []string
|
|
|
|
err = json.Unmarshal(value, &list)
|
|
|
|
if err != nil {
|
|
log.Println("json unmarshal error:", err)
|
|
return []string{}, err
|
|
}
|
|
return list, nil
|
|
}
|
|
|
|
/**
|
|
* hash键是否存在
|
|
*/
|
|
func HExists(key string, field string, url ...string) (int64, error) {
|
|
conn, _, err := Conn(url...)
|
|
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
defer conn.Close()
|
|
|
|
req := &HGetRequest{proto.String(key), proto.String(field), nil}
|
|
|
|
res := &DelResponse{}
|
|
|
|
err = conn.HExists(req, res)
|
|
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
return res.GetRet(), nil
|
|
}
|
|
|
|
|
|
func HIncrby(key, field string,value int, url ...string) (int64, error) {
|
|
|
|
conn, _, err := Conn(url...)
|
|
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
defer conn.Close()
|
|
|
|
req := &HSetRequest{proto.String(key), proto.String(field), proto.String(strconv.Itoa(value)), nil}
|
|
|
|
res := &HSetResponse{}
|
|
|
|
err = conn.HIncrby(req, res)
|
|
|
|
if err != nil {
|
|
return 0, err
|
|
}
|
|
|
|
return res.GetRet(), nil
|
|
}
|