mirror of https://github.com/ledisdb/ledisdb.git
add key exists for hash, list, set and zset
This commit is contained in:
parent
c69f803f37
commit
71b32895b8
|
@ -1,4 +1,4 @@
|
||||||
//This file was generated by .tools/generate_commands.py on Wed Mar 04 2015 09:09:49 +0800
|
//This file was generated by .tools/generate_commands.py on Wed Mar 04 2015 09:31:59 +0800
|
||||||
package main
|
package main
|
||||||
|
|
||||||
var helpCommands = [][]string{
|
var helpCommands = [][]string{
|
||||||
|
@ -38,6 +38,7 @@ var helpCommands = [][]string{
|
||||||
{"HGET", "key field", "Hash"},
|
{"HGET", "key field", "Hash"},
|
||||||
{"HGETALL", "key", "Hash"},
|
{"HGETALL", "key", "Hash"},
|
||||||
{"HINCRBY", "key field increment", "Hash"},
|
{"HINCRBY", "key field increment", "Hash"},
|
||||||
|
{"HKEYEXISTS", "key", "Hash"},
|
||||||
{"HKEYS", "key", "Hash"},
|
{"HKEYS", "key", "Hash"},
|
||||||
{"HLEN", "key", "Hash"},
|
{"HLEN", "key", "Hash"},
|
||||||
{"HMCLEAR", "key [key ...]", "Hash"},
|
{"HMCLEAR", "key [key ...]", "Hash"},
|
||||||
|
@ -55,6 +56,7 @@ var helpCommands = [][]string{
|
||||||
{"LEXPIRE", "key seconds", "List"},
|
{"LEXPIRE", "key seconds", "List"},
|
||||||
{"LEXPIREAT", "key timestamp", "List"},
|
{"LEXPIREAT", "key timestamp", "List"},
|
||||||
{"LINDEX", "key index", "List"},
|
{"LINDEX", "key index", "List"},
|
||||||
|
{"LKEYEXISTS", "key", "List"},
|
||||||
{"LLEN", "key", "List"},
|
{"LLEN", "key", "List"},
|
||||||
{"LMCLEAR", "key [key ...]", "List"},
|
{"LMCLEAR", "key [key ...]", "List"},
|
||||||
{"LPERSIST", "key", "List"},
|
{"LPERSIST", "key", "List"},
|
||||||
|
@ -91,6 +93,7 @@ var helpCommands = [][]string{
|
||||||
{"SINTER", "key [key ...]", "Set"},
|
{"SINTER", "key [key ...]", "Set"},
|
||||||
{"SINTERSTORE", "destination key [key ...]", "Set"},
|
{"SINTERSTORE", "destination key [key ...]", "Set"},
|
||||||
{"SISMEMBER", "key member", "Set"},
|
{"SISMEMBER", "key member", "Set"},
|
||||||
|
{"SKEYEXISTS", "key", "Set"},
|
||||||
{"SLAVEOF", "host port [RESTART] [READONLY]", "Replication"},
|
{"SLAVEOF", "host port [RESTART] [READONLY]", "Replication"},
|
||||||
{"SMCLEAR", "key [key ...]", "Set"},
|
{"SMCLEAR", "key [key ...]", "Set"},
|
||||||
{"SMEMBERS", "key", "Set"},
|
{"SMEMBERS", "key", "Set"},
|
||||||
|
@ -116,6 +119,7 @@ var helpCommands = [][]string{
|
||||||
{"ZEXPIREAT", "key timestamp", "ZSet"},
|
{"ZEXPIREAT", "key timestamp", "ZSet"},
|
||||||
{"ZINCRBY", "key increment member", "ZSet"},
|
{"ZINCRBY", "key increment member", "ZSet"},
|
||||||
{"ZINTERSTORE", "destkey numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]", "ZSet"},
|
{"ZINTERSTORE", "destkey numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]", "ZSet"},
|
||||||
|
{"ZKEYEXISTS", "ZSet", "Hash"},
|
||||||
{"ZLEXCOUNT", "key min max", "ZSet"},
|
{"ZLEXCOUNT", "key min max", "ZSet"},
|
||||||
{"ZMCLEAR", "key [key ...]", "ZSet"},
|
{"ZMCLEAR", "key [key ...]", "ZSet"},
|
||||||
{"ZPERSIST", "key", "ZSet"},
|
{"ZPERSIST", "key", "ZSet"},
|
||||||
|
|
|
@ -691,5 +691,29 @@
|
||||||
"arguments" : "key offset value",
|
"arguments" : "key offset value",
|
||||||
"group" : "KV",
|
"group" : "KV",
|
||||||
"readonly" : false
|
"readonly" : false
|
||||||
|
},
|
||||||
|
|
||||||
|
"HKEYEXISTS": {
|
||||||
|
"arguments" : "key",
|
||||||
|
"group" : "Hash",
|
||||||
|
"readonly" : true
|
||||||
|
},
|
||||||
|
|
||||||
|
"LKEYEXISTS": {
|
||||||
|
"arguments" : "key",
|
||||||
|
"group" : "List",
|
||||||
|
"readonly" : true
|
||||||
|
},
|
||||||
|
|
||||||
|
"SKEYEXISTS": {
|
||||||
|
"arguments" : "key",
|
||||||
|
"group" : "Set",
|
||||||
|
"readonly" : true
|
||||||
|
},
|
||||||
|
|
||||||
|
"ZKEYEXISTS": {
|
||||||
|
"arguments" : "ZSet",
|
||||||
|
"group" : "Hash",
|
||||||
|
"readonly" : true
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -57,6 +57,7 @@ Most of the Ledisdb's commands are the same as Redis's, you can see the redis co
|
||||||
- [HTTL key](#httl-key)
|
- [HTTL key](#httl-key)
|
||||||
- [HPERSIST key](#hpersist-key)
|
- [HPERSIST key](#hpersist-key)
|
||||||
- [HDUMP key](#hdump-key)
|
- [HDUMP key](#hdump-key)
|
||||||
|
- [HKEYEXISTS key](#hkeyexists-key)
|
||||||
- [List](#list)
|
- [List](#list)
|
||||||
- [BLPOP key [key ...] timeout](#blpop-key-key--timeout)
|
- [BLPOP key [key ...] timeout](#blpop-key-key--timeout)
|
||||||
- [BRPOP key [key ...] timeout](#brpop-key-key--timeout)
|
- [BRPOP key [key ...] timeout](#brpop-key-key--timeout)
|
||||||
|
@ -74,6 +75,7 @@ Most of the Ledisdb's commands are the same as Redis's, you can see the redis co
|
||||||
- [LTTL key](#lttl-key)
|
- [LTTL key](#lttl-key)
|
||||||
- [LPERSIST key](#lpersist-key)
|
- [LPERSIST key](#lpersist-key)
|
||||||
- [LDUMP key](#ldump-key)
|
- [LDUMP key](#ldump-key)
|
||||||
|
- [LKEYEXISTS key](#lkeyexists-key)
|
||||||
- [Set](#set)
|
- [Set](#set)
|
||||||
- [SADD key member [member ...]](#sadd-key-member-member-)
|
- [SADD key member [member ...]](#sadd-key-member-member-)
|
||||||
- [SCARD key](#scard-key)
|
- [SCARD key](#scard-key)
|
||||||
|
@ -93,6 +95,7 @@ Most of the Ledisdb's commands are the same as Redis's, you can see the redis co
|
||||||
- [STTL key](#sttl-key)
|
- [STTL key](#sttl-key)
|
||||||
- [SPERSIST key](#spersist-key)
|
- [SPERSIST key](#spersist-key)
|
||||||
- [SDUMP key](#sdump-key)
|
- [SDUMP key](#sdump-key)
|
||||||
|
- [SKEYEXISTS key](#skeyexists-key)
|
||||||
- [ZSet](#zset)
|
- [ZSet](#zset)
|
||||||
- [ZADD key score member [score member ...]](#zadd-key-score-member-score-member-)
|
- [ZADD key score member [score member ...]](#zadd-key-score-member-score-member-)
|
||||||
- [ZCARD key](#zcard-key)
|
- [ZCARD key](#zcard-key)
|
||||||
|
@ -120,6 +123,7 @@ Most of the Ledisdb's commands are the same as Redis's, you can see the redis co
|
||||||
- [ZREMRANGEBYLEX key min max](#zremrangebylex-key-min-max)
|
- [ZREMRANGEBYLEX key min max](#zremrangebylex-key-min-max)
|
||||||
- [ZLEXCOUNT key min max](#zlexcount-key-min-max)
|
- [ZLEXCOUNT key min max](#zlexcount-key-min-max)
|
||||||
- [ZDUMP key](#zdump-key)
|
- [ZDUMP key](#zdump-key)
|
||||||
|
- [ZKEYEXISTS key](#zkeyexists-key)
|
||||||
- [Scan](#scan)
|
- [Scan](#scan)
|
||||||
- [XSCAN type cursor [MATCH match] [COUNT count]](#xscan-type-cursor-match-match-count-count)
|
- [XSCAN type cursor [MATCH match] [COUNT count]](#xscan-type-cursor-match-match-count-count)
|
||||||
- [XHSCAN key cursor [MATCH match] [COUNT count]](#xhscan-key-cursor-match-match-count-count)
|
- [XHSCAN key cursor [MATCH match] [COUNT count]](#xhscan-key-cursor-match-match-count-count)
|
||||||
|
@ -909,6 +913,10 @@ ledis> HPERSIST not_exists_key
|
||||||
|
|
||||||
See [DUMP](#dump-key) for more information.
|
See [DUMP](#dump-key) for more information.
|
||||||
|
|
||||||
|
### HKEYEXISTS key
|
||||||
|
|
||||||
|
Check key exists for hash data, like [EXISTS key](#exists-key)
|
||||||
|
|
||||||
## List
|
## List
|
||||||
|
|
||||||
### BLPOP key [key ...] timeout
|
### BLPOP key [key ...] timeout
|
||||||
|
@ -1235,6 +1243,9 @@ ledis> LPERSIST b
|
||||||
|
|
||||||
See [DUMP](#dump-key) for more information.
|
See [DUMP](#dump-key) for more information.
|
||||||
|
|
||||||
|
### LKEYEXISTS key
|
||||||
|
|
||||||
|
Check key exists for list data, like [EXISTS key](#exists-key)
|
||||||
|
|
||||||
## Set
|
## Set
|
||||||
|
|
||||||
|
@ -1661,6 +1672,10 @@ ledis> STTL key
|
||||||
|
|
||||||
See [DUMP](#dump-key) for more information.
|
See [DUMP](#dump-key) for more information.
|
||||||
|
|
||||||
|
### SKEYEXISTS key
|
||||||
|
|
||||||
|
Check key exists for set data, like [EXISTS key](#exists-key)
|
||||||
|
|
||||||
## ZSet
|
## ZSet
|
||||||
|
|
||||||
### ZADD key score member [score member ...]
|
### ZADD key score member [score member ...]
|
||||||
|
@ -2350,6 +2365,10 @@ ledis> ZLEXCOUNT myzset - [c
|
||||||
|
|
||||||
See [DUMP](#dump-key) for more information.
|
See [DUMP](#dump-key) for more information.
|
||||||
|
|
||||||
|
### ZKEYEXISTS key
|
||||||
|
|
||||||
|
Check key exists for zset data, like [EXISTS key](#exists-key)
|
||||||
|
|
||||||
## Scan
|
## Scan
|
||||||
|
|
||||||
### XSCAN type cursor [MATCH match] [COUNT count]
|
### XSCAN type cursor [MATCH match] [COUNT count]
|
||||||
|
|
|
@ -502,7 +502,7 @@ func (db *DB) HPersist(key []byte) (int64, error) {
|
||||||
return n, err
|
return n, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (db *DB) XHExists(key []byte) (int64, error) {
|
func (db *DB) HKeyExists(key []byte) (int64, error) {
|
||||||
if err := checkKeySize(key); err != nil {
|
if err := checkKeySize(key); err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -79,10 +79,10 @@ func TestHashPersist(t *testing.T) {
|
||||||
t.Fatal(n)
|
t.Fatal(n)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
func TestXHashExists(t *testing.T) {
|
func TestHashKeyExists(t *testing.T) {
|
||||||
db := getTestDB()
|
db := getTestDB()
|
||||||
key := []byte("xhexists_test")
|
key := []byte("hkeyexists_test")
|
||||||
v, err := db.XHExists(key)
|
v, err := db.HKeyExists(key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err.Error())
|
t.Fatal(err.Error())
|
||||||
}
|
}
|
||||||
|
@ -94,7 +94,7 @@ func TestXHashExists(t *testing.T) {
|
||||||
t.Fatal(err.Error())
|
t.Fatal(err.Error())
|
||||||
}
|
}
|
||||||
|
|
||||||
v, err = db.XHExists(key)
|
v, err = db.HKeyExists(key)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal(err.Error())
|
t.Fatal(err.Error())
|
||||||
}
|
}
|
||||||
|
|
|
@ -498,7 +498,7 @@ func (db *DB) BRPop(keys [][]byte, timeout time.Duration) ([]interface{}, error)
|
||||||
return db.lblockPop(keys, listTailSeq, timeout)
|
return db.lblockPop(keys, listTailSeq, timeout)
|
||||||
}
|
}
|
||||||
|
|
||||||
func (db *DB) XLExists(key []byte) (int64, error) {
|
func (db *DB) LKeyExists(key []byte) (int64, error) {
|
||||||
if err := checkKeySize(key); err != nil {
|
if err := checkKeySize(key); err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -164,16 +164,16 @@ func TestLFlush(t *testing.T) {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestXLExists(t *testing.T) {
|
func TestLKeyExists(t *testing.T) {
|
||||||
db := getTestDB()
|
db := getTestDB()
|
||||||
key := []byte("xlexists_test")
|
key := []byte("lkeyexists_test")
|
||||||
if n, err := db.XLExists(key); err != nil {
|
if n, err := db.LKeyExists(key); err != nil {
|
||||||
t.Fatal(err.Error())
|
t.Fatal(err.Error())
|
||||||
} else if n != 0 {
|
} else if n != 0 {
|
||||||
t.Fatal("invalid value ", n)
|
t.Fatal("invalid value ", n)
|
||||||
}
|
}
|
||||||
db.LPush(key, []byte("hello"), []byte("world"))
|
db.LPush(key, []byte("hello"), []byte("world"))
|
||||||
if n, err := db.XLExists(key); err != nil {
|
if n, err := db.LKeyExists(key); err != nil {
|
||||||
t.Fatal(err.Error())
|
t.Fatal(err.Error())
|
||||||
} else if n != 1 {
|
} else if n != 1 {
|
||||||
t.Fatal("invalid value ", n)
|
t.Fatal("invalid value ", n)
|
||||||
|
|
|
@ -286,7 +286,7 @@ func (db *DB) SDiffStore(dstKey []byte, keys ...[]byte) (int64, error) {
|
||||||
return n, err
|
return n, err
|
||||||
}
|
}
|
||||||
|
|
||||||
func (db *DB) XSExists(key []byte) (int64, error) {
|
func (db *DB) SKeyExists(key []byte) (int64, error) {
|
||||||
if err := checkKeySize(key); err != nil {
|
if err := checkKeySize(key); err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -372,10 +372,10 @@ func TestSFlush(t *testing.T) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestXSExists(t *testing.T) {
|
func TestSKeyExists(t *testing.T) {
|
||||||
db := getTestDB()
|
db := getTestDB()
|
||||||
key := []byte("xsexists_test")
|
key := []byte("skeyexists_test")
|
||||||
if n, err := db.XSExists(key); err != nil {
|
if n, err := db.SKeyExists(key); err != nil {
|
||||||
t.Fatal(err.Error())
|
t.Fatal(err.Error())
|
||||||
} else if n != 0 {
|
} else if n != 0 {
|
||||||
t.Fatal("invalid value ", n)
|
t.Fatal("invalid value ", n)
|
||||||
|
@ -383,7 +383,7 @@ func TestXSExists(t *testing.T) {
|
||||||
|
|
||||||
db.SAdd(key, []byte("hello"), []byte("world"))
|
db.SAdd(key, []byte("hello"), []byte("world"))
|
||||||
|
|
||||||
if n, err := db.XSExists(key); err != nil {
|
if n, err := db.SKeyExists(key); err != nil {
|
||||||
t.Fatal(err.Error())
|
t.Fatal(err.Error())
|
||||||
} else if n != 1 {
|
} else if n != 1 {
|
||||||
t.Fatal("invalid value ", n)
|
t.Fatal("invalid value ", n)
|
||||||
|
|
|
@ -1016,7 +1016,7 @@ func (db *DB) ZLexCount(key []byte, min []byte, max []byte, rangeType uint8) (in
|
||||||
return n, nil
|
return n, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func (db *DB) XZExists(key []byte) (int64, error) {
|
func (db *DB) ZKeyExists(key []byte) (int64, error) {
|
||||||
if err := checkKeySize(key); err != nil {
|
if err := checkKeySize(key); err != nil {
|
||||||
return 0, err
|
return 0, err
|
||||||
}
|
}
|
||||||
|
|
|
@ -466,10 +466,10 @@ func TestZLex(t *testing.T) {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestXZExists(t *testing.T) {
|
func TestZKeyExists(t *testing.T) {
|
||||||
db := getTestDB()
|
db := getTestDB()
|
||||||
key := []byte("xzexists_test")
|
key := []byte("zkeyexists_test")
|
||||||
if n, err := db.XZExists(key); err != nil {
|
if n, err := db.ZKeyExists(key); err != nil {
|
||||||
t.Fatal(err.Error())
|
t.Fatal(err.Error())
|
||||||
} else if n != 0 {
|
} else if n != 0 {
|
||||||
t.Fatal("invalid value ", n)
|
t.Fatal("invalid value ", n)
|
||||||
|
@ -477,7 +477,7 @@ func TestXZExists(t *testing.T) {
|
||||||
|
|
||||||
db.ZAdd(key, ScorePair{0, []byte("a")}, ScorePair{0, []byte("b")})
|
db.ZAdd(key, ScorePair{0, []byte("a")}, ScorePair{0, []byte("b")})
|
||||||
|
|
||||||
if n, err := db.XZExists(key); err != nil {
|
if n, err := db.ZKeyExists(key); err != nil {
|
||||||
t.Fatal(err.Error())
|
t.Fatal(err.Error())
|
||||||
} else if n != 1 {
|
} else if n != 1 {
|
||||||
t.Fatal("invalid value ", n)
|
t.Fatal("invalid value ", n)
|
||||||
|
|
|
@ -292,12 +292,12 @@ func hpersistCommand(c *client) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func xhexistsCommand(c *client) error {
|
func hkeyexistsCommand(c *client) error {
|
||||||
args := c.args
|
args := c.args
|
||||||
if len(args) != 1 {
|
if len(args) != 1 {
|
||||||
return ErrCmdParams
|
return ErrCmdParams
|
||||||
}
|
}
|
||||||
if n, err := c.db.XHExists(args[0]); err != nil {
|
if n, err := c.db.HKeyExists(args[0]); err != nil {
|
||||||
return err
|
return err
|
||||||
} else {
|
} else {
|
||||||
c.resp.writeInteger(n)
|
c.resp.writeInteger(n)
|
||||||
|
@ -326,5 +326,5 @@ func init() {
|
||||||
register("hexpireat", hexpireAtCommand)
|
register("hexpireat", hexpireAtCommand)
|
||||||
register("httl", httlCommand)
|
register("httl", httlCommand)
|
||||||
register("hpersist", hpersistCommand)
|
register("hpersist", hpersistCommand)
|
||||||
register("xhexists", xhexistsCommand)
|
register("hkeyexists", hkeyexistsCommand)
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ func TestHash(t *testing.T) {
|
||||||
defer c.Close()
|
defer c.Close()
|
||||||
|
|
||||||
key := []byte("a")
|
key := []byte("a")
|
||||||
if n, err := ledis.Int(c.Do("xhexists", key)); err != nil {
|
if n, err := ledis.Int(c.Do("hkeyexists", key)); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
} else if n != 0 {
|
} else if n != 0 {
|
||||||
t.Fatal(n)
|
t.Fatal(n)
|
||||||
|
@ -23,7 +23,7 @@ func TestHash(t *testing.T) {
|
||||||
} else if n != 1 {
|
} else if n != 1 {
|
||||||
t.Fatal(n)
|
t.Fatal(n)
|
||||||
}
|
}
|
||||||
if n, err := ledis.Int(c.Do("xhexists", key)); err != nil {
|
if n, err := ledis.Int(c.Do("hkeyexists", key)); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
} else if n != 1 {
|
} else if n != 1 {
|
||||||
t.Fatal(n)
|
t.Fatal(n)
|
||||||
|
|
|
@ -277,12 +277,13 @@ func lParseBPopArgs(c *client) (keys [][]byte, timeout time.Duration, err error)
|
||||||
keys = args[0 : len(args)-1]
|
keys = args[0 : len(args)-1]
|
||||||
return
|
return
|
||||||
}
|
}
|
||||||
func xlexistsCommand(c *client) error {
|
|
||||||
|
func lkeyexistsCommand(c *client) error {
|
||||||
args := c.args
|
args := c.args
|
||||||
if len(args) != 1 {
|
if len(args) != 1 {
|
||||||
return ErrCmdParams
|
return ErrCmdParams
|
||||||
}
|
}
|
||||||
if n, err := c.db.XLExists(args[0]); err != nil {
|
if n, err := c.db.LKeyExists(args[0]); err != nil {
|
||||||
return err
|
return err
|
||||||
} else {
|
} else {
|
||||||
c.resp.writeInteger(n)
|
c.resp.writeInteger(n)
|
||||||
|
@ -309,5 +310,5 @@ func init() {
|
||||||
register("lexpireat", lexpireAtCommand)
|
register("lexpireat", lexpireAtCommand)
|
||||||
register("lttl", lttlCommand)
|
register("lttl", lttlCommand)
|
||||||
register("lpersist", lpersistCommand)
|
register("lpersist", lpersistCommand)
|
||||||
register("xlexists", xlexistsCommand)
|
register("lkeyexists", lkeyexistsCommand)
|
||||||
}
|
}
|
||||||
|
|
|
@ -58,7 +58,7 @@ func TestList(t *testing.T) {
|
||||||
defer c.Close()
|
defer c.Close()
|
||||||
|
|
||||||
key := []byte("a")
|
key := []byte("a")
|
||||||
if n, err := ledis.Int(c.Do("xlexists", key)); err != nil {
|
if n, err := ledis.Int(c.Do("lkeyexists", key)); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
} else if n != 0 {
|
} else if n != 0 {
|
||||||
t.Fatal(n)
|
t.Fatal(n)
|
||||||
|
@ -70,7 +70,7 @@ func TestList(t *testing.T) {
|
||||||
t.Fatal(n)
|
t.Fatal(n)
|
||||||
}
|
}
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("xlexists", key)); err != nil {
|
if n, err := ledis.Int(c.Do("lkeyexists", key)); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
} else if n != 1 {
|
} else if n != 1 {
|
||||||
t.Fatal(1)
|
t.Fatal(1)
|
||||||
|
|
|
@ -262,12 +262,12 @@ func spersistCommand(c *client) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func xsexistsCommand(c *client) error {
|
func skeyexistsCommand(c *client) error {
|
||||||
args := c.args
|
args := c.args
|
||||||
if len(args) != 1 {
|
if len(args) != 1 {
|
||||||
return ErrCmdParams
|
return ErrCmdParams
|
||||||
}
|
}
|
||||||
if n, err := c.db.XSExists(args[0]); err != nil {
|
if n, err := c.db.SKeyExists(args[0]); err != nil {
|
||||||
return err
|
return err
|
||||||
} else {
|
} else {
|
||||||
c.resp.writeInteger(n)
|
c.resp.writeInteger(n)
|
||||||
|
@ -287,12 +287,13 @@ func init() {
|
||||||
register("srem", sremCommand)
|
register("srem", sremCommand)
|
||||||
register("sunion", sunionCommand)
|
register("sunion", sunionCommand)
|
||||||
register("sunionstore", sunionstoreCommand)
|
register("sunionstore", sunionstoreCommand)
|
||||||
|
|
||||||
register("sclear", sclearCommand)
|
register("sclear", sclearCommand)
|
||||||
register("smclear", smclearCommand)
|
register("smclear", smclearCommand)
|
||||||
register("sexpire", sexpireCommand)
|
register("sexpire", sexpireCommand)
|
||||||
register("sexpireat", sexpireAtCommand)
|
register("sexpireat", sexpireAtCommand)
|
||||||
register("sttl", sttlCommand)
|
register("sttl", sttlCommand)
|
||||||
register("spersist", spersistCommand)
|
register("spersist", spersistCommand)
|
||||||
register("xsexists", xsexistsCommand)
|
register("skeyexists", skeyexistsCommand)
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -12,7 +12,7 @@ func TestSet(t *testing.T) {
|
||||||
key1 := "testdb_cmd_set_1"
|
key1 := "testdb_cmd_set_1"
|
||||||
key2 := "testdb_cmd_set_2"
|
key2 := "testdb_cmd_set_2"
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("xsexists", key1)); err != nil {
|
if n, err := ledis.Int(c.Do("skeyexists", key1)); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
} else if n != 0 {
|
} else if n != 0 {
|
||||||
t.Fatal(n)
|
t.Fatal(n)
|
||||||
|
@ -24,7 +24,7 @@ func TestSet(t *testing.T) {
|
||||||
t.Fatal(n)
|
t.Fatal(n)
|
||||||
}
|
}
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("xsexists", key1)); err != nil {
|
if n, err := ledis.Int(c.Do("skeyexists", key1)); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
} else if n != 1 {
|
} else if n != 1 {
|
||||||
t.Fatal(n)
|
t.Fatal(n)
|
||||||
|
|
|
@ -763,12 +763,12 @@ func zlexcountCommand(c *client) error {
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func xzexistsCommand(c *client) error {
|
func zkeyexistsCommand(c *client) error {
|
||||||
args := c.args
|
args := c.args
|
||||||
if len(args) != 1 {
|
if len(args) != 1 {
|
||||||
return ErrCmdParams
|
return ErrCmdParams
|
||||||
}
|
}
|
||||||
if n, err := c.db.XZExists(args[0]); err != nil {
|
if n, err := c.db.ZKeyExists(args[0]); err != nil {
|
||||||
return err
|
return err
|
||||||
} else {
|
} else {
|
||||||
c.resp.writeInteger(n)
|
c.resp.writeInteger(n)
|
||||||
|
@ -807,5 +807,5 @@ func init() {
|
||||||
register("zexpireat", zexpireAtCommand)
|
register("zexpireat", zexpireAtCommand)
|
||||||
register("zttl", zttlCommand)
|
register("zttl", zttlCommand)
|
||||||
register("zpersist", zpersistCommand)
|
register("zpersist", zpersistCommand)
|
||||||
register("xzexists", xzexistsCommand)
|
register("zkeyexists", zkeyexistsCommand)
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,7 +14,7 @@ func TestZSet(t *testing.T) {
|
||||||
|
|
||||||
key := []byte("myzset")
|
key := []byte("myzset")
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("xzexists", key)); err != nil {
|
if n, err := ledis.Int(c.Do("zkeyexists", key)); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
} else if n != 0 {
|
} else if n != 0 {
|
||||||
t.Fatal(n)
|
t.Fatal(n)
|
||||||
|
@ -26,7 +26,7 @@ func TestZSet(t *testing.T) {
|
||||||
t.Fatal(n)
|
t.Fatal(n)
|
||||||
}
|
}
|
||||||
|
|
||||||
if n, err := ledis.Int(c.Do("xzexists", key)); err != nil {
|
if n, err := ledis.Int(c.Do("zkeyexists", key)); err != nil {
|
||||||
t.Fatal(err)
|
t.Fatal(err)
|
||||||
} else if n != 1 {
|
} else if n != 1 {
|
||||||
t.Fatal(n)
|
t.Fatal(n)
|
||||||
|
|
Loading…
Reference in New Issue