Commit Graph

32 Commits

Author SHA1 Message Date
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
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 ad0739be99 Extract pool package. Add pool benchmark. 2016-03-12 10:52:13 +02:00
Vladimir Mihailenco 673e999431 Close connection on network timeout. 2016-03-09 14:36:14 +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
Anatolii Mihailenco 0bf3759a6d Create hashtag package. 2015-12-31 16:25:20 +02:00
Vladimir Mihailenco 98414ea72a Increase test timeout. 2015-11-21 10:20:01 +02:00
Vladimir Mihailenco ade3425870 multi: fix recovering from bad connection. 2015-11-14 14:44:16 +02:00
Vladimir Mihailenco c809246d8b Clarify thread safety. Fixes #166. 2015-09-12 09:36:03 +03:00
Vladimir Mihailenco 54dcf59909 ring: return an error in pipeline when all shards are down. 2015-07-13 12:56:16 +03:00
Vladimir Mihailenco 1608a33e55 ring: fix key hashing in Ring pipeline. 2015-06-24 15:37:41 +03:00
Vladimir Mihailenco 74f9f4f7a0 ring: ignore pool timeout when pinging shards. 2015-06-16 10:46:46 +03:00
Vladimir Mihailenco 0cf1b73698 Add RingPipeline. 2015-06-04 11:50:24 +03:00
Vladimir Mihailenco 2103d88732 Embed consistenthash package. 2015-06-03 14:25:52 +03:00
Vladimir Mihailenco 46f49a17a5 Add Redis Ring. 2015-06-03 14:25:52 +03:00