Find file History
Pull request Compare This branch is 3 commits behind simonz05:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Failed to load latest commit information.


godis - a Redis client for Go. It supports all commands and features such as transactions and pubsub.

  1. Package docs
  2. Source code

Install godis

godis is available at Get it by running.

$ go get

Importing godis to your code can be done with import "". Thats it!

Use godis

Checking out the code include a few examples. Here is the code for the example/strings.go.

package main

import (

func main() {
    // new client on default port 6379, select db 0 and use no password
    c := redis.New("", 0, "")

    // set the key "foo" to "Hello Redis"
    if err := c.Set("foo", "Hello Redis"); err != nil {
        fmt.Fprintln(os.Stderr, err)

    // retrieve the value of "foo". Returns an Elem obj
    elem, _ := c.Get("foo")

    // convert the obj to a string and print it 
    fmt.Println("foo:", elem.String())

Build the examples.

$ make 

To run it we type.

$ ./string
foo: Hello Redis

In case your redis server isn't running the output looks like this.

$ ./string 
Connection error


PipeClient supports MULTI/EXEC operations as well as buffered command execution.

Create a PipeClient. Subsequent commands will be buffered. PipeClient acts as a regular client, but implements a few extra commands; Multi, Exec, Unwatch, Watch.

c := godis.NewPipeClient("tcp:", 0, "")

Calling Multi() wraps subsequent commands inside MULTI .. EXEC.


Commands are still issued as usual, but will return an empty *Reply.

c.Set("foo", "bar")

To execute the buffered commands we call c.Exec(). Exec handles both MULTI/EXEC pipelines and simply buffered piplines. It returns a slice of all the *Reply objects for every command we executed.

replies := c.Exec()

See example/transaction.go for a full example.


  • Add tests server commands.
  • Allow one or more keys to be manipulated with SADD, ZADD, SET, HDEL, LPUSH, RPUSH, SREM, ZREM and ZADD.


The work on this client started as I was hacking around on Michael Hoisie's original redis client for Go. Also the recent work done by Frank Müller on his client gave me some pointers how to better handle return values.