Commit Graph

13 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 66f2eb1584 ring: reduce HeartbeatFrequency. 2016-08-09 13:54:04 +00: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 36487d8462 Stabilize build. 2015-12-22 12:08:35 +02:00
Vladimir Mihailenco b6b689904a Fix test. 2015-11-22 17:53:44 +02:00
Vladimir Mihailenco 98414ea72a Increase test timeout. 2015-11-21 10:20:01 +02: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 fee949ecbf ring: improve pipelining tests. 2015-06-24 13:41:50 +03:00
Vladimir Mihailenco 0cf1b73698 Add RingPipeline. 2015-06-04 11:50:24 +03:00
Vladimir Mihailenco 46f49a17a5 Add Redis Ring. 2015-06-03 14:25:52 +03:00