redis rpc服务, 提供redis操作方法
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 

197 lines
3.0 KiB

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
}