modulepackage
3.6.4+incompatible
Repository: https://github.com/go-redis/redis.git
Documentation: pkg.go.dev
# README
Redis client for Golang 
Supports:
- Redis 3 commands except QUIT, MONITOR, SLOWLOG and SYNC.
- Pub/Sub.
- Transactions.
- Pipelining.
- Scripting.
- Timeouts.
- Redis Sentinel.
- Redis Cluster.
- Ring.
- Cache friendly.
- Rate limiting.
- Distributed Locks.
API docs: http://godoc.org/gopkg.in/redis.v3. Examples: http://godoc.org/gopkg.in/redis.v3#pkg-examples.
Installation
Install:
go get gopkg.in/redis.v3
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.ZRangeByScore{
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
No description provided by the author
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
No description provided by the author
No description provided by the author
NewFailoverClient returns a Redis client that uses Redis Sentinel for automatic failover.
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
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
# Variables
No description provided by the author
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.
ClusterOptions are used to configure a cluster client and should be passed to NewClusterClient.
ClusterPipeline is not thread-safe.
TODO: rename to ClusterSlotsCmd.
TODO: rename to ClusterSlot.
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
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.
Multi implements Redis transactions as described in http://redis.io/topics/transactions.
No description provided by the author
Pipeline implements pipelining as described in http://redis.io/topics/pipelining.
Message matching a pattern-matching subscription received as result of a PUBLISH command issued by another client.
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.
RingPipeline creates a new pipeline which is able to execute commands against multiple shards.
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
No description provided by the author
Message received after a successful subscription to channel.
Z represents sorted set member.
TODO: Rename to something more generic in v4.
No description provided by the author
ZStore is used as an arg to ZInterStore and ZUnionStore.
# Interfaces
No description provided by the author