-
Notifications
You must be signed in to change notification settings - Fork 1
/
wredis_lists.go
49 lines (45 loc) · 1.4 KB
/
wredis_lists.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
package wredis
import (
"github.com/garyburd/redigo/redis"
)
// LPush inserts the provided item(s) at the head of the list stored at key. For
// more information, see http://redis.io/commands/lpush.
func (w *Wredis) LPush(key string, items ...string) (int64, error) {
if key == "" {
return int64Error("key cannot be empty")
}
if len(items) == 0 {
return int64Error("must provide at least one item")
}
for _, i := range items {
if i == "" {
return int64Error("an item cannot be empty")
}
}
return w.ExecInt64(func(conn redis.Conn) (int64, error) {
args := redis.Args{}.Add(key).AddFlat(items)
return redis.Int64(conn.Do("LPUSH", args...))
})
}
// RPop removes and returns the last element of the list stored at key. For more
// information, see http://redis.io/commands/rpop.
func (w *Wredis) RPop(key string) (string, error) {
if key == "" {
return stringError("key cannot be empty")
}
return w.ExecString(func(conn redis.Conn) (string, error) {
args := redis.Args{}.Add(key)
return redis.String(conn.Do("RPOP", args...))
})
}
// LLen returns the length of the list stored at key. For more information, see
// http://redis.io/commands/llen.
func (w *Wredis) LLen(key string) (int64, error) {
if key == "" {
return int64Error("key cannot be empty")
}
return w.ExecInt64(func(conn redis.Conn) (int64, error) {
args := redis.Args{}.Add(key)
return redis.Int64(conn.Do("LLEN", args...))
})
}