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.
 

112 lines
1.7 KiB

package redisrpc
import (
"encoding/json"
"log"
"github.com/golang/protobuf/proto"
)
//头部增加
func LLpush(key, field string, url ...string) (int64, error) {
conn, _, err := Conn(url...)
if err != nil {
return 0, err
}
defer conn.Close()
req := &LSetRequest{proto.String(key), proto.String(field), nil}
res := &LSetResponse{}
err = conn.LLpush(req, res)
if err != nil {
return 0, err
}
return res.GetRet(), nil
}
//尾部增加
func LRpush(key, field string, url ...string) (int64, error) {
conn, _, err := Conn(url...)
if err != nil {
return 0, err
}
defer conn.Close()
req := &LSetRequest{proto.String(key), proto.String(field), nil}
res := &LSetResponse{}
err = conn.LRpush(req, res)
if err != nil {
return 0, err
}
return res.GetRet(), nil
}
/**
* 全部
*/
func LRange(key string, start, stop int64, url ...string) ([]string, error) {
conn, _, err := Conn(url...)
if err != nil {
return []string{}, err
}
defer conn.Close()
req := &LRangeRequest{proto.String(key), proto.Int64(start), proto.Int64(stop), nil}
res := &HGetListResponse{}
err = conn.LRange(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
}
//长度
func LLen(key string, url ...string) (int64, error) {
conn, _, err := Conn(url...)
if err != nil {
return 0, err
}
defer conn.Close()
req := &LLenRequest{proto.String(key), nil}
res := &LSetResponse{}
err = conn.LLen(req, res)
if err != nil {
return 0, err
}
return res.GetRet(), nil
}