func benchRedisClient() *redis.Client { client := redis.NewClient(&redis.Options{ Addr: ":6379", }) if err := client.FlushDb().Err(); err != nil { panic(err) } return client }
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 connectTo(port string) (*redis.Client, error) { client := redis.NewClient(&redis.Options{ Addr: ":" + port, }) err := eventually(func() error { return client.Ping().Err() }, 10*time.Second) if err != nil { return nil, err } return client, nil }
"net" "sync" "time" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "github.com/shunfei/redis" ) var _ = Describe("PubSub", func() { var client *redis.Client readTimeout := 3 * time.Second BeforeEach(func() { client = redis.NewClient(&redis.Options{ Addr: redisAddr, ReadTimeout: readTimeout, }) Expect(client.FlushDb().Err()).NotTo(HaveOccurred()) }) AfterEach(func() { Expect(client.Close()).NotTo(HaveOccurred()) }) It("should support pattern matching", func() { pubsub, err := client.PSubscribe("mychannel*") Expect(err).NotTo(HaveOccurred()) defer pubsub.Close() n, err := client.Publish("mychannel1", "hello").Result() Expect(err).NotTo(HaveOccurred())
func init() { client = redis.NewClient(&redis.Options{ Addr: ":6379", }) client.FlushDb() }
"bytes" "strconv" "sync" "testing" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "github.com/shunfei/redis" ) var _ = Describe("Command", func() { var client *redis.Client BeforeEach(func() { client = redis.NewClient(&redis.Options{ Addr: redisAddr, }) }) AfterEach(func() { Expect(client.FlushDb().Err()).NotTo(HaveOccurred()) Expect(client.Close()).NotTo(HaveOccurred()) }) It("should implement Stringer", func() { set := client.Set("foo", "bar", 0) Expect(set.String()).To(Equal("SET foo bar: OK")) get := client.Get("foo") Expect(get.String()).To(Equal("GET foo: bar")) })
func startCluster(scenario *clusterScenario) error { // Start processes and collect node ids for pos, port := range scenario.ports { process, err := startRedis(port, "--cluster-enabled", "yes") if err != nil { return err } client := redis.NewClient(&redis.Options{Addr: "127.0.0.1:" + port}) info, err := client.ClusterNodes().Result() if err != nil { return err } scenario.processes[port] = process scenario.clients[port] = client scenario.nodeIds[pos] = info[:40] } // Meet cluster nodes for _, client := range scenario.clients { err := client.ClusterMeet("127.0.0.1", scenario.ports[0]).Err() if err != nil { return err } } // Bootstrap masters slots := []int{0, 5000, 10000, 16384} for pos, master := range scenario.masters() { err := master.ClusterAddSlotsRange(slots[pos], slots[pos+1]-1).Err() if err != nil { return err } } // Bootstrap slaves for idx, slave := range scenario.slaves() { masterId := scenario.nodeIds[idx] // Wait until master is available err := eventually(func() error { s := slave.ClusterNodes().Val() wanted := masterId if !strings.Contains(s, wanted) { return fmt.Errorf("%q does not contain %q", s, wanted) } return nil }, 10*time.Second) if err != nil { return err } err = slave.ClusterReplicate(masterId).Err() if err != nil { return err } } // Wait until all nodes have consistent info for _, client := range scenario.clients { err := eventually(func() error { res, err := client.ClusterSlots().Result() if err != nil { return err } wanted := []redis.ClusterSlotInfo{ {0, 4999, []string{"127.0.0.1:8220", "127.0.0.1:8223"}}, {5000, 9999, []string{"127.0.0.1:8221", "127.0.0.1:8224"}}, {10000, 16383, []string{"127.0.0.1:8222", "127.0.0.1:8225"}}, } loop: for _, info := range res { for _, info2 := range wanted { if reflect.DeepEqual(info, info2) { continue loop } } return fmt.Errorf("cluster did not reach consistent state (%v)", res) } return nil }, 10*time.Second) if err != nil { return err } } return nil }
wg := &sync.WaitGroup{} for i := 0; i < n; i++ { wg.Add(1) go func() { defer GinkgoRecover() defer wg.Done() cb() }() } wg.Wait() } BeforeEach(func() { client = redis.NewClient(&redis.Options{ Addr: redisAddr, PoolSize: 10, }) }) AfterEach(func() { Expect(client.Close()).NotTo(HaveOccurred()) }) It("should respect max size", func() { perform(1000, func() { val, err := client.Ping().Result() Expect(err).NotTo(HaveOccurred()) Expect(val).To(Equal("PONG")) }) pool := client.Pool()
"bytes" "net" "testing" "time" . "github.com/onsi/ginkgo" . "github.com/onsi/gomega" "github.com/shunfei/redis" ) var _ = Describe("Client", func() { var client *redis.Client BeforeEach(func() { client = redis.NewClient(&redis.Options{ Addr: redisAddr, }) }) AfterEach(func() { client.Close() }) It("should Stringer", func() { Expect(client.String()).To(Equal("Redis<:6380 db:0>")) }) It("should ping", func() { val, err := client.Ping().Result() Expect(err).NotTo(HaveOccurred()) Expect(val).To(Equal("PONG"))