gosexy / redis

Redis client for Go that maps the full redis command list into equivalent Go functions.
MIT License
167 stars 44 forks source link

HDEL #8

Closed forrestsun closed 11 years ago

forrestsun commented 11 years ago

Hi, when i use gosexy/redis HDEL command to delete filed but data exits. my code:

package main

import (
"fmt"
"log"
"menteslibres.net/gosexy/redis"
)

var host = "127.0.0.1"
var port = uint(6379)
var client *redis.Client

func main() {
var err error

client = redis.New()

err = client.Connect(host, port)

if err != nil {
    log.Fatalf("Connect failed: %s\n", err.Error())
    return
}

log.Println("Connected to redis-server.")

log.Printf("Sending Hdel...\n")
/*if use d, err := client.HDel("users", "9:user_name") error:Could not Hdel: ERR wrong number of arguments for 'hdel' command
     if use d, err := client.HDel("users", "9:user_name", "9:password") no error,but data exit
     when i use redis-cli command hdel users 9:user_name 9:passord is ok
  */
   d, err := client.HDel("users", "9:user_name", "9:password")

    if err != nil {
    log.Fatalf("Could not Hdel: %s\n", err.Error())
    return
}

log.Printf(fmt.Sprintf("Received %d!\n", d))

client.Quit()

}

thanks

forrestsun commented 11 years ago

org code:

func (self *Client) HDel(key string, fields ...string) (int64, error) {
var ret int64
args := make([][]byte, len(fields)+1)
args[0] = []byte("HDEL")  
   //where key?
for i, _ := range fields {
    args[1+i] = to.Bytes(fields[i])
}

err := self.command(&ret, args...)

return ret, err
}

fix:

func (self *Client) HDel(key string, fields ...string) (int64, error) {
var ret int64
args := make([][]byte, len(fields)+2)
args[0] = []byte("HDEL")
args[1] = []byte(key)
for i, _ := range fields {
    args[2+i] = to.Bytes(fields[i])
}

err := self.command(&ret, args...)

return ret, err
}
xiam commented 11 years ago

Thanks for the fix!