Skip to content

Commit b6646df

Browse files
committed
Added Lset
1 parent 79b3d02 commit b6646df

File tree

3 files changed

+29
-9
lines changed

3 files changed

+29
-9
lines changed

redis-dump.go

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,6 @@ func dump_db(port int, db int, output io.Writer) {
2828
return
2929
}
3030

31-
3231
for _, key := range (keys) {
3332
typ, _ := client.Type(key)
3433

redis.go

Lines changed: 16 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -73,16 +73,16 @@ func readResponse(reader *bufio.Reader) (interface{}, os.Error) {
7373

7474
//read until the first non-whitespace line
7575
for {
76-
line, err = reader.ReadString('\n')
77-
if len(line) == 0 || err != nil {
76+
line, err = reader.ReadString('\n')
77+
if len(line) == 0 || err != nil {
7878
return nil, err
79-
}
80-
line = strings.TrimSpace(line)
79+
}
80+
line = strings.TrimSpace(line)
8181
if len(line) > 0 {
8282
break
8383
}
8484
}
85-
85+
8686
if line[0] == '+' {
8787
return strings.TrimSpace(line[1:]), nil
8888
}
@@ -207,7 +207,7 @@ func (client *Client) Get(name string) ([]byte, os.Error) {
207207
res, _ := client.sendCommand(cmd)
208208

209209
if res == nil {
210-
return nil, RedisError("Key `"+name+"` does not exist")
210+
return nil, RedisError("Key `" + name + "` does not exist")
211211
}
212212

213213
data := res.([]byte)
@@ -303,6 +303,16 @@ func (client *Client) Lindex(name string, index int) ([]byte, os.Error) {
303303
return res.([]byte), nil
304304
}
305305

306+
func (client *Client) Lset(name string, index int, value []byte) os.Error {
307+
cmd := fmt.Sprintf("LSET %s %d %d\r\n%s\r\n", name, index, len(value), value)
308+
_, err := client.sendCommand(cmd)
309+
if err != nil {
310+
return err
311+
}
312+
313+
return nil
314+
}
315+
306316
func (client *Client) Rpush(name string, value []byte) os.Error {
307317
cmd := fmt.Sprintf("RPUSH %s %d\r\n%s\r\n", name, len(value), value)
308318
_, err := client.sendCommand(cmd)

redis_test.go

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@ var client Client
2121
func init() {
2222
runtime.GOMAXPROCS(2)
2323
client.Addr = "127.0.0.1:7379"
24+
client.Db = 13
2425
}
2526

2627
func TestBasic(t *testing.T) {
@@ -134,8 +135,6 @@ func TestList(t *testing.T) {
134135
client.Rpush("l", strings.Bytes(v))
135136
}
136137

137-
//var members [][]byte
138-
139138
if l, err := client.Llen("l"); err != nil || l != 5 {
140139
t.Fatal("Llen failed", err.String())
141140
}
@@ -146,6 +145,18 @@ func TestList(t *testing.T) {
146145
}
147146
}
148147

148+
for i := 0; i < len(vals); i++ {
149+
if err := client.Lset("l", i, strings.Bytes("a")); err != nil {
150+
t.Fatal("Lset failed", err.String())
151+
}
152+
}
153+
154+
for i := 0; i < len(vals); i++ {
155+
if val, err := client.Lindex("l", i); err != nil || string(val) != "a" {
156+
t.Fatal("Lindex failed", err.String())
157+
}
158+
}
159+
149160
client.Del("l")
150161

151162
}

0 commit comments

Comments
 (0)