forked from mirror/ledisdb
use goredis client
This commit is contained in:
parent
ce8e0d4fdc
commit
186ed2f84f
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"ImportPath": "github.com/siddontang/ledisdb",
|
||||
"GoVersion": "go1.4",
|
||||
"GoVersion": "go1.4.2",
|
||||
"Packages": [
|
||||
"./..."
|
||||
],
|
||||
|
@ -58,6 +58,10 @@
|
|||
"ImportPath": "github.com/siddontang/go/sync2",
|
||||
"Rev": "c2b33271306fcb7c6532efceac33ec45ee2439e0"
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/siddontang/goredis",
|
||||
"Rev": "6d2857b0488d1e8b9f96b46802eacb68e29fb003"
|
||||
},
|
||||
{
|
||||
"ImportPath": "github.com/siddontang/rdb",
|
||||
"Rev": "fc89ed2e418d27e3ea76e708e54276d2b44ae9cf"
|
||||
|
|
|
@ -1,6 +1,6 @@
|
|||
The MIT License (MIT)
|
||||
|
||||
Copyright (c) 2014 siddontang
|
||||
Copyright (c) 2015 siddontang
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
|
@ -19,3 +19,4 @@ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
|
77
client/goledis/client.go → Godeps/_workspace/src/github.com/siddontang/goredis/client.go
generated
vendored
77
client/goledis/client.go → Godeps/_workspace/src/github.com/siddontang/goredis/client.go
generated
vendored
|
@ -1,4 +1,4 @@
|
|||
package ledis
|
||||
package goredis
|
||||
|
||||
import (
|
||||
"container/list"
|
||||
|
@ -7,17 +7,23 @@ import (
|
|||
"sync"
|
||||
)
|
||||
|
||||
type Config struct {
|
||||
Addr string
|
||||
MaxIdleConns int
|
||||
ReadBufferSize int
|
||||
WriteBufferSize int
|
||||
type PoolConn struct {
|
||||
*Conn
|
||||
c *Client
|
||||
}
|
||||
|
||||
func (c *PoolConn) Close() {
|
||||
c.c.put(c.Conn)
|
||||
}
|
||||
|
||||
type Client struct {
|
||||
sync.Mutex
|
||||
|
||||
cfg *Config
|
||||
addr string
|
||||
maxIdleConns int
|
||||
readBufferSize int
|
||||
writeBufferSize int
|
||||
password string
|
||||
|
||||
conns *list.List
|
||||
}
|
||||
|
@ -30,22 +36,36 @@ func getProto(addr string) string {
|
|||
}
|
||||
}
|
||||
|
||||
func NewClient(cfg *Config) *Client {
|
||||
func NewClient(addr string, password string) *Client {
|
||||
c := new(Client)
|
||||
|
||||
c.cfg = cfg
|
||||
if c.cfg.ReadBufferSize == 0 {
|
||||
c.cfg.ReadBufferSize = 4096
|
||||
}
|
||||
if c.cfg.WriteBufferSize == 0 {
|
||||
c.cfg.WriteBufferSize = 4096
|
||||
}
|
||||
c.addr = addr
|
||||
c.maxIdleConns = 4
|
||||
c.readBufferSize = 1024
|
||||
c.writeBufferSize = 1024
|
||||
c.password = password
|
||||
|
||||
c.conns = list.New()
|
||||
|
||||
return c
|
||||
}
|
||||
|
||||
func (c *Client) SetPassword(pass string) {
|
||||
c.password = pass
|
||||
}
|
||||
|
||||
func (c *Client) SetReadBufferSize(s int) {
|
||||
c.readBufferSize = s
|
||||
}
|
||||
|
||||
func (c *Client) SetWriteBufferSize(s int) {
|
||||
c.writeBufferSize = s
|
||||
}
|
||||
|
||||
func (c *Client) SetMaxIdleConns(n int) {
|
||||
c.maxIdleConns = n
|
||||
}
|
||||
|
||||
func (c *Client) Do(cmd string, args ...interface{}) (interface{}, error) {
|
||||
var co *Conn
|
||||
var err error
|
||||
|
@ -59,7 +79,7 @@ func (c *Client) Do(cmd string, args ...interface{}) (interface{}, error) {
|
|||
|
||||
r, err = co.Do(cmd, args...)
|
||||
if err != nil {
|
||||
co.finalize()
|
||||
co.Close()
|
||||
|
||||
if e, ok := err.(*net.OpError); ok && strings.Contains(e.Error(), "use of closed network connection") {
|
||||
//send to a closed connection, try again
|
||||
|
@ -86,36 +106,41 @@ func (c *Client) Close() {
|
|||
co := e.Value.(*Conn)
|
||||
c.conns.Remove(e)
|
||||
|
||||
co.finalize()
|
||||
co.Close()
|
||||
}
|
||||
}
|
||||
|
||||
func (c *Client) Get() (*Conn, error) {
|
||||
return c.get()
|
||||
func (c *Client) Get() (*PoolConn, error) {
|
||||
co, err := c.get()
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
|
||||
func (c *Client) get() (*Conn, error) {
|
||||
return &PoolConn{co, c}, err
|
||||
}
|
||||
|
||||
func (c *Client) get() (co *Conn, err error) {
|
||||
c.Lock()
|
||||
if c.conns.Len() == 0 {
|
||||
c.Unlock()
|
||||
|
||||
return c.newConn(c.cfg.Addr)
|
||||
co, err = c.newConn(c.addr, c.password)
|
||||
} else {
|
||||
e := c.conns.Front()
|
||||
co := e.Value.(*Conn)
|
||||
co = e.Value.(*Conn)
|
||||
c.conns.Remove(e)
|
||||
|
||||
c.Unlock()
|
||||
|
||||
return co, nil
|
||||
}
|
||||
|
||||
return
|
||||
}
|
||||
|
||||
func (c *Client) put(conn *Conn) {
|
||||
c.Lock()
|
||||
if c.conns.Len() >= c.cfg.MaxIdleConns {
|
||||
if c.conns.Len() >= c.maxIdleConns {
|
||||
c.Unlock()
|
||||
conn.finalize()
|
||||
conn.Close()
|
||||
} else {
|
||||
c.conns.PushFront(conn)
|
||||
c.Unlock()
|
81
client/goledis/conn.go → Godeps/_workspace/src/github.com/siddontang/goredis/conn.go
generated
vendored
81
client/goledis/conn.go → Godeps/_workspace/src/github.com/siddontang/goredis/conn.go
generated
vendored
|
@ -1,4 +1,4 @@
|
|||
package ledis
|
||||
package goredis
|
||||
|
||||
import (
|
||||
"bufio"
|
||||
|
@ -16,9 +16,14 @@ type Error string
|
|||
|
||||
func (err Error) Error() string { return string(err) }
|
||||
|
||||
type Conn struct {
|
||||
client *Client
|
||||
type sizeWriter int64
|
||||
|
||||
func (s *sizeWriter) Write(p []byte) (int, error) {
|
||||
*s += sizeWriter(len(p))
|
||||
return len(p), nil
|
||||
}
|
||||
|
||||
type Conn struct {
|
||||
c net.Conn
|
||||
br *bufio.Reader
|
||||
bw *bufio.Writer
|
||||
|
@ -29,10 +34,13 @@ type Conn struct {
|
|||
|
||||
// Scratch space for formatting integers and floats.
|
||||
numScratch [40]byte
|
||||
|
||||
totalReadSize sizeWriter
|
||||
totalWriteSize sizeWriter
|
||||
}
|
||||
|
||||
func Connect(addr string) (*Conn, error) {
|
||||
return ConnectWithSize(addr, 4096, 4096)
|
||||
return ConnectWithSize(addr, 1024, 1024)
|
||||
}
|
||||
|
||||
func ConnectWithSize(addr string, readSize int, writeSize int) (*Conn, error) {
|
||||
|
@ -44,18 +52,22 @@ func ConnectWithSize(addr string, readSize int, writeSize int) (*Conn, error) {
|
|||
return nil, err
|
||||
}
|
||||
|
||||
c.br = bufio.NewReaderSize(c.c, readSize)
|
||||
c.bw = bufio.NewWriterSize(c.c, writeSize)
|
||||
c.br = bufio.NewReaderSize(io.TeeReader(c.c, &c.totalReadSize), readSize)
|
||||
c.bw = bufio.NewWriterSize(io.MultiWriter(c.c, &c.totalWriteSize), writeSize)
|
||||
|
||||
return c, nil
|
||||
}
|
||||
|
||||
func (c *Conn) Close() {
|
||||
if c.client != nil {
|
||||
c.client.put(c)
|
||||
} else {
|
||||
c.finalize()
|
||||
c.c.Close()
|
||||
}
|
||||
|
||||
func (c *Conn) GetTotalReadSize() int64 {
|
||||
return int64(c.totalReadSize)
|
||||
}
|
||||
|
||||
func (c *Conn) GetTotalWriteSize() int64 {
|
||||
return int64(c.totalWriteSize)
|
||||
}
|
||||
|
||||
func (c *Conn) SetReadDeadline(t time.Time) {
|
||||
|
@ -76,12 +88,12 @@ func (c *Conn) Do(cmd string, args ...interface{}) (interface{}, error) {
|
|||
|
||||
func (c *Conn) Send(cmd string, args ...interface{}) error {
|
||||
if err := c.writeCommand(cmd, args); err != nil {
|
||||
c.finalize()
|
||||
c.Close()
|
||||
return err
|
||||
}
|
||||
|
||||
if err := c.bw.Flush(); err != nil {
|
||||
c.finalize()
|
||||
c.Close()
|
||||
return err
|
||||
}
|
||||
return nil
|
||||
|
@ -89,7 +101,7 @@ func (c *Conn) Send(cmd string, args ...interface{}) error {
|
|||
|
||||
func (c *Conn) Receive() (interface{}, error) {
|
||||
if reply, err := c.readReply(); err != nil {
|
||||
c.finalize()
|
||||
c.Close()
|
||||
return nil, err
|
||||
} else {
|
||||
if e, ok := reply.(Error); ok {
|
||||
|
@ -104,16 +116,12 @@ func (c *Conn) ReceiveBulkTo(w io.Writer) error {
|
|||
err := c.readBulkReplyTo(w)
|
||||
if err != nil {
|
||||
if _, ok := err.(Error); !ok {
|
||||
c.finalize()
|
||||
c.Close()
|
||||
}
|
||||
}
|
||||
return err
|
||||
}
|
||||
|
||||
func (c *Conn) finalize() {
|
||||
c.c.Close()
|
||||
}
|
||||
|
||||
func (c *Conn) writeLen(prefix byte, n int) error {
|
||||
c.lenScratch[len(c.lenScratch)-1] = '\n'
|
||||
c.lenScratch[len(c.lenScratch)-2] = '\r'
|
||||
|
@ -191,14 +199,14 @@ func (c *Conn) writeCommand(cmd string, args []interface{}) (err error) {
|
|||
func (c *Conn) readLine() ([]byte, error) {
|
||||
p, err := c.br.ReadSlice('\n')
|
||||
if err == bufio.ErrBufferFull {
|
||||
return nil, errors.New("ledis: long response line")
|
||||
return nil, errors.New("long response line")
|
||||
}
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
i := len(p) - 2
|
||||
if i < 0 || p[i] != '\r' {
|
||||
return nil, errors.New("ledis: bad response line terminator")
|
||||
return nil, errors.New("bad response line terminator")
|
||||
}
|
||||
return p[:i], nil
|
||||
}
|
||||
|
@ -206,7 +214,7 @@ func (c *Conn) readLine() ([]byte, error) {
|
|||
// parseLen parses bulk string and array lengths.
|
||||
func parseLen(p []byte) (int, error) {
|
||||
if len(p) == 0 {
|
||||
return -1, errors.New("ledis: malformed length")
|
||||
return -1, errors.New("malformed length")
|
||||
}
|
||||
|
||||
if p[0] == '-' && len(p) == 2 && p[1] == '1' {
|
||||
|
@ -218,7 +226,7 @@ func parseLen(p []byte) (int, error) {
|
|||
for _, b := range p {
|
||||
n *= 10
|
||||
if b < '0' || b > '9' {
|
||||
return -1, errors.New("ledis: illegal bytes in length")
|
||||
return -1, errors.New("illegal bytes in length")
|
||||
}
|
||||
n += int(b - '0')
|
||||
}
|
||||
|
@ -229,7 +237,7 @@ func parseLen(p []byte) (int, error) {
|
|||
// parseInt parses an integer reply.
|
||||
func parseInt(p []byte) (interface{}, error) {
|
||||
if len(p) == 0 {
|
||||
return 0, errors.New("ledis: malformed integer")
|
||||
return 0, errors.New("malformed integer")
|
||||
}
|
||||
|
||||
var negate bool
|
||||
|
@ -237,7 +245,7 @@ func parseInt(p []byte) (interface{}, error) {
|
|||
negate = true
|
||||
p = p[1:]
|
||||
if len(p) == 0 {
|
||||
return 0, errors.New("ledis: malformed integer")
|
||||
return 0, errors.New("malformed integer")
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -245,7 +253,7 @@ func parseInt(p []byte) (interface{}, error) {
|
|||
for _, b := range p {
|
||||
n *= 10
|
||||
if b < '0' || b > '9' {
|
||||
return 0, errors.New("ledis: illegal bytes in length")
|
||||
return 0, errors.New("illegal bytes in length")
|
||||
}
|
||||
n += int64(b - '0')
|
||||
}
|
||||
|
@ -288,11 +296,11 @@ func (c *Conn) readBulkReplyTo(w io.Writer) error {
|
|||
if line, err := c.readLine(); err != nil {
|
||||
return err
|
||||
} else if len(line) != 0 {
|
||||
return errors.New("ledis: bad bulk string format")
|
||||
return errors.New("bad bulk string format")
|
||||
}
|
||||
return nil
|
||||
default:
|
||||
return fmt.Errorf("ledis: not invalid bulk string type, but %c", line[0])
|
||||
return fmt.Errorf("not invalid bulk string type, but %c", line[0])
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -302,7 +310,7 @@ func (c *Conn) readReply() (interface{}, error) {
|
|||
return nil, err
|
||||
}
|
||||
if len(line) == 0 {
|
||||
return nil, errors.New("ledis: short response line")
|
||||
return nil, errors.New("short response line")
|
||||
}
|
||||
switch line[0] {
|
||||
case '+':
|
||||
|
@ -333,7 +341,7 @@ func (c *Conn) readReply() (interface{}, error) {
|
|||
if line, err := c.readLine(); err != nil {
|
||||
return nil, err
|
||||
} else if len(line) != 0 {
|
||||
return nil, errors.New("ledis: bad bulk string format")
|
||||
return nil, errors.New("bad bulk string format")
|
||||
}
|
||||
return p, nil
|
||||
case '*':
|
||||
|
@ -350,15 +358,22 @@ func (c *Conn) readReply() (interface{}, error) {
|
|||
}
|
||||
return r, nil
|
||||
}
|
||||
return nil, errors.New("ledis: unexpected response line")
|
||||
return nil, errors.New("unexpected response line")
|
||||
}
|
||||
|
||||
func (c *Client) newConn(addr string) (*Conn, error) {
|
||||
co, err := ConnectWithSize(addr, c.cfg.ReadBufferSize, c.cfg.WriteBufferSize)
|
||||
func (c *Client) newConn(addr string, pass string) (*Conn, error) {
|
||||
co, err := ConnectWithSize(addr, c.readBufferSize, c.writeBufferSize)
|
||||
if err != nil {
|
||||
return nil, err
|
||||
}
|
||||
co.client = c
|
||||
|
||||
if len(pass) > 0 {
|
||||
_, err = co.Do("AUTH", pass)
|
||||
if err != nil {
|
||||
co.Close()
|
||||
return nil, err
|
||||
}
|
||||
}
|
||||
|
||||
return co, nil
|
||||
}
|
|
@ -0,0 +1,34 @@
|
|||
// Package goredis is a client for the redis and ledisdb.
|
||||
//
|
||||
// Client
|
||||
//
|
||||
// The client is the primary interface for redis. You must first create a client with redis address for working.
|
||||
//
|
||||
// c := NewClient("127.0.0.1:6380")
|
||||
//
|
||||
// The most important function for client is Do function to send commands to remote server.
|
||||
//
|
||||
// reply, err := c.Do("ping")
|
||||
//
|
||||
// reply, err := c.Do("set", "key", "value")
|
||||
//
|
||||
// reply, err := c.Do("get", "key")
|
||||
//
|
||||
// Connection
|
||||
//
|
||||
// You can use an independent connection to send commands.
|
||||
//
|
||||
// //get a connection
|
||||
// conn, _ := c.Get()
|
||||
//
|
||||
// //connection send command
|
||||
// conn.Do("ping")
|
||||
//
|
||||
// Reply Helper
|
||||
//
|
||||
// You can use reply helper to convert a reply to a specific type.
|
||||
//
|
||||
// exists, err := Bool(c.Do("exists", "key"))
|
||||
//
|
||||
// score, err := Int64(c.Do("zscore", "key", "member"))
|
||||
package goredis
|
39
Godeps/_workspace/src/github.com/siddontang/goredis/goredis_test.go
generated
vendored
Normal file
39
Godeps/_workspace/src/github.com/siddontang/goredis/goredis_test.go
generated
vendored
Normal file
|
@ -0,0 +1,39 @@
|
|||
package goredis
|
||||
|
||||
import (
|
||||
"github.com/alicebob/miniredis"
|
||||
"testing"
|
||||
)
|
||||
|
||||
func Test(t *testing.T) {
|
||||
s, err := miniredis.Run()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer s.Close()
|
||||
|
||||
s.RequireAuth("123456")
|
||||
|
||||
addr := s.Addr()
|
||||
|
||||
c := NewClient(addr, "123456")
|
||||
defer c.Close()
|
||||
|
||||
conn, err := c.Get()
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
defer conn.Close()
|
||||
|
||||
if pong, err := String(conn.Do("PING")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if pong != "PONG" {
|
||||
t.Fatal(pong)
|
||||
}
|
||||
|
||||
if pong, err := String(conn.Do("PING")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if pong != "PONG" {
|
||||
t.Fatal(pong)
|
||||
}
|
||||
}
|
26
client/goledis/reply.go → Godeps/_workspace/src/github.com/siddontang/goredis/reply.go
generated
vendored
26
client/goledis/reply.go → Godeps/_workspace/src/github.com/siddontang/goredis/reply.go
generated
vendored
|
@ -1,4 +1,4 @@
|
|||
package ledis
|
||||
package goredis
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
@ -7,7 +7,7 @@ import (
|
|||
)
|
||||
|
||||
// ErrNil indicates that a reply value is nil.
|
||||
var ErrNil = errors.New("ledis: nil returned")
|
||||
var ErrNil = errors.New("nil returned")
|
||||
|
||||
// Int is a helper that converts a command reply to an integer. If err is not
|
||||
// equal to nil, then Int returns 0, err. Otherwise, Int converts the
|
||||
|
@ -37,7 +37,7 @@ func Int(reply interface{}, err error) (int, error) {
|
|||
case Error:
|
||||
return 0, reply
|
||||
}
|
||||
return 0, fmt.Errorf("ledis: unexpected type for Int, got type %T", reply)
|
||||
return 0, fmt.Errorf("unexpected type for Int, got type %T", reply)
|
||||
}
|
||||
|
||||
// Int64 is a helper that converts a command reply to 64 bit integer. If err is
|
||||
|
@ -64,10 +64,10 @@ func Int64(reply interface{}, err error) (int64, error) {
|
|||
case Error:
|
||||
return 0, reply
|
||||
}
|
||||
return 0, fmt.Errorf("ledis: unexpected type for Int64, got type %T", reply)
|
||||
return 0, fmt.Errorf("unexpected type for Int64, got type %T", reply)
|
||||
}
|
||||
|
||||
var errNegativeInt = errors.New("ledis: unexpected value for Uint64")
|
||||
var errNegativeInt = errors.New("unexpected value for Uint64")
|
||||
|
||||
// Uint64 is a helper that converts a command reply to 64 bit integer. If err is
|
||||
// not equal to nil, then Int returns 0, err. Otherwise, Int64 converts the
|
||||
|
@ -96,7 +96,7 @@ func Uint64(reply interface{}, err error) (uint64, error) {
|
|||
case Error:
|
||||
return 0, reply
|
||||
}
|
||||
return 0, fmt.Errorf("ledis: unexpected type for Uint64, got type %T", reply)
|
||||
return 0, fmt.Errorf("unexpected type for Uint64, got type %T", reply)
|
||||
}
|
||||
|
||||
// Float64 is a helper that converts a command reply to 64 bit float. If err is
|
||||
|
@ -120,7 +120,7 @@ func Float64(reply interface{}, err error) (float64, error) {
|
|||
case Error:
|
||||
return 0, reply
|
||||
}
|
||||
return 0, fmt.Errorf("ledis: unexpected type for Float64, got type %T", reply)
|
||||
return 0, fmt.Errorf("unexpected type for Float64, got type %T", reply)
|
||||
}
|
||||
|
||||
// String is a helper that converts a command reply to a string. If err is not
|
||||
|
@ -146,7 +146,7 @@ func String(reply interface{}, err error) (string, error) {
|
|||
case Error:
|
||||
return "", reply
|
||||
}
|
||||
return "", fmt.Errorf("ledis: unexpected type for String, got type %T", reply)
|
||||
return "", fmt.Errorf("unexpected type for String, got type %T", reply)
|
||||
}
|
||||
|
||||
// Bytes is a helper that converts a command reply to a slice of bytes. If err
|
||||
|
@ -172,7 +172,7 @@ func Bytes(reply interface{}, err error) ([]byte, error) {
|
|||
case Error:
|
||||
return nil, reply
|
||||
}
|
||||
return nil, fmt.Errorf("ledis: unexpected type for Bytes, got type %T", reply)
|
||||
return nil, fmt.Errorf("unexpected type for Bytes, got type %T", reply)
|
||||
}
|
||||
|
||||
// Bool is a helper that converts a command reply to a boolean. If err is not
|
||||
|
@ -198,7 +198,7 @@ func Bool(reply interface{}, err error) (bool, error) {
|
|||
case Error:
|
||||
return false, reply
|
||||
}
|
||||
return false, fmt.Errorf("ledis: unexpected type for Bool, got type %T", reply)
|
||||
return false, fmt.Errorf("unexpected type for Bool, got type %T", reply)
|
||||
}
|
||||
|
||||
// MultiBulk is deprecated. Use Values.
|
||||
|
@ -224,7 +224,7 @@ func Values(reply interface{}, err error) ([]interface{}, error) {
|
|||
case Error:
|
||||
return nil, reply
|
||||
}
|
||||
return nil, fmt.Errorf("ledis: unexpected type for Values, got type %T", reply)
|
||||
return nil, fmt.Errorf("unexpected type for Values, got type %T", reply)
|
||||
}
|
||||
|
||||
// Strings is a helper that converts an array command reply to a []string. If
|
||||
|
@ -243,7 +243,7 @@ func Strings(reply interface{}, err error) ([]string, error) {
|
|||
}
|
||||
p, ok := reply[i].([]byte)
|
||||
if !ok {
|
||||
return nil, fmt.Errorf("ledis: unexpected element type for Strings, got type %T", reply[i])
|
||||
return nil, fmt.Errorf("unexpected element type for Strings, got type %T", reply[i])
|
||||
}
|
||||
result[i] = string(p)
|
||||
}
|
||||
|
@ -253,5 +253,5 @@ func Strings(reply interface{}, err error) ([]string, error) {
|
|||
case Error:
|
||||
return nil, reply
|
||||
}
|
||||
return nil, fmt.Errorf("ledis: unexpected type for Strings, got type %T", reply)
|
||||
return nil, fmt.Errorf("unexpected type for Strings, got type %T", reply)
|
||||
}
|
|
@ -19,3 +19,5 @@ go get -u github.com/syndtr/goleveldb/leveldb
|
|||
go get -u github.com/cupcake/rdb
|
||||
|
||||
go get -u github.com/siddontang/go
|
||||
go get -u github.com/siddontang/goredis
|
||||
go get -u github.com/siddontang/rdb
|
||||
|
|
|
@ -1 +0,0 @@
|
|||
[Clients](https://github.com/siddontang/ledisdb/wiki/Clients)
|
|
@ -1,45 +0,0 @@
|
|||
// Package ledis is a client for the ledisdb.
|
||||
//
|
||||
// Config
|
||||
//
|
||||
// Config struct contains configuration for ledisdb:
|
||||
//
|
||||
// Addr ledisdb server address, like 127.0.0.1:6380
|
||||
// MaxIdleConns max idle connections for ledisdb
|
||||
//
|
||||
// Client
|
||||
//
|
||||
// The client is the primary interface for ledisdb. You must first create a client with proper config for working.
|
||||
//
|
||||
// cfg := new(Config)
|
||||
// cfg.Addr = "127.0.0.1:6380"
|
||||
// cfg.MaxIdleConns = 4
|
||||
//
|
||||
// c := NewClient(cfg)
|
||||
//
|
||||
// The most important function for client is Do function to send commands to remote server.
|
||||
//
|
||||
// reply, err := c.Do("ping")
|
||||
//
|
||||
// reply, err := c.Do("set", "key", "value")
|
||||
//
|
||||
// reply, err := c.Do("get", "key")
|
||||
//
|
||||
// Connection
|
||||
//
|
||||
// You can use an independent connection to send commands.
|
||||
//
|
||||
// //get a connection
|
||||
// conn := c.Get()
|
||||
//
|
||||
// //connection send command
|
||||
// conn.Do("ping")
|
||||
//
|
||||
// Reply Helper
|
||||
//
|
||||
// You can use reply helper to convert a reply to a specific type.
|
||||
//
|
||||
// exists, err := ledis.Bool(c.Do("exists", "key"))
|
||||
//
|
||||
// score, err := ledis.Int64(c.Do("zscore", "key", "member"))
|
||||
package ledis
|
|
@ -1,15 +0,0 @@
|
|||
package ledis
|
||||
|
||||
import (
|
||||
"testing"
|
||||
)
|
||||
|
||||
func TestClient(t *testing.T) {
|
||||
cfg := new(Config)
|
||||
cfg.Addr = "127.0.0.1:6380"
|
||||
cfg.MaxIdleConns = 4
|
||||
|
||||
c := NewClient(cfg)
|
||||
|
||||
c.Close()
|
||||
}
|
|
@ -3,7 +3,7 @@ package main
|
|||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"github.com/siddontang/ledisdb/client/goledis"
|
||||
"github.com/siddontang/goredis"
|
||||
"math/rand"
|
||||
"runtime"
|
||||
"strings"
|
||||
|
@ -21,10 +21,10 @@ var valueSize = flag.Int("vsize", 100, "kv value size")
|
|||
var tests = flag.String("t", "set,get,randget,del,lpush,lrange,lpop,hset,hget,hdel,zadd,zincr,zrange,zrevrange,zdel", "only run the comma separated list of tests")
|
||||
var wg sync.WaitGroup
|
||||
|
||||
var client *ledis.Client
|
||||
var client *goredis.Client
|
||||
var loop int = 0
|
||||
|
||||
func waitBench(c *ledis.Conn, cmd string, args ...interface{}) {
|
||||
func waitBench(c *goredis.PoolConn, cmd string, args ...interface{}) {
|
||||
_, err := c.Do(strings.ToUpper(cmd), args...)
|
||||
if err != nil {
|
||||
fmt.Printf("do %s error %s\n", cmd, err.Error())
|
||||
|
@ -32,7 +32,7 @@ func waitBench(c *ledis.Conn, cmd string, args ...interface{}) {
|
|||
|
||||
}
|
||||
|
||||
func bench(cmd string, f func(c *ledis.Conn)) {
|
||||
func bench(cmd string, f func(c *goredis.PoolConn)) {
|
||||
wg.Add(*clients)
|
||||
|
||||
t1 := time.Now()
|
||||
|
@ -66,7 +66,7 @@ var kvIncrBase int64 = 0
|
|||
var kvDelBase int64 = 0
|
||||
|
||||
func benchSet() {
|
||||
f := func(c *ledis.Conn) {
|
||||
f := func(c *goredis.PoolConn) {
|
||||
value := make([]byte, *valueSize)
|
||||
n := atomic.AddInt64(&kvSetBase, 1)
|
||||
waitBench(c, "SET", n, value)
|
||||
|
@ -76,7 +76,7 @@ func benchSet() {
|
|||
}
|
||||
|
||||
func benchGet() {
|
||||
f := func(c *ledis.Conn) {
|
||||
f := func(c *goredis.PoolConn) {
|
||||
n := atomic.AddInt64(&kvGetBase, 1)
|
||||
waitBench(c, "GET", n)
|
||||
}
|
||||
|
@ -85,7 +85,7 @@ func benchGet() {
|
|||
}
|
||||
|
||||
func benchRandGet() {
|
||||
f := func(c *ledis.Conn) {
|
||||
f := func(c *goredis.PoolConn) {
|
||||
n := rand.Int() % *number
|
||||
waitBench(c, "GET", n)
|
||||
}
|
||||
|
@ -94,7 +94,7 @@ func benchRandGet() {
|
|||
}
|
||||
|
||||
func benchDel() {
|
||||
f := func(c *ledis.Conn) {
|
||||
f := func(c *goredis.PoolConn) {
|
||||
n := atomic.AddInt64(&kvDelBase, 1)
|
||||
waitBench(c, "DEL", n)
|
||||
}
|
||||
|
@ -103,7 +103,7 @@ func benchDel() {
|
|||
}
|
||||
|
||||
func benchPushList() {
|
||||
f := func(c *ledis.Conn) {
|
||||
f := func(c *goredis.PoolConn) {
|
||||
value := make([]byte, 100)
|
||||
waitBench(c, "RPUSH", "mytestlist", value)
|
||||
}
|
||||
|
@ -112,7 +112,7 @@ func benchPushList() {
|
|||
}
|
||||
|
||||
func benchRangeList10() {
|
||||
f := func(c *ledis.Conn) {
|
||||
f := func(c *goredis.PoolConn) {
|
||||
waitBench(c, "LRANGE", "mytestlist", 0, 10)
|
||||
}
|
||||
|
||||
|
@ -120,7 +120,7 @@ func benchRangeList10() {
|
|||
}
|
||||
|
||||
func benchRangeList50() {
|
||||
f := func(c *ledis.Conn) {
|
||||
f := func(c *goredis.PoolConn) {
|
||||
waitBench(c, "LRANGE", "mytestlist", 0, 50)
|
||||
}
|
||||
|
||||
|
@ -128,7 +128,7 @@ func benchRangeList50() {
|
|||
}
|
||||
|
||||
func benchRangeList100() {
|
||||
f := func(c *ledis.Conn) {
|
||||
f := func(c *goredis.PoolConn) {
|
||||
waitBench(c, "LRANGE", "mytestlist", 0, 100)
|
||||
}
|
||||
|
||||
|
@ -136,7 +136,7 @@ func benchRangeList100() {
|
|||
}
|
||||
|
||||
func benchPopList() {
|
||||
f := func(c *ledis.Conn) {
|
||||
f := func(c *goredis.PoolConn) {
|
||||
waitBench(c, "LPOP", "mytestlist")
|
||||
}
|
||||
|
||||
|
@ -149,7 +149,7 @@ var hashGetBase int64 = 0
|
|||
var hashDelBase int64 = 0
|
||||
|
||||
func benchHset() {
|
||||
f := func(c *ledis.Conn) {
|
||||
f := func(c *goredis.PoolConn) {
|
||||
value := make([]byte, 100)
|
||||
|
||||
n := atomic.AddInt64(&hashSetBase, 1)
|
||||
|
@ -160,7 +160,7 @@ func benchHset() {
|
|||
}
|
||||
|
||||
func benchHGet() {
|
||||
f := func(c *ledis.Conn) {
|
||||
f := func(c *goredis.PoolConn) {
|
||||
n := atomic.AddInt64(&hashGetBase, 1)
|
||||
waitBench(c, "HGET", "myhashkey", n)
|
||||
}
|
||||
|
@ -169,7 +169,7 @@ func benchHGet() {
|
|||
}
|
||||
|
||||
func benchHRandGet() {
|
||||
f := func(c *ledis.Conn) {
|
||||
f := func(c *goredis.PoolConn) {
|
||||
n := rand.Int() % *number
|
||||
waitBench(c, "HGET", "myhashkey", n)
|
||||
}
|
||||
|
@ -178,7 +178,7 @@ func benchHRandGet() {
|
|||
}
|
||||
|
||||
func benchHDel() {
|
||||
f := func(c *ledis.Conn) {
|
||||
f := func(c *goredis.PoolConn) {
|
||||
n := atomic.AddInt64(&hashDelBase, 1)
|
||||
waitBench(c, "HDEL", "myhashkey", n)
|
||||
}
|
||||
|
@ -191,7 +191,7 @@ var zsetDelBase int64 = 0
|
|||
var zsetIncrBase int64 = 0
|
||||
|
||||
func benchZAdd() {
|
||||
f := func(c *ledis.Conn) {
|
||||
f := func(c *goredis.PoolConn) {
|
||||
member := make([]byte, 16)
|
||||
n := atomic.AddInt64(&zsetAddBase, 1)
|
||||
waitBench(c, "ZADD", "myzsetkey", n, member)
|
||||
|
@ -201,7 +201,7 @@ func benchZAdd() {
|
|||
}
|
||||
|
||||
func benchZDel() {
|
||||
f := func(c *ledis.Conn) {
|
||||
f := func(c *goredis.PoolConn) {
|
||||
n := atomic.AddInt64(&zsetDelBase, 1)
|
||||
waitBench(c, "ZREM", "myzsetkey", n)
|
||||
}
|
||||
|
@ -210,7 +210,7 @@ func benchZDel() {
|
|||
}
|
||||
|
||||
func benchZIncr() {
|
||||
f := func(c *ledis.Conn) {
|
||||
f := func(c *goredis.PoolConn) {
|
||||
n := atomic.AddInt64(&zsetIncrBase, 1)
|
||||
waitBench(c, "ZINCRBY", "myzsetkey", 1, n)
|
||||
}
|
||||
|
@ -219,7 +219,7 @@ func benchZIncr() {
|
|||
}
|
||||
|
||||
func benchZRangeByScore() {
|
||||
f := func(c *ledis.Conn) {
|
||||
f := func(c *goredis.PoolConn) {
|
||||
waitBench(c, "ZRANGEBYSCORE", "myzsetkey", 0, rand.Int(), "withscores", "limit", rand.Int()%100, 100)
|
||||
}
|
||||
|
||||
|
@ -227,7 +227,7 @@ func benchZRangeByScore() {
|
|||
}
|
||||
|
||||
func benchZRangeByRank() {
|
||||
f := func(c *ledis.Conn) {
|
||||
f := func(c *goredis.PoolConn) {
|
||||
waitBench(c, "ZRANGE", "myzsetkey", 0, rand.Int()%100)
|
||||
}
|
||||
|
||||
|
@ -235,7 +235,7 @@ func benchZRangeByRank() {
|
|||
}
|
||||
|
||||
func benchZRevRangeByScore() {
|
||||
f := func(c *ledis.Conn) {
|
||||
f := func(c *goredis.PoolConn) {
|
||||
waitBench(c, "ZREVRANGEBYSCORE", "myzsetkey", 0, rand.Int(), "withscores", "limit", rand.Int()%100, 100)
|
||||
}
|
||||
|
||||
|
@ -243,7 +243,7 @@ func benchZRevRangeByScore() {
|
|||
}
|
||||
|
||||
func benchZRevRangeByRank() {
|
||||
f := func(c *ledis.Conn) {
|
||||
f := func(c *goredis.PoolConn) {
|
||||
waitBench(c, "ZREVRANGE", "myzsetkey", 0, rand.Int()%100)
|
||||
}
|
||||
|
||||
|
@ -269,12 +269,10 @@ func main() {
|
|||
|
||||
addr := fmt.Sprintf("%s:%d", *ip, *port)
|
||||
|
||||
cfg := new(ledis.Config)
|
||||
cfg.Addr = addr
|
||||
cfg.MaxIdleConns = *clients
|
||||
cfg.ReadBufferSize = 10240
|
||||
cfg.WriteBufferSize = 10240
|
||||
client = ledis.NewClient(cfg)
|
||||
client = goredis.NewClient(addr, "")
|
||||
client.SetReadBufferSize(10240)
|
||||
client.SetWriteBufferSize(10240)
|
||||
client.SetMaxIdleConns(16)
|
||||
|
||||
for i := 0; i < *clients; i++ {
|
||||
c, _ := client.Get()
|
||||
|
|
|
@ -3,7 +3,7 @@ package main
|
|||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"github.com/siddontang/ledisdb/client/goledis"
|
||||
"github.com/siddontang/goredis"
|
||||
"regexp"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
@ -17,16 +17,15 @@ var dbn = flag.Int("n", 0, "ledisdb database number(default 0)")
|
|||
func main() {
|
||||
flag.Parse()
|
||||
|
||||
cfg := new(ledis.Config)
|
||||
var addr string
|
||||
if len(*socket) > 0 {
|
||||
cfg.Addr = *socket
|
||||
addr = *socket
|
||||
} else {
|
||||
cfg.Addr = fmt.Sprintf("%s:%d", *ip, *port)
|
||||
addr = fmt.Sprintf("%s:%d", *ip, *port)
|
||||
}
|
||||
|
||||
cfg.MaxIdleConns = 1
|
||||
|
||||
c := ledis.NewClient(cfg)
|
||||
c := goredis.NewClient(addr, "")
|
||||
c.SetMaxIdleConns(1)
|
||||
sendSelect(c, *dbn)
|
||||
|
||||
SetCompletionHandler(completionHandler)
|
||||
|
@ -38,9 +37,9 @@ func main() {
|
|||
|
||||
for {
|
||||
if *dbn > 0 && *dbn < 16 {
|
||||
prompt = fmt.Sprintf("%s[%d]>", cfg.Addr, *dbn)
|
||||
prompt = fmt.Sprintf("%s[%d]>", addr, *dbn)
|
||||
} else {
|
||||
prompt = fmt.Sprintf("%s>", cfg.Addr)
|
||||
prompt = fmt.Sprintf("%s>", addr)
|
||||
}
|
||||
|
||||
cmd, err := line(prompt)
|
||||
|
@ -102,7 +101,7 @@ func printReply(level int, reply interface{}) {
|
|||
fmt.Printf("%q", reply)
|
||||
case nil:
|
||||
fmt.Printf("(nil)")
|
||||
case ledis.Error:
|
||||
case goredis.Error:
|
||||
fmt.Printf("%s", string(reply))
|
||||
case []interface{}:
|
||||
for i, v := range reply {
|
||||
|
@ -154,7 +153,7 @@ func printHelp(cmds []string) {
|
|||
}
|
||||
}
|
||||
|
||||
func sendSelect(client *ledis.Client, index int) {
|
||||
func sendSelect(client *goredis.Client, index int) {
|
||||
if index > 16 || index < 0 {
|
||||
index = 0
|
||||
fmt.Println("index out of range, should less than 16")
|
||||
|
|
|
@ -3,7 +3,7 @@ package main
|
|||
import (
|
||||
"flag"
|
||||
"fmt"
|
||||
"github.com/siddontang/ledisdb/client/goledis"
|
||||
"github.com/siddontang/goredis"
|
||||
"os"
|
||||
)
|
||||
|
||||
|
@ -32,7 +32,7 @@ func main() {
|
|||
addr = fmt.Sprintf("%s:%d", *host, *port)
|
||||
}
|
||||
|
||||
c, err := ledis.ConnectWithSize(addr, 16*1024, 4096)
|
||||
c, err := goredis.ConnectWithSize(addr, 16*1024, 4096)
|
||||
if err != nil {
|
||||
println(err.Error())
|
||||
return
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package server
|
||||
|
||||
import (
|
||||
goledis "github.com/siddontang/ledisdb/client/goledis"
|
||||
"github.com/siddontang/goredis"
|
||||
"github.com/siddontang/ledisdb/config"
|
||||
"github.com/siddontang/ledisdb/ledis"
|
||||
"net"
|
||||
|
@ -45,7 +45,7 @@ type App struct {
|
|||
rcs map[*respClient]struct{}
|
||||
|
||||
migrateM sync.Mutex
|
||||
migrateClients map[string]*goledis.Client
|
||||
migrateClients map[string]*goredis.Client
|
||||
migrateKeyLockers map[string]*migrateKeyLocker
|
||||
}
|
||||
|
||||
|
@ -76,7 +76,7 @@ func NewApp(cfg *config.Config) (*App, error) {
|
|||
|
||||
app.rcs = make(map[*respClient]struct{})
|
||||
|
||||
app.migrateClients = make(map[string]*goledis.Client)
|
||||
app.migrateClients = make(map[string]*goredis.Client)
|
||||
app.newMigrateKeyLockers()
|
||||
|
||||
var err error
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package server
|
||||
|
||||
import (
|
||||
"github.com/siddontang/ledisdb/client/goledis"
|
||||
"github.com/siddontang/goredis"
|
||||
"github.com/siddontang/ledisdb/config"
|
||||
"os"
|
||||
"sync"
|
||||
|
@ -11,16 +11,14 @@ import (
|
|||
var testAppOnce sync.Once
|
||||
var testApp *App
|
||||
|
||||
var testLedisClient *ledis.Client
|
||||
var testLedisClient *goredis.Client
|
||||
|
||||
func newTestLedisClient() {
|
||||
cfg := new(ledis.Config)
|
||||
cfg.Addr = "127.0.0.1:16380"
|
||||
cfg.MaxIdleConns = 4
|
||||
testLedisClient = ledis.NewClient(cfg)
|
||||
testLedisClient = goredis.NewClient("127.0.0.1:16380", "")
|
||||
testLedisClient.SetMaxIdleConns(4)
|
||||
}
|
||||
|
||||
func getTestConn() *ledis.Conn {
|
||||
func getTestConn() *goredis.PoolConn {
|
||||
startTestApp()
|
||||
conn, _ := testLedisClient.Get()
|
||||
return conn
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package server
|
||||
|
||||
// import (
|
||||
// "github.com/siddontang/ledisdb/client/goledis"
|
||||
// "github.com/siddontang/goredis"
|
||||
// "testing"
|
||||
// )
|
||||
|
||||
|
@ -19,19 +19,19 @@ package server
|
|||
// key := []byte("test_cmd_bin_basic")
|
||||
|
||||
// // get / set
|
||||
// if v, err := ledis.Int(c.Do("bgetbit", key, 1024)); err != nil {
|
||||
// if v, err := goredis.Int(c.Do("bgetbit", key, 1024)); err != nil {
|
||||
// t.Fatal(err)
|
||||
// } else if v != 0 {
|
||||
// t.Fatal(v)
|
||||
// }
|
||||
|
||||
// if ori, err := ledis.Int(c.Do("bsetbit", key, 1024, 1)); err != nil {
|
||||
// if ori, err := goredis.Int(c.Do("bsetbit", key, 1024, 1)); err != nil {
|
||||
// t.Fatal(err)
|
||||
// } else if ori != 0 {
|
||||
// t.Fatal(ori)
|
||||
// }
|
||||
|
||||
// if v, err := ledis.Int(c.Do("bgetbit", key, 1024)); err != nil {
|
||||
// if v, err := goredis.Int(c.Do("bgetbit", key, 1024)); err != nil {
|
||||
// t.Fatal(err)
|
||||
// } else if v != 1 {
|
||||
// t.Fatal(v)
|
||||
|
@ -40,26 +40,26 @@ package server
|
|||
// // fetch from revert pos
|
||||
// c.Do("bsetbit", key, 1000, 1)
|
||||
|
||||
// if v, err := ledis.Int(c.Do("bgetbit", key, -1)); err != nil {
|
||||
// if v, err := goredis.Int(c.Do("bgetbit", key, -1)); err != nil {
|
||||
// t.Fatal(err)
|
||||
// } else if v != 1 {
|
||||
// t.Fatal(v)
|
||||
// }
|
||||
|
||||
// if v, err := ledis.Int(c.Do("bgetbit", key, -25)); err != nil {
|
||||
// if v, err := goredis.Int(c.Do("bgetbit", key, -25)); err != nil {
|
||||
// t.Fatal(err)
|
||||
// } else if v != 1 {
|
||||
// t.Fatal(v)
|
||||
// }
|
||||
|
||||
// // delete
|
||||
// if drop, err := ledis.Int(c.Do("bdelete", key)); err != nil {
|
||||
// if drop, err := goredis.Int(c.Do("bdelete", key)); err != nil {
|
||||
// t.Fatal(err)
|
||||
// } else if drop != 1 {
|
||||
// t.Fatal(drop)
|
||||
// }
|
||||
|
||||
// if drop, err := ledis.Int(c.Do("bdelete", key)); err != nil {
|
||||
// if drop, err := goredis.Int(c.Do("bdelete", key)); err != nil {
|
||||
// t.Fatal(err)
|
||||
// } else if drop != 0 {
|
||||
// t.Fatal(drop)
|
||||
|
@ -72,7 +72,7 @@ package server
|
|||
|
||||
// key := []byte("test_cmd_bin_mset")
|
||||
|
||||
// if n, err := ledis.Int(
|
||||
// if n, err := goredis.Int(
|
||||
// c.Do("bmsetbit", key,
|
||||
// 500, 0,
|
||||
// 100, 1,
|
||||
|
@ -90,14 +90,14 @@ package server
|
|||
|
||||
// fillPos := []int{100, 200, 300, 1000, 100000, 500000}
|
||||
// for _, pos := range fillPos {
|
||||
// v, err := ledis.Int(c.Do("bgetbit", key, pos))
|
||||
// v, err := goredis.Int(c.Do("bgetbit", key, pos))
|
||||
// if err != nil || v != 1 {
|
||||
// t.Fatal(pos)
|
||||
// }
|
||||
// }
|
||||
|
||||
// // err
|
||||
// if n, err := ledis.Int(
|
||||
// if n, err := goredis.Int(
|
||||
// c.Do("bmsetbit", key, 3, 0, 2, 1, 3, 0, 1, 1)); err == nil || n != 0 {
|
||||
// t.Fatal(n) // duplication on pos
|
||||
// }
|
||||
|
@ -114,7 +114,7 @@ package server
|
|||
// sum++
|
||||
// }
|
||||
|
||||
// if n, err := ledis.Int(c.Do("bcount", key)); err != nil {
|
||||
// if n, err := goredis.Int(c.Do("bcount", key)); err != nil {
|
||||
// t.Fatal(err)
|
||||
// } else if n != sum {
|
||||
// t.Fatal(n)
|
||||
|
@ -137,21 +137,21 @@ package server
|
|||
// // todo ...
|
||||
|
||||
// // case - 'not' on inexisting key
|
||||
// if blen, err := ledis.Int(
|
||||
// if blen, err := goredis.Int(
|
||||
// c.Do("bopt", "not", dstk, kmiss)); err != nil {
|
||||
// t.Fatal(err)
|
||||
// } else if blen != 0 {
|
||||
// t.Fatal(blen)
|
||||
// }
|
||||
|
||||
// if v, _ := ledis.String(c.Do("bget", dstk)); v != "" {
|
||||
// if v, _ := goredis.String(c.Do("bget", dstk)); v != "" {
|
||||
// t.Fatal(v)
|
||||
// }
|
||||
|
||||
// // case - 'and', 'or', 'xor' with inexisting key
|
||||
// opts := []string{"and", "or", "xor"}
|
||||
// for _, op := range opts {
|
||||
// if blen, err := ledis.Int(
|
||||
// if blen, err := goredis.Int(
|
||||
// c.Do("bopt", op, dstk, kmiss, k0)); err != nil {
|
||||
// t.Fatal(err)
|
||||
// } else if blen != 0 {
|
||||
|
@ -160,62 +160,62 @@ package server
|
|||
// }
|
||||
|
||||
// // case - 'and'
|
||||
// if blen, err := ledis.Int(
|
||||
// if blen, err := goredis.Int(
|
||||
// c.Do("bopt", "and", dstk, k0, k1)); err != nil {
|
||||
// t.Fatal(err)
|
||||
// } else if blen != 101 {
|
||||
// t.Fatal(blen)
|
||||
// }
|
||||
|
||||
// if v, _ := ledis.Int(c.Do("bgetbit", dstk, 100)); v != 1 {
|
||||
// if v, _ := goredis.Int(c.Do("bgetbit", dstk, 100)); v != 1 {
|
||||
// t.Fatal(v)
|
||||
// }
|
||||
|
||||
// if v, _ := ledis.Int(c.Do("bgetbit", dstk, 20)); v != 0 {
|
||||
// if v, _ := goredis.Int(c.Do("bgetbit", dstk, 20)); v != 0 {
|
||||
// t.Fatal(v)
|
||||
// }
|
||||
|
||||
// if v, _ := ledis.Int(c.Do("bgetbit", dstk, 40)); v != 0 {
|
||||
// if v, _ := goredis.Int(c.Do("bgetbit", dstk, 40)); v != 0 {
|
||||
// t.Fatal(v)
|
||||
// }
|
||||
|
||||
// // case - 'or'
|
||||
// if blen, err := ledis.Int(
|
||||
// if blen, err := goredis.Int(
|
||||
// c.Do("bopt", "or", dstk, k0, k1)); err != nil {
|
||||
// t.Fatal(err)
|
||||
// } else if blen != 101 {
|
||||
// t.Fatal(blen)
|
||||
// }
|
||||
|
||||
// if v, _ := ledis.Int(c.Do("bgetbit", dstk, 100)); v != 1 {
|
||||
// if v, _ := goredis.Int(c.Do("bgetbit", dstk, 100)); v != 1 {
|
||||
// t.Fatal(v)
|
||||
// }
|
||||
|
||||
// if v, _ := ledis.Int(c.Do("bgetbit", dstk, 20)); v != 1 {
|
||||
// if v, _ := goredis.Int(c.Do("bgetbit", dstk, 20)); v != 1 {
|
||||
// t.Fatal(v)
|
||||
// }
|
||||
|
||||
// if v, _ := ledis.Int(c.Do("bgetbit", dstk, 40)); v != 1 {
|
||||
// if v, _ := goredis.Int(c.Do("bgetbit", dstk, 40)); v != 1 {
|
||||
// t.Fatal(v)
|
||||
// }
|
||||
|
||||
// // case - 'xor'
|
||||
// if blen, err := ledis.Int(
|
||||
// if blen, err := goredis.Int(
|
||||
// c.Do("bopt", "xor", dstk, k0, k1)); err != nil {
|
||||
// t.Fatal(err)
|
||||
// } else if blen != 101 {
|
||||
// t.Fatal(blen)
|
||||
// }
|
||||
|
||||
// if v, _ := ledis.Int(c.Do("bgetbit", dstk, 100)); v != 0 {
|
||||
// if v, _ := goredis.Int(c.Do("bgetbit", dstk, 100)); v != 0 {
|
||||
// t.Fatal(v)
|
||||
// }
|
||||
|
||||
// if v, _ := ledis.Int(c.Do("bgetbit", dstk, 20)); v != 1 {
|
||||
// if v, _ := goredis.Int(c.Do("bgetbit", dstk, 20)); v != 1 {
|
||||
// t.Fatal(v)
|
||||
// }
|
||||
|
||||
// if v, _ := ledis.Int(c.Do("bgetbit", dstk, 40)); v != 1 {
|
||||
// if v, _ := goredis.Int(c.Do("bgetbit", dstk, 40)); v != 1 {
|
||||
// t.Fatal(v)
|
||||
// }
|
||||
|
||||
|
|
|
@ -2,7 +2,7 @@ package server
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/siddontang/ledisdb/client/goledis"
|
||||
"github.com/siddontang/goredis"
|
||||
"strconv"
|
||||
"testing"
|
||||
)
|
||||
|
@ -12,54 +12,54 @@ func TestHash(t *testing.T) {
|
|||
defer c.Close()
|
||||
|
||||
key := []byte("a")
|
||||
if n, err := ledis.Int(c.Do("hkeyexists", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("hkeyexists", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 0 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("hset", key, 1, 0)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("hset", key, 1, 0)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
if n, err := ledis.Int(c.Do("hkeyexists", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("hkeyexists", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("hexists", key, 1)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("hexists", key, 1)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("hexists", key, -1)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("hexists", key, -1)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 0 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("hget", key, 1)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("hget", key, 1)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 0 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("hset", key, 1, 1)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("hset", key, 1, 1)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 0 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("hget", key, 1)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("hget", key, 1)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("hlen", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("hlen", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
|
@ -95,19 +95,19 @@ func TestHashM(t *testing.T) {
|
|||
defer c.Close()
|
||||
|
||||
key := []byte("b")
|
||||
if ok, err := ledis.String(c.Do("hmset", key, 1, 1, 2, 2, 3, 3)); err != nil {
|
||||
if ok, err := goredis.String(c.Do("hmset", key, 1, 1, 2, 2, 3, 3)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if ok != OK {
|
||||
t.Fatal(ok)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("hlen", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("hlen", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 3 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("hmget", key, 1, 2, 3, 4)); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("hmget", key, 1, 2, 3, 4)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if err := testHashArray(v, 1, 2, 3, 0); err != nil {
|
||||
|
@ -115,19 +115,19 @@ func TestHashM(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("hdel", key, 1, 2, 3, 4)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("hdel", key, 1, 2, 3, 4)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 3 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("hlen", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("hlen", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 0 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("hmget", key, 1, 2, 3, 4)); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("hmget", key, 1, 2, 3, 4)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if err := testHashArray(v, 0, 0, 0, 0); err != nil {
|
||||
|
@ -135,7 +135,7 @@ func TestHashM(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("hlen", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("hlen", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 0 {
|
||||
t.Fatal(n)
|
||||
|
@ -147,31 +147,31 @@ func TestHashIncr(t *testing.T) {
|
|||
defer c.Close()
|
||||
|
||||
key := []byte("c")
|
||||
if n, err := ledis.Int(c.Do("hincrby", key, 1, 1)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("hincrby", key, 1, 1)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("hlen", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("hlen", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("hincrby", key, 1, 10)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("hincrby", key, 1, 10)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 11 {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("hlen", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("hlen", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("hincrby", key, 1, -11)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("hincrby", key, 1, -11)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 0 {
|
||||
t.Fatal(err)
|
||||
|
@ -185,13 +185,13 @@ func TestHashGetAll(t *testing.T) {
|
|||
|
||||
key := []byte("d")
|
||||
|
||||
if ok, err := ledis.String(c.Do("hmset", key, 1, 1, 2, 2, 3, 3)); err != nil {
|
||||
if ok, err := goredis.String(c.Do("hmset", key, 1, 1, 2, 2, 3, 3)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if ok != OK {
|
||||
t.Fatal(ok)
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("hgetall", key)); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("hgetall", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if err := testHashArray(v, 1, 1, 2, 2, 3, 3); err != nil {
|
||||
|
@ -199,7 +199,7 @@ func TestHashGetAll(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("hkeys", key)); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("hkeys", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if err := testHashArray(v, 1, 2, 3); err != nil {
|
||||
|
@ -207,7 +207,7 @@ func TestHashGetAll(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("hvals", key)); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("hvals", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if err := testHashArray(v, 1, 2, 3); err != nil {
|
||||
|
@ -215,13 +215,13 @@ func TestHashGetAll(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("hclear", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("hclear", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 3 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("hlen", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("hlen", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 0 {
|
||||
t.Fatal(n)
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package server
|
||||
|
||||
import (
|
||||
"github.com/siddontang/ledisdb/client/goledis"
|
||||
"github.com/siddontang/goredis"
|
||||
"testing"
|
||||
)
|
||||
|
||||
|
@ -9,121 +9,121 @@ func TestKV(t *testing.T) {
|
|||
c := getTestConn()
|
||||
defer c.Close()
|
||||
|
||||
if ok, err := ledis.String(c.Do("set", "a", "1234")); err != nil {
|
||||
if ok, err := goredis.String(c.Do("set", "a", "1234")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if ok != OK {
|
||||
t.Fatal(ok)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("setnx", "a", "123")); err != nil {
|
||||
if n, err := goredis.Int(c.Do("setnx", "a", "123")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 0 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("setnx", "b", "123")); err != nil {
|
||||
if n, err := goredis.Int(c.Do("setnx", "b", "123")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if ok, err := ledis.String(c.Do("setex", "xx", 10, "hello world")); err != nil {
|
||||
if ok, err := goredis.String(c.Do("setex", "xx", 10, "hello world")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if ok != OK {
|
||||
t.Fatal(ok)
|
||||
}
|
||||
|
||||
if v, err := ledis.String(c.Do("get", "a")); err != nil {
|
||||
if v, err := goredis.String(c.Do("get", "a")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if v != "1234" {
|
||||
t.Fatal(v)
|
||||
}
|
||||
|
||||
if v, err := ledis.String(c.Do("getset", "a", "123")); err != nil {
|
||||
if v, err := goredis.String(c.Do("getset", "a", "123")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if v != "1234" {
|
||||
t.Fatal(v)
|
||||
}
|
||||
|
||||
if v, err := ledis.String(c.Do("get", "a")); err != nil {
|
||||
if v, err := goredis.String(c.Do("get", "a")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if v != "123" {
|
||||
t.Fatal(v)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("exists", "a")); err != nil {
|
||||
if n, err := goredis.Int(c.Do("exists", "a")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("exists", "empty_key_test")); err != nil {
|
||||
if n, err := goredis.Int(c.Do("exists", "empty_key_test")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 0 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if _, err := ledis.Int(c.Do("del", "a", "b")); err != nil {
|
||||
if _, err := goredis.Int(c.Do("del", "a", "b")); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("exists", "a")); err != nil {
|
||||
if n, err := goredis.Int(c.Do("exists", "a")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 0 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("exists", "b")); err != nil {
|
||||
if n, err := goredis.Int(c.Do("exists", "b")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 0 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
rangeKey := "range_key"
|
||||
if n, err := ledis.Int(c.Do("append", rangeKey, "Hello ")); err != nil {
|
||||
if n, err := goredis.Int(c.Do("append", rangeKey, "Hello ")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 6 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("setrange", rangeKey, 6, "Redis")); err != nil {
|
||||
if n, err := goredis.Int(c.Do("setrange", rangeKey, 6, "Redis")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 11 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("strlen", rangeKey)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("strlen", rangeKey)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 11 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if v, err := ledis.String(c.Do("getrange", rangeKey, 0, -1)); err != nil {
|
||||
if v, err := goredis.String(c.Do("getrange", rangeKey, 0, -1)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if v != "Hello Redis" {
|
||||
t.Fatal(v)
|
||||
}
|
||||
|
||||
bitKey := "bit_key"
|
||||
if n, err := ledis.Int(c.Do("setbit", bitKey, 7, 1)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("setbit", bitKey, 7, 1)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 0 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("getbit", bitKey, 7)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("getbit", bitKey, 7)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("bitcount", bitKey)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("bitcount", bitKey)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("bitpos", bitKey, 1)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("bitpos", bitKey, 1)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 7 {
|
||||
t.Fatal(n)
|
||||
|
@ -132,13 +132,13 @@ func TestKV(t *testing.T) {
|
|||
c.Do("set", "key1", "foobar")
|
||||
c.Do("set", "key2", "abcdef")
|
||||
|
||||
if n, err := ledis.Int(c.Do("bitop", "and", "bit_dest_key", "key1", "key2")); err != nil {
|
||||
if n, err := goredis.Int(c.Do("bitop", "and", "bit_dest_key", "key1", "key2")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 6 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if v, err := ledis.String(c.Do("get", "bit_dest_key")); err != nil {
|
||||
if v, err := goredis.String(c.Do("get", "bit_dest_key")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if v != "`bc`ab" {
|
||||
t.Fatal(v)
|
||||
|
@ -150,13 +150,13 @@ func TestKVM(t *testing.T) {
|
|||
c := getTestConn()
|
||||
defer c.Close()
|
||||
|
||||
if ok, err := ledis.String(c.Do("mset", "a", "1", "b", "2")); err != nil {
|
||||
if ok, err := goredis.String(c.Do("mset", "a", "1", "b", "2")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if ok != OK {
|
||||
t.Fatal(ok)
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("mget", "a", "b", "c")); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("mget", "a", "b", "c")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if len(v) != 3 {
|
||||
t.Fatal(len(v))
|
||||
|
@ -179,31 +179,31 @@ func TestKVIncrDecr(t *testing.T) {
|
|||
c := getTestConn()
|
||||
defer c.Close()
|
||||
|
||||
if n, err := ledis.Int64(c.Do("incr", "n")); err != nil {
|
||||
if n, err := goredis.Int64(c.Do("incr", "n")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int64(c.Do("incr", "n")); err != nil {
|
||||
if n, err := goredis.Int64(c.Do("incr", "n")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 2 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int64(c.Do("decr", "n")); err != nil {
|
||||
if n, err := goredis.Int64(c.Do("decr", "n")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int64(c.Do("incrby", "n", 10)); err != nil {
|
||||
if n, err := goredis.Int64(c.Do("incrby", "n", 10)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 11 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int64(c.Do("decrby", "n", 10)); err != nil {
|
||||
if n, err := goredis.Int64(c.Do("decrby", "n", 10)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
|
|
|
@ -2,7 +2,7 @@ package server
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/siddontang/ledisdb/client/goledis"
|
||||
"github.com/siddontang/goredis"
|
||||
"strconv"
|
||||
"testing"
|
||||
)
|
||||
|
@ -11,10 +11,10 @@ func testListIndex(key []byte, index int64, v int) error {
|
|||
c := getTestConn()
|
||||
defer c.Close()
|
||||
|
||||
n, err := ledis.Int(c.Do("lindex", key, index))
|
||||
if err == ledis.ErrNil && v != 0 {
|
||||
n, err := goredis.Int(c.Do("lindex", key, index))
|
||||
if err == goredis.ErrNil && v != 0 {
|
||||
return fmt.Errorf("must nil")
|
||||
} else if err != nil && err != ledis.ErrNil {
|
||||
} else if err != nil && err != goredis.ErrNil {
|
||||
return err
|
||||
} else if n != v {
|
||||
return fmt.Errorf("index err number %d != %d", n, v)
|
||||
|
@ -27,7 +27,7 @@ func testListRange(key []byte, start int64, stop int64, checkValues ...int) erro
|
|||
c := getTestConn()
|
||||
defer c.Close()
|
||||
|
||||
vs, err := ledis.MultiBulk(c.Do("lrange", key, start, stop))
|
||||
vs, err := goredis.MultiBulk(c.Do("lrange", key, start, stop))
|
||||
if err != nil {
|
||||
return err
|
||||
}
|
||||
|
@ -58,37 +58,37 @@ func TestList(t *testing.T) {
|
|||
defer c.Close()
|
||||
|
||||
key := []byte("a")
|
||||
if n, err := ledis.Int(c.Do("lkeyexists", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("lkeyexists", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 0 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("lpush", key, 1)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("lpush", key, 1)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("lkeyexists", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("lkeyexists", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(1)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("rpush", key, 2)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("rpush", key, 2)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 2 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("rpush", key, 3)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("rpush", key, 3)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 3 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("llen", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("llen", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 3 {
|
||||
t.Fatal(n)
|
||||
|
@ -212,7 +212,7 @@ func TestListMPush(t *testing.T) {
|
|||
defer c.Close()
|
||||
|
||||
key := []byte("b")
|
||||
if n, err := ledis.Int(c.Do("rpush", key, 1, 2, 3)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("rpush", key, 1, 2, 3)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 3 {
|
||||
t.Fatal(n)
|
||||
|
@ -222,7 +222,7 @@ func TestListMPush(t *testing.T) {
|
|||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("lpush", key, 1, 2, 3)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("lpush", key, 1, 2, 3)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 6 {
|
||||
t.Fatal(n)
|
||||
|
@ -238,25 +238,25 @@ func TestPop(t *testing.T) {
|
|||
defer c.Close()
|
||||
|
||||
key := []byte("c")
|
||||
if n, err := ledis.Int(c.Do("rpush", key, 1, 2, 3, 4, 5, 6)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("rpush", key, 1, 2, 3, 4, 5, 6)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 6 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if v, err := ledis.Int(c.Do("lpop", key)); err != nil {
|
||||
if v, err := goredis.Int(c.Do("lpop", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if v != 1 {
|
||||
t.Fatal(v)
|
||||
}
|
||||
|
||||
if v, err := ledis.Int(c.Do("rpop", key)); err != nil {
|
||||
if v, err := goredis.Int(c.Do("rpop", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if v != 6 {
|
||||
t.Fatal(v)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("lpush", key, 1)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("lpush", key, 1)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 5 {
|
||||
t.Fatal(n)
|
||||
|
@ -267,14 +267,14 @@ func TestPop(t *testing.T) {
|
|||
}
|
||||
|
||||
for i := 1; i <= 5; i++ {
|
||||
if v, err := ledis.Int(c.Do("lpop", key)); err != nil {
|
||||
if v, err := goredis.Int(c.Do("lpop", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if v != i {
|
||||
t.Fatal(v)
|
||||
}
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("llen", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("llen", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 0 {
|
||||
t.Fatal(n)
|
||||
|
@ -282,13 +282,13 @@ func TestPop(t *testing.T) {
|
|||
|
||||
c.Do("rpush", key, 1, 2, 3, 4, 5)
|
||||
|
||||
if n, err := ledis.Int(c.Do("lclear", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("lclear", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 5 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("llen", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("llen", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 0 {
|
||||
t.Fatal(n)
|
||||
|
|
|
@ -9,7 +9,7 @@ import (
|
|||
|
||||
"github.com/siddontang/go/hack"
|
||||
"github.com/siddontang/go/log"
|
||||
goledis "github.com/siddontang/ledisdb/client/goledis"
|
||||
"github.com/siddontang/goredis"
|
||||
"github.com/siddontang/ledisdb/ledis"
|
||||
)
|
||||
|
||||
|
@ -224,14 +224,13 @@ func xdumpCommand(c *client) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func (app *App) getMigrateClient(addr string) *goledis.Client {
|
||||
func (app *App) getMigrateClient(addr string) *goredis.Client {
|
||||
app.migrateM.Lock()
|
||||
|
||||
mc, ok := app.migrateClients[addr]
|
||||
if !ok {
|
||||
mc = goledis.NewClient(&goledis.Config{addr, 4, 0, 0})
|
||||
mc = goredis.NewClient(addr, "")
|
||||
app.migrateClients[addr] = mc
|
||||
|
||||
}
|
||||
|
||||
app.migrateM.Unlock()
|
||||
|
@ -448,7 +447,7 @@ func xmigrateCommand(c *client) error {
|
|||
return nil
|
||||
}
|
||||
|
||||
func getMigrateDBConn(c *client, addr string, db uint64) (*goledis.Conn, error) {
|
||||
func getMigrateDBConn(c *client, addr string, db uint64) (*goredis.PoolConn, error) {
|
||||
mc := c.app.getMigrateClient(addr)
|
||||
|
||||
conn, err := mc.Get()
|
||||
|
@ -469,7 +468,7 @@ var (
|
|||
errKeyInMigrating = errors.New("key is in migrating yet")
|
||||
)
|
||||
|
||||
func migrateKey(c *client, conn *goledis.Conn, tp string, key []byte, timeout int64) error {
|
||||
func migrateKey(c *client, conn *goredis.PoolConn, tp string, key []byte, timeout int64) error {
|
||||
if !c.app.migrateKeyLock(tp, key) {
|
||||
// other may also migrate this key, skip it
|
||||
return errKeyInMigrating
|
||||
|
@ -506,7 +505,7 @@ func migrateKey(c *client, conn *goledis.Conn, tp string, key []byte, timeout in
|
|||
return nil
|
||||
}
|
||||
|
||||
func migrateAllTypeKeys(c *client, conn *goledis.Conn, key []byte, timeout int64) error {
|
||||
func migrateAllTypeKeys(c *client, conn *goredis.PoolConn, key []byte, timeout int64) error {
|
||||
for _, tp := range TypeNames {
|
||||
err := migrateKey(c, conn, tp, key, timeout)
|
||||
if err != nil {
|
||||
|
|
|
@ -2,7 +2,7 @@ package server
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/siddontang/ledisdb/client/goledis"
|
||||
"github.com/siddontang/goredis"
|
||||
"github.com/siddontang/ledisdb/config"
|
||||
"os"
|
||||
"testing"
|
||||
|
@ -42,8 +42,8 @@ func TestDumpRestore(t *testing.T) {
|
|||
testDumpRestore(c, "zdump", "mtest_za", t)
|
||||
}
|
||||
|
||||
func testDumpRestore(c *ledis.Conn, dump string, key string, t *testing.T) {
|
||||
if data, err := ledis.Bytes(c.Do(dump, key)); err != nil {
|
||||
func testDumpRestore(c *goredis.PoolConn, dump string, key string, t *testing.T) {
|
||||
if data, err := goredis.Bytes(c.Do(dump, key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if _, err := c.Do("restore", key, 0, data); err != nil {
|
||||
t.Fatal(err)
|
||||
|
@ -80,10 +80,10 @@ func TestMigrate(t *testing.T) {
|
|||
|
||||
time.Sleep(1 * time.Second)
|
||||
|
||||
c1, _ := ledis.Connect(s1Cfg.Addr)
|
||||
c1, _ := goredis.Connect(s1Cfg.Addr)
|
||||
defer c1.Close()
|
||||
|
||||
c2, _ := ledis.Connect(s2Cfg.Addr)
|
||||
c2, _ := goredis.Connect(s2Cfg.Addr)
|
||||
defer c2.Close()
|
||||
|
||||
if _, err = c1.Do("set", "a", "1"); err != nil {
|
||||
|
@ -95,31 +95,31 @@ func TestMigrate(t *testing.T) {
|
|||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if s, err := ledis.String(c2.Do("get", "a")); err != nil {
|
||||
if s, err := goredis.String(c2.Do("get", "a")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if s != "1" {
|
||||
t.Fatal(s, "must 1")
|
||||
}
|
||||
|
||||
if s, err := ledis.String(c1.Do("get", "a")); err != nil && err != ledis.ErrNil {
|
||||
if s, err := goredis.String(c1.Do("get", "a")); err != nil && err != goredis.ErrNil {
|
||||
t.Fatal(err)
|
||||
} else if s != "" {
|
||||
t.Fatal(s, "must empty")
|
||||
}
|
||||
|
||||
if num, err := ledis.Int(c2.Do("xmigratedb", "127.0.0.1", 11185, "KV", 10, 0, timeout)); err != nil {
|
||||
if num, err := goredis.Int(c2.Do("xmigratedb", "127.0.0.1", 11185, "KV", 10, 0, timeout)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if num != 1 {
|
||||
t.Fatal(num, "must number 1")
|
||||
}
|
||||
|
||||
if s, err := ledis.String(c1.Do("get", "a")); err != nil {
|
||||
if s, err := goredis.String(c1.Do("get", "a")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if s != "1" {
|
||||
t.Fatal(s, "must 1")
|
||||
}
|
||||
|
||||
if s, err := ledis.String(c2.Do("get", "a")); err != nil && err != ledis.ErrNil {
|
||||
if s, err := goredis.String(c2.Do("get", "a")); err != nil && err != goredis.ErrNil {
|
||||
t.Fatal(err)
|
||||
} else if s != "" {
|
||||
t.Fatal(s, "must empty")
|
||||
|
@ -129,13 +129,13 @@ func TestMigrate(t *testing.T) {
|
|||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if s, err := ledis.String(c2.Do("get", "a")); err != nil {
|
||||
if s, err := goredis.String(c2.Do("get", "a")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if s != "1" {
|
||||
t.Fatal(s, "must 1")
|
||||
}
|
||||
|
||||
if s, err := ledis.String(c1.Do("get", "a")); err != nil && err != ledis.ErrNil {
|
||||
if s, err := goredis.String(c1.Do("get", "a")); err != nil && err != goredis.ErrNil {
|
||||
t.Fatal(err)
|
||||
} else if s != "" {
|
||||
t.Fatal(s, "must empty")
|
||||
|
|
|
@ -2,7 +2,7 @@ package server
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
goledis "github.com/siddontang/ledisdb/client/goledis"
|
||||
"github.com/siddontang/goredis"
|
||||
"github.com/siddontang/ledisdb/config"
|
||||
"os"
|
||||
"reflect"
|
||||
|
@ -159,9 +159,9 @@ func TestReplication(t *testing.T) {
|
|||
}
|
||||
|
||||
func checkTestRole(addr string, checkRoles []interface{}) error {
|
||||
conn, _ := goledis.Connect(addr)
|
||||
conn, _ := goredis.Connect(addr)
|
||||
defer conn.Close()
|
||||
roles, err := goledis.MultiBulk(conn.Do("ROLE"))
|
||||
roles, err := goredis.MultiBulk(conn.Do("ROLE"))
|
||||
if err != nil {
|
||||
return err
|
||||
} else if !reflect.DeepEqual(roles, checkRoles) {
|
||||
|
|
|
@ -2,7 +2,7 @@ package server
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/siddontang/ledisdb/client/goledis"
|
||||
"github.com/siddontang/goredis"
|
||||
"github.com/siddontang/ledisdb/config"
|
||||
"os"
|
||||
"testing"
|
||||
|
@ -22,10 +22,8 @@ func TestScan(t *testing.T) {
|
|||
go s.Run()
|
||||
defer s.Close()
|
||||
|
||||
cc := new(ledis.Config)
|
||||
cc.Addr = cfg.Addr
|
||||
cc.MaxIdleConns = 1
|
||||
c := ledis.NewClient(cc)
|
||||
c := goredis.NewClient(cfg.Addr, "")
|
||||
c.SetMaxIdleConns(1)
|
||||
defer c.Close()
|
||||
|
||||
testKVScan(t, c)
|
||||
|
@ -37,7 +35,7 @@ func TestScan(t *testing.T) {
|
|||
}
|
||||
|
||||
func checkScanValues(t *testing.T, ay interface{}, values ...interface{}) {
|
||||
a, err := ledis.Strings(ay, nil)
|
||||
a, err := goredis.Strings(ay, nil)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
@ -53,8 +51,8 @@ func checkScanValues(t *testing.T, ay interface{}, values ...interface{}) {
|
|||
}
|
||||
}
|
||||
|
||||
func checkScan(t *testing.T, c *ledis.Client, tp string) {
|
||||
if ay, err := ledis.Values(c.Do("XSCAN", tp, "", "count", 5)); err != nil {
|
||||
func checkScan(t *testing.T, c *goredis.Client, tp string) {
|
||||
if ay, err := goredis.Values(c.Do("XSCAN", tp, "", "count", 5)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if len(ay) != 2 {
|
||||
t.Fatal(len(ay))
|
||||
|
@ -64,7 +62,7 @@ func checkScan(t *testing.T, c *ledis.Client, tp string) {
|
|||
checkScanValues(t, ay[1], 0, 1, 2, 3, 4)
|
||||
}
|
||||
|
||||
if ay, err := ledis.Values(c.Do("XSCAN", tp, "4", "count", 6)); err != nil {
|
||||
if ay, err := goredis.Values(c.Do("XSCAN", tp, "4", "count", 6)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if len(ay) != 2 {
|
||||
t.Fatal(len(ay))
|
||||
|
@ -76,7 +74,7 @@ func checkScan(t *testing.T, c *ledis.Client, tp string) {
|
|||
|
||||
}
|
||||
|
||||
func testKVScan(t *testing.T, c *ledis.Client) {
|
||||
func testKVScan(t *testing.T, c *goredis.Client) {
|
||||
for i := 0; i < 10; i++ {
|
||||
if _, err := c.Do("set", fmt.Sprintf("%d", i), []byte("value")); err != nil {
|
||||
t.Fatal(err)
|
||||
|
@ -86,7 +84,7 @@ func testKVScan(t *testing.T, c *ledis.Client) {
|
|||
checkScan(t, c, "KV")
|
||||
}
|
||||
|
||||
func testHashKeyScan(t *testing.T, c *ledis.Client) {
|
||||
func testHashKeyScan(t *testing.T, c *goredis.Client) {
|
||||
for i := 0; i < 10; i++ {
|
||||
if _, err := c.Do("hset", fmt.Sprintf("%d", i), fmt.Sprintf("%d", i), []byte("value")); err != nil {
|
||||
t.Fatal(err)
|
||||
|
@ -96,7 +94,7 @@ func testHashKeyScan(t *testing.T, c *ledis.Client) {
|
|||
checkScan(t, c, "HASH")
|
||||
}
|
||||
|
||||
func testListKeyScan(t *testing.T, c *ledis.Client) {
|
||||
func testListKeyScan(t *testing.T, c *goredis.Client) {
|
||||
for i := 0; i < 10; i++ {
|
||||
if _, err := c.Do("lpush", fmt.Sprintf("%d", i), fmt.Sprintf("%d", i)); err != nil {
|
||||
t.Fatal(err)
|
||||
|
@ -106,7 +104,7 @@ func testListKeyScan(t *testing.T, c *ledis.Client) {
|
|||
checkScan(t, c, "LIST")
|
||||
}
|
||||
|
||||
func testZSetKeyScan(t *testing.T, c *ledis.Client) {
|
||||
func testZSetKeyScan(t *testing.T, c *goredis.Client) {
|
||||
for i := 0; i < 10; i++ {
|
||||
if _, err := c.Do("zadd", fmt.Sprintf("%d", i), i, []byte("value")); err != nil {
|
||||
t.Fatal(err)
|
||||
|
@ -116,7 +114,7 @@ func testZSetKeyScan(t *testing.T, c *ledis.Client) {
|
|||
checkScan(t, c, "ZSET")
|
||||
}
|
||||
|
||||
func testSetKeyScan(t *testing.T, c *ledis.Client) {
|
||||
func testSetKeyScan(t *testing.T, c *goredis.Client) {
|
||||
for i := 0; i < 10; i++ {
|
||||
if _, err := c.Do("sadd", fmt.Sprintf("%d", i), fmt.Sprintf("%d", i)); err != nil {
|
||||
t.Fatal(err)
|
||||
|
@ -133,7 +131,7 @@ func TestHashScan(t *testing.T) {
|
|||
key := "scan_hash"
|
||||
c.Do("HMSET", key, "a", 1, "b", 2)
|
||||
|
||||
if ay, err := ledis.Values(c.Do("XHSCAN", key, "")); err != nil {
|
||||
if ay, err := goredis.Values(c.Do("XHSCAN", key, "")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if len(ay) != 2 {
|
||||
t.Fatal(len(ay))
|
||||
|
@ -149,7 +147,7 @@ func TestSetScan(t *testing.T) {
|
|||
key := "scan_set"
|
||||
c.Do("SADD", key, "a", "b")
|
||||
|
||||
if ay, err := ledis.Values(c.Do("XSSCAN", key, "")); err != nil {
|
||||
if ay, err := goredis.Values(c.Do("XSSCAN", key, "")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if len(ay) != 2 {
|
||||
t.Fatal(len(ay))
|
||||
|
@ -166,7 +164,7 @@ func TestZSetScan(t *testing.T) {
|
|||
key := "scan_zset"
|
||||
c.Do("ZADD", key, 1, "a", 2, "b")
|
||||
|
||||
if ay, err := ledis.Values(c.Do("XZSCAN", key, "")); err != nil {
|
||||
if ay, err := goredis.Values(c.Do("XZSCAN", key, "")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if len(ay) != 2 {
|
||||
t.Fatal(len(ay))
|
||||
|
|
|
@ -4,7 +4,7 @@ package server
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/siddontang/ledisdb/client/goledis"
|
||||
"github.com/siddontang/goredis"
|
||||
"reflect"
|
||||
"testing"
|
||||
)
|
||||
|
@ -13,13 +13,13 @@ func TestCmdEval(t *testing.T) {
|
|||
c := getTestConn()
|
||||
defer c.Close()
|
||||
|
||||
if v, err := ledis.Strings(c.Do("eval", "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}", 2, "key1", "key2", "first", "second")); err != nil {
|
||||
if v, err := goredis.Strings(c.Do("eval", "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}", 2, "key1", "key2", "first", "second")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(v, []string{"key1", "key2", "first", "second"}) {
|
||||
t.Fatal(fmt.Sprintf("%v", v))
|
||||
}
|
||||
|
||||
if v, err := ledis.Strings(c.Do("eval", "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}", 2, "key1", "key2", "first", "second")); err != nil {
|
||||
if v, err := goredis.Strings(c.Do("eval", "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}", 2, "key1", "key2", "first", "second")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(v, []string{"key1", "key2", "first", "second"}) {
|
||||
t.Fatal(fmt.Sprintf("%v", v))
|
||||
|
@ -27,31 +27,31 @@ func TestCmdEval(t *testing.T) {
|
|||
|
||||
var sha1 string
|
||||
var err error
|
||||
if sha1, err = ledis.String(c.Do("script", "load", "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}")); err != nil {
|
||||
if sha1, err = goredis.String(c.Do("script", "load", "return {KEYS[1],KEYS[2],ARGV[1],ARGV[2]}")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if len(sha1) != 40 {
|
||||
t.Fatal(sha1)
|
||||
}
|
||||
|
||||
if v, err := ledis.Strings(c.Do("evalsha", sha1, 2, "key1", "key2", "first", "second")); err != nil {
|
||||
if v, err := goredis.Strings(c.Do("evalsha", sha1, 2, "key1", "key2", "first", "second")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(v, []string{"key1", "key2", "first", "second"}) {
|
||||
t.Fatal(fmt.Sprintf("%v", v))
|
||||
}
|
||||
|
||||
if ay, err := ledis.Values(c.Do("script", "exists", sha1, "01234567890123456789")); err != nil {
|
||||
if ay, err := goredis.Values(c.Do("script", "exists", sha1, "01234567890123456789")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(ay, []interface{}{int64(1), int64(0)}) {
|
||||
t.Fatal(fmt.Sprintf("%v", ay))
|
||||
}
|
||||
|
||||
if ok, err := ledis.String(c.Do("script", "flush")); err != nil {
|
||||
if ok, err := goredis.String(c.Do("script", "flush")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if ok != "OK" {
|
||||
t.Fatal(ok)
|
||||
}
|
||||
|
||||
if ay, err := ledis.Values(c.Do("script", "exists", sha1)); err != nil {
|
||||
if ay, err := goredis.Values(c.Do("script", "exists", sha1)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(ay, []interface{}{int64(0)}) {
|
||||
t.Fatal(fmt.Sprintf("%v", ay))
|
||||
|
|
|
@ -1,7 +1,7 @@
|
|||
package server
|
||||
|
||||
import (
|
||||
"github.com/siddontang/ledisdb/client/goledis"
|
||||
"github.com/siddontang/goredis"
|
||||
"testing"
|
||||
)
|
||||
|
||||
|
@ -12,91 +12,91 @@ func TestSet(t *testing.T) {
|
|||
key1 := "testdb_cmd_set_1"
|
||||
key2 := "testdb_cmd_set_2"
|
||||
|
||||
if n, err := ledis.Int(c.Do("skeyexists", key1)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("skeyexists", key1)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 0 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("sadd", key1, 0, 1)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("sadd", key1, 0, 1)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 2 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("skeyexists", key1)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("skeyexists", key1)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("sadd", key2, 0, 1, 2, 3)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("sadd", key2, 0, 1, 2, 3)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 4 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("scard", key1)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("scard", key1)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 2 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.MultiBulk(c.Do("sdiff", key2, key1)); err != nil {
|
||||
if n, err := goredis.MultiBulk(c.Do("sdiff", key2, key1)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if len(n) != 2 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("sdiffstore", []byte("cmd_set_em1"), key2, key1)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("sdiffstore", []byte("cmd_set_em1"), key2, key1)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 2 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.MultiBulk(c.Do("sunion", key1, key2)); err != nil {
|
||||
if n, err := goredis.MultiBulk(c.Do("sunion", key1, key2)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if len(n) != 4 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("sunionstore", []byte("cmd_set_em2"), key1, key2)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("sunionstore", []byte("cmd_set_em2"), key1, key2)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 4 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.MultiBulk(c.Do("sinter", key1, key2)); err != nil {
|
||||
if n, err := goredis.MultiBulk(c.Do("sinter", key1, key2)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if len(n) != 2 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("sinterstore", []byte("cmd_set_em3"), key1, key2)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("sinterstore", []byte("cmd_set_em3"), key1, key2)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 2 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("srem", key1, 0, 1)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("srem", key1, 0, 1)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 2 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("sismember", key2, 0)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("sismember", key2, 0)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.MultiBulk(c.Do("smembers", key2)); err != nil {
|
||||
if n, err := goredis.MultiBulk(c.Do("smembers", key2)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if len(n) != 4 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("sclear", key2)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("sclear", key2)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 4 {
|
||||
t.Fatal(n)
|
||||
|
@ -104,7 +104,7 @@ func TestSet(t *testing.T) {
|
|||
|
||||
c.Do("sadd", key1, 0)
|
||||
c.Do("sadd", key2, 1)
|
||||
if n, err := ledis.Int(c.Do("smclear", key1, key2)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("smclear", key1, key2)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 2 {
|
||||
t.Fatal(n)
|
||||
|
|
|
@ -2,7 +2,7 @@ package server
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
goledis "github.com/siddontang/ledisdb/client/goledis"
|
||||
"github.com/siddontang/goredis"
|
||||
"testing"
|
||||
)
|
||||
|
||||
|
@ -79,7 +79,7 @@ func TestSort(t *testing.T) {
|
|||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if n, err := goledis.Int(c.Do("XLSORT", key, "STORE", storeKey)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("XLSORT", key, "STORE", storeKey)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 3 {
|
||||
t.Fatalf("invalid return store sort number, %d != 3", n)
|
||||
|
|
|
@ -2,7 +2,7 @@ package server
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/siddontang/ledisdb/client/goledis"
|
||||
"github.com/siddontang/goredis"
|
||||
"testing"
|
||||
"time"
|
||||
)
|
||||
|
@ -63,13 +63,13 @@ func TestExpire(t *testing.T) {
|
|||
}
|
||||
// expire + ttl
|
||||
exp := int64(10)
|
||||
if n, err := ledis.Int(c.Do(expire, key, exp)); err != nil {
|
||||
if n, err := goredis.Int(c.Do(expire, key, exp)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if ttl, err := ledis.Int64(c.Do(ttl, key)); err != nil {
|
||||
if ttl, err := goredis.Int64(c.Do(ttl, key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if ttl == -1 {
|
||||
t.Fatal("no ttl")
|
||||
|
@ -77,13 +77,13 @@ func TestExpire(t *testing.T) {
|
|||
|
||||
// expireat + ttl
|
||||
tm := now() + 3
|
||||
if n, err := ledis.Int(c.Do(expireat, key, tm)); err != nil {
|
||||
if n, err := goredis.Int(c.Do(expireat, key, tm)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if ttl, err := ledis.Int64(c.Do(ttl, key)); err != nil {
|
||||
if ttl, err := goredis.Int64(c.Do(ttl, key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if ttl == -1 {
|
||||
t.Fatal("no ttl")
|
||||
|
@ -92,31 +92,31 @@ func TestExpire(t *testing.T) {
|
|||
kErr := "not_exist_ttl"
|
||||
|
||||
// err - expire, expireat
|
||||
if n, err := ledis.Int(c.Do(expire, kErr, tm)); err != nil || n != 0 {
|
||||
if n, err := goredis.Int(c.Do(expire, kErr, tm)); err != nil || n != 0 {
|
||||
t.Fatal(false)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do(expireat, kErr, tm)); err != nil || n != 0 {
|
||||
if n, err := goredis.Int(c.Do(expireat, kErr, tm)); err != nil || n != 0 {
|
||||
t.Fatal(false)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do(ttl, kErr)); err != nil || n != -1 {
|
||||
if n, err := goredis.Int(c.Do(ttl, kErr)); err != nil || n != -1 {
|
||||
t.Fatal(false)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do(persist, key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do(persist, key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do(expire, key, 10)); err != nil {
|
||||
if n, err := goredis.Int(c.Do(expire, key, 10)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do(persist, key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do(persist, key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
|
|
|
@ -2,7 +2,7 @@ package server
|
|||
|
||||
import (
|
||||
"fmt"
|
||||
"github.com/siddontang/ledisdb/client/goledis"
|
||||
"github.com/siddontang/goredis"
|
||||
"reflect"
|
||||
"strconv"
|
||||
"testing"
|
||||
|
@ -14,103 +14,103 @@ func TestZSet(t *testing.T) {
|
|||
|
||||
key := []byte("myzset")
|
||||
|
||||
if n, err := ledis.Int(c.Do("zkeyexists", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zkeyexists", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 0 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zadd", key, 3, "a", 4, "b")); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zadd", key, 3, "a", 4, "b")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 2 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zkeyexists", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zkeyexists", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zcard", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zcard", key)); err != nil {
|
||||
t.Fatal(n)
|
||||
} else if n != 2 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zadd", key, 1, "a", 2, "b")); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zadd", key, 1, "a", 2, "b")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 0 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zcard", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zcard", key)); err != nil {
|
||||
t.Fatal(n)
|
||||
} else if n != 2 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zadd", key, 3, "c", 4, "d")); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zadd", key, 3, "c", 4, "d")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 2 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zcard", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zcard", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 4 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if s, err := ledis.Int(c.Do("zscore", key, "c")); err != nil {
|
||||
if s, err := goredis.Int(c.Do("zscore", key, "c")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if s != 3 {
|
||||
t.Fatal(s)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zrem", key, "d", "e")); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zrem", key, "d", "e")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zcard", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zcard", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 3 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zincrby", key, 4, "c")); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zincrby", key, 4, "c")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 7 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zincrby", key, -4, "c")); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zincrby", key, -4, "c")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 3 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zincrby", key, 4, "d")); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zincrby", key, 4, "d")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 4 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zcard", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zcard", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 4 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zrem", key, "a", "b", "c", "d")); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zrem", key, "a", "b", "c", "d")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 4 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zcard", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zcard", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 0 {
|
||||
t.Fatal(n)
|
||||
|
@ -123,47 +123,47 @@ func TestZSetCount(t *testing.T) {
|
|||
defer c.Close()
|
||||
|
||||
key := []byte("myzset")
|
||||
if _, err := ledis.Int(c.Do("zadd", key, 1, "a", 2, "b", 3, "c", 4, "d")); err != nil {
|
||||
if _, err := goredis.Int(c.Do("zadd", key, 1, "a", 2, "b", 3, "c", 4, "d")); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zcount", key, 2, 4)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zcount", key, 2, 4)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 3 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zcount", key, 4, 4)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zcount", key, 4, 4)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zcount", key, 4, 3)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zcount", key, 4, 3)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 0 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zcount", key, "(2", 4)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zcount", key, "(2", 4)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 2 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zcount", key, "2", "(4")); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zcount", key, "2", "(4")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 2 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zcount", key, "(2", "(4")); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zcount", key, "(2", "(4")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zcount", key, "-inf", "+inf")); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zcount", key, "-inf", "+inf")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 4 {
|
||||
t.Fatal(n)
|
||||
|
@ -171,7 +171,7 @@ func TestZSetCount(t *testing.T) {
|
|||
|
||||
c.Do("zadd", key, 3, "e")
|
||||
|
||||
if n, err := ledis.Int(c.Do("zcount", key, "(2", "(4")); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zcount", key, "(2", "(4")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 2 {
|
||||
t.Fatal(n)
|
||||
|
@ -185,27 +185,27 @@ func TestZSetRank(t *testing.T) {
|
|||
defer c.Close()
|
||||
|
||||
key := []byte("myzset")
|
||||
if _, err := ledis.Int(c.Do("zadd", key, 1, "a", 2, "b", 3, "c", 4, "d")); err != nil {
|
||||
if _, err := goredis.Int(c.Do("zadd", key, 1, "a", 2, "b", 3, "c", 4, "d")); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zrank", key, "c")); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zrank", key, "c")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 2 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if _, err := ledis.Int(c.Do("zrank", key, "e")); err != ledis.ErrNil {
|
||||
if _, err := goredis.Int(c.Do("zrank", key, "e")); err != goredis.ErrNil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zrevrank", key, "c")); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zrevrank", key, "c")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 1 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if _, err := ledis.Int(c.Do("zrevrank", key, "e")); err != ledis.ErrNil {
|
||||
if _, err := goredis.Int(c.Do("zrevrank", key, "e")); err != goredis.ErrNil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
}
|
||||
|
@ -242,11 +242,11 @@ func TestZSetRangeScore(t *testing.T) {
|
|||
defer c.Close()
|
||||
|
||||
key := []byte("myzset_range")
|
||||
if _, err := ledis.Int(c.Do("zadd", key, 1, "a", 2, "b", 3, "c", 4, "d")); err != nil {
|
||||
if _, err := goredis.Int(c.Do("zadd", key, 1, "a", 2, "b", 3, "c", 4, "d")); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("zrangebyscore", key, 1, 4, "withscores")); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("zrangebyscore", key, 1, 4, "withscores")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if err := testZSetRange(v, "a", 1, "b", 2, "c", 3, "d", 4); err != nil {
|
||||
|
@ -254,7 +254,7 @@ func TestZSetRangeScore(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("zrangebyscore", key, 1, 4, "withscores", "limit", 1, 2)); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("zrangebyscore", key, 1, 4, "withscores", "limit", 1, 2)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if err := testZSetRange(v, "b", 2, "c", 3); err != nil {
|
||||
|
@ -262,7 +262,7 @@ func TestZSetRangeScore(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("zrangebyscore", key, "-inf", "+inf", "withscores")); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("zrangebyscore", key, "-inf", "+inf", "withscores")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if err := testZSetRange(v, "a", 1, "b", 2, "c", 3, "d", 4); err != nil {
|
||||
|
@ -270,7 +270,7 @@ func TestZSetRangeScore(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("zrangebyscore", key, "(1", "(4")); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("zrangebyscore", key, "(1", "(4")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if err := testZSetRange(v, "b", "c"); err != nil {
|
||||
|
@ -278,7 +278,7 @@ func TestZSetRangeScore(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("zrevrangebyscore", key, 4, 1, "withscores")); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("zrevrangebyscore", key, 4, 1, "withscores")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if err := testZSetRange(v, "d", 4, "c", 3, "b", 2, "a", 1); err != nil {
|
||||
|
@ -286,7 +286,7 @@ func TestZSetRangeScore(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("zrevrangebyscore", key, 4, 1, "withscores", "limit", 1, 2)); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("zrevrangebyscore", key, 4, 1, "withscores", "limit", 1, 2)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if err := testZSetRange(v, "c", 3, "b", 2); err != nil {
|
||||
|
@ -294,7 +294,7 @@ func TestZSetRangeScore(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("zrevrangebyscore", key, "+inf", "-inf", "withscores")); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("zrevrangebyscore", key, "+inf", "-inf", "withscores")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if err := testZSetRange(v, "d", 4, "c", 3, "b", 2, "a", 1); err != nil {
|
||||
|
@ -302,7 +302,7 @@ func TestZSetRangeScore(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("zrevrangebyscore", key, "(4", "(1")); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("zrevrangebyscore", key, "(4", "(1")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if err := testZSetRange(v, "c", "b"); err != nil {
|
||||
|
@ -310,19 +310,19 @@ func TestZSetRangeScore(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zremrangebyscore", key, 2, 3)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zremrangebyscore", key, 2, 3)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 2 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zcard", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zcard", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 2 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("zrangebyscore", key, 1, 4)); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("zrangebyscore", key, 1, 4)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if err := testZSetRange(v, "a", "d"); err != nil {
|
||||
|
@ -336,11 +336,11 @@ func TestZSetRange(t *testing.T) {
|
|||
defer c.Close()
|
||||
|
||||
key := []byte("myzset_range_rank")
|
||||
if _, err := ledis.Int(c.Do("zadd", key, 1, "a", 2, "b", 3, "c", 4, "d")); err != nil {
|
||||
if _, err := goredis.Int(c.Do("zadd", key, 1, "a", 2, "b", 3, "c", 4, "d")); err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("zrange", key, 0, 3, "withscores")); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("zrange", key, 0, 3, "withscores")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if err := testZSetRange(v, "a", 1, "b", 2, "c", 3, "d", 4); err != nil {
|
||||
|
@ -348,7 +348,7 @@ func TestZSetRange(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("zrange", key, 1, 4, "withscores")); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("zrange", key, 1, 4, "withscores")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if err := testZSetRange(v, "b", 2, "c", 3, "d", 4); err != nil {
|
||||
|
@ -356,7 +356,7 @@ func TestZSetRange(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("zrange", key, -2, -1, "withscores")); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("zrange", key, -2, -1, "withscores")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if err := testZSetRange(v, "c", 3, "d", 4); err != nil {
|
||||
|
@ -364,7 +364,7 @@ func TestZSetRange(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("zrange", key, 0, -1, "withscores")); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("zrange", key, 0, -1, "withscores")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if err := testZSetRange(v, "a", 1, "b", 2, "c", 3, "d", 4); err != nil {
|
||||
|
@ -372,13 +372,13 @@ func TestZSetRange(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("zrange", key, -1, -2, "withscores")); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("zrange", key, -1, -2, "withscores")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if len(v) != 0 {
|
||||
t.Fatal(len(v))
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("zrevrange", key, 0, 4, "withscores")); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("zrevrange", key, 0, 4, "withscores")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if err := testZSetRange(v, "d", 4, "c", 3, "b", 2, "a", 1); err != nil {
|
||||
|
@ -386,7 +386,7 @@ func TestZSetRange(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("zrevrange", key, 0, -1, "withscores")); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("zrevrange", key, 0, -1, "withscores")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if err := testZSetRange(v, "d", 4, "c", 3, "b", 2, "a", 1); err != nil {
|
||||
|
@ -394,7 +394,7 @@ func TestZSetRange(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("zrevrange", key, 2, 3, "withscores")); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("zrevrange", key, 2, 3, "withscores")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if err := testZSetRange(v, "b", 2, "a", 1); err != nil {
|
||||
|
@ -402,7 +402,7 @@ func TestZSetRange(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("zrevrange", key, -2, -1, "withscores")); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("zrevrange", key, -2, -1, "withscores")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if err := testZSetRange(v, "b", 2, "a", 1); err != nil {
|
||||
|
@ -410,19 +410,19 @@ func TestZSetRange(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zremrangebyrank", key, 2, 3)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zremrangebyrank", key, 2, 3)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 2 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zcard", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zcard", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 2 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if v, err := ledis.MultiBulk(c.Do("zrange", key, 0, 4)); err != nil {
|
||||
if v, err := goredis.MultiBulk(c.Do("zrange", key, 0, 4)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else {
|
||||
if err := testZSetRange(v, "a", "b"); err != nil {
|
||||
|
@ -430,13 +430,13 @@ func TestZSetRange(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zclear", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zclear", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 2 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int(c.Do("zcard", key)); err != nil {
|
||||
if n, err := goredis.Int(c.Do("zcard", key)); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 0 {
|
||||
t.Fatal(n)
|
||||
|
@ -634,7 +634,7 @@ func TestZUnionStore(t *testing.T) {
|
|||
t.Fatal(err.Error())
|
||||
}
|
||||
|
||||
if n, err := ledis.Int64(c.Do("zunionstore", "out", "2", "k1", "k2", "weights", "1", "2")); err != nil {
|
||||
if n, err := goredis.Int64(c.Do("zunionstore", "out", "2", "k1", "k2", "weights", "1", "2")); err != nil {
|
||||
t.Fatal(err.Error())
|
||||
} else {
|
||||
if n != 3 {
|
||||
|
@ -642,7 +642,7 @@ func TestZUnionStore(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if n, err := ledis.Int64(c.Do("zunionstore", "out", "2", "k1", "k2", "weights", "1", "2", "aggregate", "min")); err != nil {
|
||||
if n, err := goredis.Int64(c.Do("zunionstore", "out", "2", "k1", "k2", "weights", "1", "2", "aggregate", "min")); err != nil {
|
||||
t.Fatal(err.Error())
|
||||
} else {
|
||||
if n != 3 {
|
||||
|
@ -650,7 +650,7 @@ func TestZUnionStore(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if n, err := ledis.Int64(c.Do("zunionstore", "out", "2", "k1", "k2", "aggregate", "max")); err != nil {
|
||||
if n, err := goredis.Int64(c.Do("zunionstore", "out", "2", "k1", "k2", "aggregate", "max")); err != nil {
|
||||
t.Fatal(err.Error())
|
||||
} else {
|
||||
if n != 3 {
|
||||
|
@ -658,7 +658,7 @@ func TestZUnionStore(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if n, err := ledis.Int64(c.Do("zscore", "out", "two")); err != nil {
|
||||
if n, err := goredis.Int64(c.Do("zscore", "out", "two")); err != nil {
|
||||
t.Fatal(err.Error())
|
||||
} else {
|
||||
if n != 2 {
|
||||
|
@ -687,7 +687,7 @@ func TestZInterStore(t *testing.T) {
|
|||
t.Fatal(err.Error())
|
||||
}
|
||||
|
||||
if n, err := ledis.Int64(c.Do("zinterstore", "out", "2", "k1", "k2", "weights", "1", "2")); err != nil {
|
||||
if n, err := goredis.Int64(c.Do("zinterstore", "out", "2", "k1", "k2", "weights", "1", "2")); err != nil {
|
||||
t.Fatal(err.Error())
|
||||
} else {
|
||||
if n != 1 {
|
||||
|
@ -695,7 +695,7 @@ func TestZInterStore(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if n, err := ledis.Int64(c.Do("zinterstore", "out", "2", "k1", "k2", "aggregate", "min", "weights", "1", "2")); err != nil {
|
||||
if n, err := goredis.Int64(c.Do("zinterstore", "out", "2", "k1", "k2", "aggregate", "min", "weights", "1", "2")); err != nil {
|
||||
t.Fatal(err.Error())
|
||||
} else {
|
||||
if n != 1 {
|
||||
|
@ -703,7 +703,7 @@ func TestZInterStore(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if n, err := ledis.Int64(c.Do("zinterstore", "out", "2", "k1", "k2", "aggregate", "sum")); err != nil {
|
||||
if n, err := goredis.Int64(c.Do("zinterstore", "out", "2", "k1", "k2", "aggregate", "sum")); err != nil {
|
||||
t.Fatal(err.Error())
|
||||
} else {
|
||||
if n != 1 {
|
||||
|
@ -711,7 +711,7 @@ func TestZInterStore(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if n, err := ledis.Int64(c.Do("zscore", "out", "two")); err != nil {
|
||||
if n, err := goredis.Int64(c.Do("zscore", "out", "two")); err != nil {
|
||||
t.Fatal(err.Error())
|
||||
} else {
|
||||
if n != 3 {
|
||||
|
@ -723,7 +723,7 @@ func TestZInterStore(t *testing.T) {
|
|||
t.Fatal(err.Error())
|
||||
}
|
||||
|
||||
if n, err := ledis.Int64(c.Do("zinterstore", "out", "3", "k1", "k2", "k3", "aggregate", "sum")); err != nil {
|
||||
if n, err := goredis.Int64(c.Do("zinterstore", "out", "3", "k1", "k2", "k3", "aggregate", "sum")); err != nil {
|
||||
t.Fatal(err.Error())
|
||||
} else {
|
||||
if n != 0 {
|
||||
|
@ -735,7 +735,7 @@ func TestZInterStore(t *testing.T) {
|
|||
t.Fatal(err.Error())
|
||||
}
|
||||
|
||||
if n, err := ledis.Int64(c.Do("zinterstore", "out", "3", "k1", "k2", "k3", "aggregate", "sum", "weights", "3", "2", "2")); err != nil {
|
||||
if n, err := goredis.Int64(c.Do("zinterstore", "out", "3", "k1", "k2", "k3", "aggregate", "sum", "weights", "3", "2", "2")); err != nil {
|
||||
t.Fatal(err.Error())
|
||||
} else {
|
||||
if n != 1 {
|
||||
|
@ -743,7 +743,7 @@ func TestZInterStore(t *testing.T) {
|
|||
}
|
||||
}
|
||||
|
||||
if n, err := ledis.Int64(c.Do("zscore", "out", "two")); err != nil {
|
||||
if n, err := goredis.Int64(c.Do("zscore", "out", "two")); err != nil {
|
||||
t.Fatal(err.Error())
|
||||
} else {
|
||||
if n != 14 {
|
||||
|
@ -762,37 +762,37 @@ func TestZSetLex(t *testing.T) {
|
|||
t.Fatal(err)
|
||||
}
|
||||
|
||||
if ay, err := ledis.Strings(c.Do("zrangebylex", key, "-", "[c")); err != nil {
|
||||
if ay, err := goredis.Strings(c.Do("zrangebylex", key, "-", "[c")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(ay, []string{"a", "b", "c"}) {
|
||||
t.Fatal("must equal")
|
||||
}
|
||||
|
||||
if ay, err := ledis.Strings(c.Do("zrangebylex", key, "-", "(c")); err != nil {
|
||||
if ay, err := goredis.Strings(c.Do("zrangebylex", key, "-", "(c")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(ay, []string{"a", "b"}) {
|
||||
t.Fatal("must equal")
|
||||
}
|
||||
|
||||
if ay, err := ledis.Strings(c.Do("zrangebylex", key, "[aaa", "(g")); err != nil {
|
||||
if ay, err := goredis.Strings(c.Do("zrangebylex", key, "[aaa", "(g")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if !reflect.DeepEqual(ay, []string{"b", "c", "d", "e", "f"}) {
|
||||
t.Fatal("must equal")
|
||||
}
|
||||
|
||||
if n, err := ledis.Int64(c.Do("zlexcount", key, "-", "(c")); err != nil {
|
||||
if n, err := goredis.Int64(c.Do("zlexcount", key, "-", "(c")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 2 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int64(c.Do("zremrangebylex", key, "[aaa", "(g")); err != nil {
|
||||
if n, err := goredis.Int64(c.Do("zremrangebylex", key, "[aaa", "(g")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 5 {
|
||||
t.Fatal(n)
|
||||
}
|
||||
|
||||
if n, err := ledis.Int64(c.Do("zlexcount", key, "-", "+")); err != nil {
|
||||
if n, err := goredis.Int64(c.Do("zlexcount", key, "-", "+")); err != nil {
|
||||
t.Fatal(err)
|
||||
} else if n != 2 {
|
||||
t.Fatal(n)
|
||||
|
|
|
@ -7,7 +7,7 @@ import (
|
|||
"github.com/siddontang/go/log"
|
||||
"github.com/siddontang/go/num"
|
||||
"github.com/siddontang/go/sync2"
|
||||
goledis "github.com/siddontang/ledisdb/client/goledis"
|
||||
"github.com/siddontang/goredis"
|
||||
"github.com/siddontang/ledisdb/ledis"
|
||||
"github.com/siddontang/ledisdb/rpl"
|
||||
"net"
|
||||
|
@ -49,7 +49,7 @@ type master struct {
|
|||
sync.Mutex
|
||||
|
||||
connLock sync.Mutex
|
||||
conn *goledis.Conn
|
||||
conn *goredis.Conn
|
||||
|
||||
app *App
|
||||
|
||||
|
@ -108,7 +108,7 @@ func (m *master) checkConn() error {
|
|||
|
||||
var err error
|
||||
if m.conn == nil {
|
||||
m.conn, err = goledis.Connect(m.addr)
|
||||
m.conn, err = goredis.Connect(m.addr)
|
||||
} else {
|
||||
if _, err = m.conn.Do("PING"); err != nil {
|
||||
m.conn.Close()
|
||||
|
@ -227,7 +227,7 @@ func (m *master) replConf() error {
|
|||
return err
|
||||
}
|
||||
|
||||
if s, err := goledis.String(m.conn.Do("replconf", "listening-port", port)); err != nil {
|
||||
if s, err := goredis.String(m.conn.Do("replconf", "listening-port", port)); err != nil {
|
||||
return err
|
||||
} else if strings.ToUpper(s) != "OK" {
|
||||
return fmt.Errorf("not ok but %s", s)
|
||||
|
|
Loading…
Reference in New Issue