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
|
|
}
|