Commit Graph

260 Commits

Author SHA1 Message Date
Vladimir Mihailenco 09eb108738 Allow passing context where possible 2019-06-04 13:30:47 +03:00
Vladimir Mihailenco 84422d7ae7 Speedup WithContext 2019-05-31 17:31:54 +03:00
Vladimir Mihailenco 8476dfea4a Replace Wrap* with hooks that support context 2019-05-31 16:36:57 +03:00
Kirill Motkov eca4e5d04c Some code improvements
* Rewrite if-else chain as a switch.
* Rewrite switch statement with only one case as if.
* Remove always true condition.
* Simplify some functions.
2019-04-17 16:14:30 +03:00
Vladimir Mihailenco b706478fdc Fix MinIdleConns and MaxConnAge 2019-03-25 13:02:31 +02:00
Vladimir Mihailenco 9409a4baf0 Remove limiter copy 2018-12-13 10:31:02 +02:00
Vladimir Mihailenco 1d1269e0cf
Merge pull request #884 from go-redis/feature/limiter
Add Limiter interface
2018-11-29 11:21:03 +02:00
Vladimir Mihailenco 5d8c5c5c37 Add Limiter interface 2018-11-29 09:52:49 +02:00
Rob McColl a47799f02c
doc: add info about Receive call after Subscribe 2018-11-27 16:13:30 -05:00
Vladimir Mihailenco fa76dd0e87 Add releaseConnStrict 2018-10-14 11:27:34 +03:00
Andrii Kushch dc24d98c71 remove redundant expression 2018-10-11 12:53:40 +02:00
Vladimir Mihailenco 40dbb03d62 Set cmd timeout when Block >= 0 2018-09-13 09:28:01 +03:00
Vladimir Mihailenco 0197108027 Use bufio.Writer 2018-08-17 14:14:02 +03:00
Vladimir Mihailenco 5146fb0c57 Cleanup buffers manipulation 2018-08-15 11:53:15 +03:00
Vladimir Mihailenco 7c26d1ceb6 Pass cn.Rd where possible 2018-08-15 09:38:58 +03:00
Vladimir Mihailenco d5fc79d4ee Add Client.Do 2018-08-12 11:20:24 +03:00
Vladimir Mihailenco 651e9fef1d Add MaxConnAge 2018-08-12 10:25:16 +03:00
Vladimir Mihailenco ea9da7c2e8 Rework ReceiveMessage 2018-07-23 17:10:58 +03:00
Vladimir Mihailenco b92dacbfa7 Conn timeout should be higher than read timeout 2018-07-22 08:49:48 +03:00
Vladimir Mihailenco faf5666fbd Cleanup pool 2018-05-29 17:29:47 +03:00
Vladimir Mihailenco 20363d149b Fix WithContext followed by WrapProcess 2018-03-13 15:51:38 +02:00
Vladimir Mihailenco d6cb688ea7 Cleanup context implementation 2018-03-07 13:50:14 +02:00
Vladimir Mihailenco 3a38e90858 Require Go 1.7+ and use context.Context 2018-03-07 13:43:52 +02:00
Vladimir Mihailenco f13fc5381c Extract commands info cache 2018-03-07 12:09:45 +02:00
Vladimir Mihailenco 56dea1f39a Fix proto.RedisError in slices 2018-02-22 14:24:27 +02:00
yifei.huang 8b4fa6d443 Add WrapProcessPipeline 2018-01-30 16:47:29 +02:00
Veselkov Konstantin ea4d6c3490 golint warnings are removed 2018-01-24 22:38:47 +04:00
Vladimir Mihailenco 624096af5e Mention redis.Nil 2017-12-27 13:29:46 +02:00
Vladimir Mihailenco 7cb146a31b Increase read timeout for blocking commands and don't retry such commands 2017-09-29 16:12:43 +03:00
Vladimir Mihailenco f9307ab2fe Add TxPipeline to Cmdable 2017-09-25 11:48:44 +03:00
Vladimir Mihailenco 09176ef4fa PoolStats is an alias for pool.Stats 2017-09-11 10:12:00 +03:00
Vladimir Mihailenco 5294b5dae1 Add PoolStats.StaleConns and enable logging by default 2017-09-11 09:10:17 +03:00
Vladimir Mihailenco dbd2c99ba9 Rework pipeline retrying 2017-09-01 14:56:00 +03:00
wenjun.yan 4e1d2a01db Make readOnly a private field so that only cluster client can use it 2017-07-25 10:35:41 +09:00
Vladimir Mihailenco 3ddda73a05 Close connections to unused nodes 2017-07-11 11:19:40 +03:00
Vladimir Mihailenco 6060f097e1 Add PubSub support to Cluster client 2017-07-09 10:07:20 +03:00
Vladimir Mihailenco 167410bcd7 Improve comment 2017-06-17 12:43:19 +03:00
Vladimir Mihailenco ee42c3d5d3 Merge pull request #571 from go-redis/fix/on-connect
Fix/on connect
2017-05-26 14:56:40 +03:00
Vladimir Mihailenco 4a3a300665 Add Options.OnConnect 2017-05-26 14:56:18 +03:00
Jonathan Chan 406e882c43 Added backoff retry 2017-05-26 14:33:34 +03:00
Vladimir Mihailenco 7e8890b644 Embed Cmdable into StatefulCmdable 2017-05-25 13:38:04 +03:00
Felipe Cavalcanti 7379f211a4 Client TxPipeline method should also return a Pipeliner 2017-05-03 10:48:12 -03:00
Felipe Cavalcanti eeb4d09198 rename Pipelineable to Pipeliner 2017-05-02 12:00:53 -03:00
Felipe Cavalcanti 6fca4d5ad0 pipeline now has its own interface "Pipelineable" 2017-05-01 12:42:58 -03:00
Vladimir Mihailenco 9ebd89772a Rework PubSub conn management 2017-04-24 13:41:03 +03:00
Vladimir Mihailenco 7646d48e29 Initialize PubSub connection 2017-04-18 13:12:38 +03:00
Vladimir Mihailenco 6499563e07 PubSub conns don't share connection pool limit 2017-04-17 16:59:56 +03:00
shaoguang d910e51498 pipelineReadCmds always retry=true, maybe bug 2017-04-12 20:11:20 +08:00
Vladimir Mihailenco 8d52a95269 Simplify PubSub API 2017-04-11 16:53:55 +03:00
Vladimir Mihailenco 2cf5af9928 Merge branch 'v5' 2017-03-20 12:23:42 +02:00
Vladimir Mihailenco ab1e8de9ea Add ability to read client options 2017-03-20 12:15:21 +02:00
Vladimir Mihailenco 8040d63c4f Remove gopkg.in 2017-02-19 09:49:21 +02:00
Vladimir Mihailenco ce4fd8b677 Fix ReceiveMessage to work without any subscriptions. 2017-02-08 14:15:32 +02:00
Sukharev Maxim b9ab636be4 Context methods only for go1.7+ 2017-01-16 09:57:49 +07:00
Sukharev Maxim 2f247ebe83 Clone and WithContext #471 2017-01-11 10:32:10 +07:00
Vladimir Mihailenco 9556378547 Fix Client process instrumentation. 2016-12-30 12:58:04 +02:00
Vladimir Mihailenco c939d2283e Allow creating PubSub without channels. 2016-12-22 13:26:00 +02:00
Vladimir Mihailenco 4ba635e15f Add func doc. 2016-12-16 14:19:53 +02:00
Vladimir Mihailenco 152cc1ee34 Merge pull request #444 from go-redis/feature/tx-pipeline
Add TxPipeline.
2016-12-16 11:40:46 +02:00
Vladimir Mihailenco 865d501d07 Add TxPipeline. 2016-12-16 11:25:58 +02:00
Vladimir Mihailenco 34122bffa8 Check that clients implement scripter interface. 2016-12-14 12:12:50 +02:00
Vladimir Mihailenco b4efc45f1c Set read/write timeouts more consistently. 2016-12-03 17:30:13 +02:00
Vladimir Mihailenco 82f21639bf Fix WrapProcess for Ring and Cluster. Add better example. 2016-11-30 13:00:53 +02:00
Vladimir Mihailenco d4a3b1f282 Add instrumentation example. 2016-11-26 10:33:06 +02:00
Vladimir Mihailenco 8558a92fa4 Retry multiple commands more conservatively. 2016-10-13 13:56:24 +03:00
Dimitrij Denissenko e6d4f5bd38 Remove static import 2016-10-12 13:11:09 +01:00
Vladimir Mihailenco 2c5b239ecb Remove internal errors package that clashes with std lib. 2016-10-09 11:44:31 +00:00
Vladimir Mihailenco f5245efa73 Prepare v5 release. 2016-10-09 10:56:53 +00:00
yyoshiki41 84ae986659 Remove Addr field from clusterNode 2016-10-06 05:24:28 +09:00
Vladimir Mihailenco e57ac63b6e Simplify resubscribing in PubSub. 2016-09-29 12:33:47 +00:00
Vladimir Mihailenco 0b706418d9 Add Pipeline to Cmdable. 2016-09-27 09:29:21 +00:00
Vladimir Mihailenco 4210c090b1 Move Publish channel to cmdable. Remove method that was deprecated in v3. 2016-07-21 13:04:40 +00:00
Dimitrij Denissenko 7d856c5595 Make proto/parser an internal package 2016-07-02 13:52:10 +01:00
Vladimir Mihailenco 4761c24218 Add ForEachMaster API. 2016-06-17 12:09:38 +00:00
Vladimir Mihailenco 079b7ce393 Rework Options initialisation. 2016-06-05 11:10:30 +00:00
Vladimir Mihailenco ac162eb843 Move Select to stateful commands and make it available only via Pipeline and Tx. 2016-06-05 09:45:39 +00:00
Vladimir Mihailenco e9233d8d17 Cleanup loggers. 2016-06-05 08:05:50 +00:00
Joris Minjat 487feebef1 Add latency based routing to Redis Cluster client. 2016-05-23 12:49:55 +03:00
Dimitrij Denissenko 7456a0e473 Add scan iterator. 2016-04-26 15:01:49 +03:00
Vladimir Mihailenco 31abb18d9a Move logger to internal package. 2016-04-09 14:52:01 +03:00
Vladimir Mihailenco 38d30a4bab Use redis.v4 that is in alpha/beta state. 2016-04-09 13:27:16 +03:00
Vladimir Mihailenco d79074eadb Remove PMessage. 2016-04-09 11:51:13 +03:00
Vladimir Mihailenco 3b051d2374 Reuse single Pipeline type in Client, ClusterClient and Ring. 2016-04-09 10:47:15 +03:00
Vladimir Mihailenco ebbeb40416 Disable logging by default. 2016-04-06 13:19:00 +03:00
Vladimir Mihailenco b9c6dcef57 Merge pull request #290 from go-redis/fix/error-handling
Cleanup error handling code.
2016-03-20 11:06:51 +03:00
Vladimir Mihailenco 30ce5ebd57 Cleanup error handling code. 2016-03-19 16:33:14 +02:00
Vladimir Mihailenco d802f0e8bd Remove unneeded synchronization. 2016-03-19 16:10:34 +02:00
Vladimir Mihailenco 6e1aef39ea Faster and simpler pool. 2016-03-19 11:49:13 +02:00
Vladimir Mihailenco 707472c09b Fix connection initialization. 2016-03-15 14:21:53 +02:00
Vladimir Mihailenco 46790aa060 Add race test for big vals. Copy connection to avoid race with PubSub. 2016-03-14 16:34:15 +02:00
Vladimir Mihailenco fdd0fdf678 Optimize pool.Remove. 2016-03-12 12:41:02 +02:00
Vladimir Mihailenco ad0739be99 Extract pool package. Add pool benchmark. 2016-03-12 10:52:13 +02:00
Vladimir Mihailenco 27635bbe4e Fix FailoverClient to close connection to Sentinel. Fixes races build. 2016-03-09 15:14:01 +02:00
Vladimir Mihailenco 673e999431 Close connection on network timeout. 2016-03-09 14:36:14 +02:00
Dimitrij Denissenko 9f40911f28 Correct method accessors 2016-03-09 09:49:05 +00:00
Vladimir Mihailenco 73ad84252c Use package logger. 2016-03-02 13:37:28 +02:00
Vladimir Mihailenco 110e93a8e4 Simplify connection management with sticky connection pool. Fixes #260. 2016-03-01 14:12:25 +02:00
Vladimir Mihailenco ebf51e1a1b Add prefix to package logger. 2016-02-06 12:16:09 +02:00
Francisco Souza d3ee281748 Declare and use a package-level Logger
This allow users of the API to override the Logger. Fix #250.
2016-02-03 12:30:39 -05:00
Vladimir Mihailenco 6c7b789b3a Tweak pool stats. 2016-01-25 15:57:09 +02:00
Anatolii Mihailenco f7a4bd5023 Add pool instrumentation. 2016-01-19 20:08:22 +02:00
Vladimir Mihailenco d7c44c7899 Better rate limited message. 2015-12-22 15:45:03 +02:00
Vladimir Mihailenco b792d8a4cf Fix doc comment for PoolTimeout. 2015-11-18 16:35:02 +02:00
Vladimir Mihailenco ade3425870 multi: fix recovering from bad connection. 2015-11-14 14:44:16 +02:00
Vladimir Mihailenco b23b9b7727 Refactor reply parser. 2015-10-07 17:09:20 +03:00
Vladimir Mihailenco c809246d8b Clarify thread safety. Fixes #166. 2015-09-12 09:36:03 +03:00
Vladimir Mihailenco 58cb170ac0 Get rid of custom bufio package. 2015-09-03 18:41:35 +03:00
Vladimir Mihailenco 40b429df49 Reduce number of various options structs. Slightly reword comments. 2015-05-23 17:56:18 +03:00
Vladimir Mihailenco f531b3b493 Add Client.String method. 2015-05-18 15:14:12 +03:00
Vladimir Mihailenco 18ea75d2ad Release redis.v3 beta. 2015-05-14 16:24:19 +03:00
Vladimir Mihailenco 8c67e00efc Add auto-retry and MaxRetries option. Fixes #84. 2015-05-10 17:02:47 +03:00
Vladimir Mihailenco d3a8d04b9c Merge pull request #97 from go-redis/fix/pool-closes-all-connections
Fix pool to close all connections when client is closed.
2015-05-05 12:38:46 +03:00
Vladimir Mihailenco f3f44aefbe Fix pool to close all connections when client is closed. 2015-05-05 12:17:44 +03:00
Vladimir Mihailenco 121cfc5792 Remove deprecated funcs. 2015-05-02 16:22:06 +03:00
Dimitrij Denissenko 750d14fe21 Ensure all new connections are initialised 2015-04-22 08:32:54 +01:00
Dimitrij Denissenko a5891da2f6 Simplify internal API 2015-04-17 14:18:44 +01:00
Vladimir Mihailenco d3fb658fef Fix pool waiting for connection that was removed. 2015-04-17 15:42:35 +03:00
Dimitrij Denissenko 51f0a7b0a7 Ensure slots are initialised. Return non-failing connections to pool 2015-04-13 14:33:44 +01:00
Dimitrij Denissenko c21e5f3255 Add Redis Cluster support. 2015-03-19 11:19:55 +02:00
Dimitrij Denissenko a6385ccf0a Documented options 2015-01-31 14:54:37 +00:00
Dimitrij Denissenko 9f9822edd2 Use a lock-free connection pool 2015-01-31 13:20:37 +00:00
Vladimir Mihailenco 2a81661b34 Merge pull request #64 from go-redis/feature/ginkgo-suite
Use ginkgo test suite
2015-01-30 17:06:49 +02:00
Vladimir Mihailenco 7f87de6109 Make sentinel tests more reliable. 2015-01-30 16:45:57 +02:00
Vladimir Mihailenco 0bc954fd9f Add canonical import path. 2015-01-17 12:07:35 +02:00
Vladimir Mihailenco 2508d0a57e Add Dialer option. 2014-09-30 11:52:09 +03:00
Vladimir Mihailenco 3836435639 Remove glog. 2014-07-31 16:01:54 +03:00
Vladimir Mihailenco 97039c229c Reuse write buffer. 2014-07-13 15:07:37 +03:00
Vladimir Mihailenco 537971dca1 Fix db selection. Fixes #31. 2014-07-08 11:24:19 +03:00
Vladimir Mihailenco 678b8b3667 Cleanup. 2014-06-28 14:47:37 +03:00
Vladimir Mihailenco deb41df992 Don't remove connection from the pool on redis errors. 2014-06-18 15:55:49 +03:00
Vladimir Mihailenco a042cdda74 Redis Sentinel support. 2014-06-14 14:46:11 +03:00
Vladimir Mihailenco 3bea997988 all: switch to gopkg.in. 2014-05-11 10:44:22 +03:00
Vladimir Mihailenco 5f00ff095c Remove unused variables. 2013-02-02 12:58:31 +02:00
Vladimir Mihailenco f64761880b Add NewUnixClient to connect to the unix sockets. 2013-02-02 12:50:43 +02:00
Vladimir Mihailenco 7cda614ca1 Fix compilation. 2012-11-11 16:37:50 +02:00
Vladimir Mihailenco 096f017b69 Use DialTimeout. 2012-10-26 18:21:14 +03:00
Vladimir Mihailenco a94daf0c96 parser: Introduce parserError. 2012-08-26 12:18:42 +03:00
Vladimir Mihailenco dbcfb0984e redis: Rename mtx to reqsMtx. 2012-08-25 22:44:53 +03:00
Vladimir Mihailenco 61134182aa redis: Log errors instead panic. 2012-08-25 16:47:27 +03:00
Vladimir Mihailenco b6ae953e1c Add ParseReq method and tweak benchmarks. 2012-08-24 15:16:12 +03:00
Vladimir Mihailenco f56748aab9 Use net.Conn instead of io.ReadWriteCloser. 2012-08-20 14:50:25 +03:00
Vladimir Mihailenco 9ad848d04b Add support for scripting commands. 2012-08-20 13:42:33 +03:00
Vladimir Mihailenco 11e1783560 Review API. 2012-08-17 21:36:48 +03:00
Vladimir Mihailenco a2f5423658 Reuse buffer for constructing request. 2012-08-14 18:20:22 +03:00
Vladimir Mihailenco 59f901d62f parser: greatly simplify reply parsing. 2012-08-12 21:41:44 +03:00
Vladimir Mihailenco 2f4156dd04 Extract pipeline and multi/exec support to separate files. 2012-08-11 17:42:10 +03:00
Vladimir Mihailenco 83664bb3a8 Add support for watch in transactions. 2012-08-09 17:06:26 +03:00
Vladimir Mihailenco b2e3463af1 Get rid of custom buffered reader. 2012-08-09 13:12:41 +03:00
Vladimir Mihailenco b2805a5e04 Rename OneConnPool to SingleConnPool. 2012-08-06 17:04:30 +03:00
Vladimir Mihailenco 05223145e0 Change API and update tests. 2012-08-06 15:09:48 +03:00