Categorygithub.com/go-redis/redis
modulepackage
5.2.9+incompatible
Repository: https://github.com/go-redis/redis.git
Documentation: pkg.go.dev

# README

Redis client for Golang Build Status

Supports:

API docs: https://godoc.org/gopkg.in/redis.v5. Examples: https://godoc.org/gopkg.in/redis.v5#pkg-examples.

Installation

Install:

go get gopkg.in/redis.v5

Import:

import "gopkg.in/redis.v5"

Quickstart

func ExampleNewClient() {
	client := redis.NewClient(&redis.Options{
		Addr:     "localhost:6379",
		Password: "", // no password set
		DB:       0,  // use default DB
	})

	pong, err := client.Ping().Result()
	fmt.Println(pong, err)
	// Output: PONG <nil>
}

func ExampleClient() {
	err := client.Set("key", "value", 0).Err()
	if err != nil {
		panic(err)
	}

	val, err := client.Get("key").Result()
	if err != nil {
		panic(err)
	}
	fmt.Println("key", val)

	val2, err := client.Get("key2").Result()
	if err == redis.Nil {
		fmt.Println("key2 does not exists")
	} else if err != nil {
		panic(err)
	} else {
		fmt.Println("key2", val2)
	}
	// Output: key value
	// key2 does not exists
}

Howto

Please go through examples to get an idea how to use this package.

Look and feel

Some corner cases:

SET key value EX 10 NX
set, err := client.SetNX("key", "value", 10*time.Second).Result()

SORT list LIMIT 0 2 ASC
vals, err := client.Sort("list", redis.Sort{Offset: 0, Count: 2, Order: "ASC"}).Result()

ZRANGEBYSCORE zset -inf +inf WITHSCORES LIMIT 0 2
vals, err := client.ZRangeByScoreWithScores("zset", redis.ZRangeBy{
    Min: "-inf",
    Max: "+inf",
    Offset: 0,
    Count: 2,
}).Result()

ZINTERSTORE out 2 zset1 zset2 WEIGHTS 2 3 AGGREGATE SUM
vals, err := client.ZInterStore("out", redis.ZStore{Weights: []int64{2, 3}}, "zset1", "zset2").Result()

EVAL "return {KEYS[1],ARGV[1]}" 1 "key" "hello"
vals, err := client.Eval("return {KEYS[1],ARGV[1]}", []string{"key"}, []string{"hello"}).Result()

Benchmark

go-redis vs redigo:

BenchmarkSetGoRedis10Conns64Bytes-4 	  200000	      7621 ns/op	     210 B/op	       6 allocs/op
BenchmarkSetGoRedis100Conns64Bytes-4	  200000	      7554 ns/op	     210 B/op	       6 allocs/op
BenchmarkSetGoRedis10Conns1KB-4     	  200000	      7697 ns/op	     210 B/op	       6 allocs/op
BenchmarkSetGoRedis100Conns1KB-4    	  200000	      7688 ns/op	     210 B/op	       6 allocs/op
BenchmarkSetGoRedis10Conns10KB-4    	  200000	      9214 ns/op	     210 B/op	       6 allocs/op
BenchmarkSetGoRedis100Conns10KB-4   	  200000	      9181 ns/op	     210 B/op	       6 allocs/op
BenchmarkSetGoRedis10Conns1MB-4     	    2000	    583242 ns/op	    2337 B/op	       6 allocs/op
BenchmarkSetGoRedis100Conns1MB-4    	    2000	    583089 ns/op	    2338 B/op	       6 allocs/op
BenchmarkSetRedigo10Conns64Bytes-4  	  200000	      7576 ns/op	     208 B/op	       7 allocs/op
BenchmarkSetRedigo100Conns64Bytes-4 	  200000	      7782 ns/op	     208 B/op	       7 allocs/op
BenchmarkSetRedigo10Conns1KB-4      	  200000	      7958 ns/op	     208 B/op	       7 allocs/op
BenchmarkSetRedigo100Conns1KB-4     	  200000	      7725 ns/op	     208 B/op	       7 allocs/op
BenchmarkSetRedigo10Conns10KB-4     	  100000	     18442 ns/op	     208 B/op	       7 allocs/op
BenchmarkSetRedigo100Conns10KB-4    	  100000	     18818 ns/op	     208 B/op	       7 allocs/op
BenchmarkSetRedigo10Conns1MB-4      	    2000	    668829 ns/op	     226 B/op	       7 allocs/op
BenchmarkSetRedigo100Conns1MB-4     	    2000	    679542 ns/op	     226 B/op	       7 allocs/op

Redis Cluster:

BenchmarkRedisPing-4                	  200000	      6983 ns/op	     116 B/op	       4 allocs/op
BenchmarkRedisClusterPing-4         	  100000	     11535 ns/op	     117 B/op	       4 allocs/op

Shameless plug

Check my PostgreSQL client for Go.

# Functions

No description provided by the author
NewBoolResult returns a BoolCmd initalised with val and err for testing.
No description provided by the author
NewBoolSliceResult returns a BoolSliceCmd initalised with val and err for testing.
NewClient returns a client to the Redis Server specified by Options.
NewClusterClient returns a Redis Cluster client as described in http://redis.io/topics/cluster-spec.
No description provided by the author
NewClusterSlotsCmdResult returns a ClusterSlotsCmd initalised with val and err for testing.
No description provided by the author
NewCmdResult returns a Cmd initalised with val and err for testing.
No description provided by the author
NewCommandsInfoCmdResult returns a CommandsInfoCmd initalised with val and err for testing.
No description provided by the author
NewDurationResult returns a DurationCmd initalised with val and err for testing.
NewFailoverClient returns a Redis client that uses Redis Sentinel for automatic failover.
No description provided by the author
NewFloatResult returns a FloatCmd initalised with val and err for testing.
No description provided by the author
NewGeoLocationCmdResult returns a GeoLocationCmd initalised with val and err for testing.
No description provided by the author
No description provided by the author
NewIntResult returns an IntCmd initalised with val and err for testing.
No description provided by the author
No description provided by the author
NewScanCmdResult returns a ScanCmd initalised with val and err for testing.
No description provided by the author
No description provided by the author
NewSliceResult returns a SliceCmd initalised with val and err for testing.
No description provided by the author
NewStatusResult returns a StatusCmd initalised with val and err for testing.
No description provided by the author
No description provided by the author
NewStringIntMapCmdResult returns a StringIntMapCmd initalised with val and err for testing.
NewStringResult returns a StringCmd initalised with val and err for testing.
No description provided by the author
NewStringSliceResult returns a StringSliceCmd initalised with val and err for testing.
No description provided by the author
NewStringStringMapResult returns a StringStringMapCmd initalised with val and err for testing.
No description provided by the author
No description provided by the author
NewZSliceCmdResult returns a ZSliceCmd initalised with val and err for testing.
ParseURL parses a redis URL into options that can be used to connect to redis.
No description provided by the author

# Constants

Redis nil reply, .e.g.
Redis transaction failed.

# Structs

No description provided by the author
No description provided by the author
No description provided by the author
Client is a Redis client representing a pool of zero or more underlying connections.
ClusterClient is a Redis Cluster client representing a pool of zero or more underlying connections.
No description provided by the author
ClusterOptions are used to configure a cluster client and should be passed to NewClusterClient.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
FailoverOptions are used to configure a failover client and should be passed to NewFailoverClient.
No description provided by the author
GeoLocation is used with GeoAdd to add geospatial location.
No description provided by the author
No description provided by the author
No description provided by the author
GeoRadiusQuery is used with GeoRadius to query geospatial index.
No description provided by the author
Message received as result of a PUBLISH command issued by another client.
No description provided by the author
Pipeline implements pipelining as described in http://redis.io/topics/pipelining.
Pong received as result of a PING command issued by another client.
PoolStats contains pool state information and accumulated stats.
PubSub implements Pub/Sub commands as described in http://redis.io/topics/pubsub.
Ring is a Redis client that uses constistent hashing to distribute keys across multiple Redis servers (shards).
RingOptions are used to configure a ring client and should be passed to NewRing.
No description provided by the author
ScanIterator is used to incrementally iterate over a collection of elements.
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
No description provided by the author
Message received after a successful subscription to channel.
No description provided by the author
Tx implements Redis transactions as described in http://redis.io/topics/transactions.
Z represents sorted set member.
No description provided by the author
No description provided by the author
ZStore is used as an arg to ZInterStore and ZUnionStore.

# Interfaces

No description provided by the author
No description provided by the author