Commit Graph

66 Commits

Author SHA1 Message Date
Vladimir Mihailenco f13fc5381c Extract commands info cache 2018-03-07 12:09:45 +02:00
yifei.huang 8b4fa6d443 Add WrapProcessPipeline 2018-01-30 16:47:29 +02:00
Vladimir Mihailenco e5040d9ce7 Don't test in Go 1.4 2017-12-28 17:00:22 +02:00
Vladimir Mihailenco 3de5605ab2 Pick random node when command does not have keys 2017-12-28 16:47:08 +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 2a5293c99c Export Cmder.Args 2017-09-26 11:29:22 +03:00
Vladimir Mihailenco f9307ab2fe Add TxPipeline to Cmdable 2017-09-25 11:48:44 +03:00
Vladimir Mihailenco bc5f9a6878 Replace PoolStats.Requests with PoolStats.Misses 2017-09-22 12:28:08 +03:00
Vladimir Mihailenco dbd2c99ba9 Rework pipeline retrying 2017-09-01 14:56:00 +03:00
Vladimir Mihailenco 6060f097e1 Add PubSub support to Cluster client 2017-07-09 10:07:20 +03:00
Vladimir Mihailenco 9dbcc5ae80 Vendor syncutil.Once 2017-07-01 12:51:46 +03:00
Vladimir Mihailenco 5132e15c93 Fix cmd info race. Fixes #578 2017-06-17 12:34:39 +03:00
Vladimir Mihailenco 4a3a300665 Add Options.OnConnect 2017-05-26 14:56:18 +03:00
Vladimir Mihailenco 7e8890b644 Embed Cmdable into StatefulCmdable 2017-05-25 13:38:04 +03:00
Vladimir Mihailenco 6307b95039 Export Cmder.Name 2017-05-09 12:45:30 +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 346c00d485 Add PubSub support to Ring 2017-04-11 17:29:31 +03:00
Poloskin Valentin Georgievich 80673992e6 gofmt 2017-04-02 17:10:47 +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 308ebee457 Fix defer order. 2017-01-28 10:53:10 +02:00
Vladimir Mihailenco 69554c0ec5 Reduce number of allocations. 2017-01-13 13:39:59 +02:00
Vladimir Mihailenco 6cd7a09b22 Use first slot/shard when key is not defined. 2016-12-16 14:30:23 +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 8558a92fa4 Retry multiple commands more conservatively. 2016-10-13 13:56:24 +03:00
Vladimir Mihailenco f5245efa73 Prepare v5 release. 2016-10-09 10:56:53 +00:00
Vladimir Mihailenco eeba1d7db1 Select random node when there are no keys. 2016-10-09 10:30:45 +00:00
Artem Chernyshev 03da66c18a Add new parameter to the RingOptions to override CommandInfo first key
There is problem with `eval` and `evalsha` commands.
`COMMAND INFO eval` returns first key position equals `0`.
After that, redis ring chooses `eval` as a value for sharding.
They, if you try to delete created value, ring may choose another shard
and delete won't work.

Eval command should be parsed, to be sharded properly, according to
redis specs: http://redis.io/commands/command .

I've introduced a new flag in the `RingOptions`, which will enable new
behavior: `EnableKeyLocationParsing`.

If it is enabled, `cmdFirstKey` will try to get key position using
`cmd.getFirstKeyPos()`. This function is defined for `eval` and
`evalsha` commands.
If it has parameters, it will return `3`, otherwise it will return `0`.
2016-10-04 17:09:04 +03:00
Vladimir Mihailenco 7cbee9d337 Enable reaper on ClusterClient and add tests. 2016-10-02 12:44:01 +00: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 66f2eb1584 ring: reduce HeartbeatFrequency. 2016-08-09 13:54:04 +00:00
Vladimir Mihailenco 261cf7ae70 Fix Del command case. 2016-07-08 09:30:38 +00:00
Dimitrij Denissenko aa063fe0a2 Fix ring comments 2016-07-02 09:07:27 +01:00
Dimitrij Denissenko 1c4c05e970 Ensure to use pointer methods where appropriate. Tidy up godoc. 2016-07-01 13:25:28 +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
Joris Minjat 487feebef1 Add latency based routing to Redis Cluster client. 2016-05-23 12:49:55 +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 3b051d2374 Reuse single Pipeline type in Client, ClusterClient and Ring. 2016-04-09 10:47:15 +03:00
Vladimir Mihailenco 6e1aef39ea Faster and simpler pool. 2016-03-19 11:49:13 +02:00