У меня появлялась мысль сделать партицию объектом, но я отказался на том этапе от этого что бы не усложнять. Возможно стоит к этому вернуться.

Предлагаю сделать это в рамках рефакторинга. Задачи для него уже назревают, в частности:
в обоих счетчиках hash_counter и unique_values_list есть сходный функционал по работе с с группами и партициями. Я планирую вынести это в модуль и включать в каждый класс. Но сейчас эти классы несколько расходятся и нужно сначала их привести к общему виду.

На данный момент у меня больше нет времени, реквест висит больше недели, написано 450 тестов, их нужно будет править практически все.

С объектами тоже не все так однозначно:
был запрос данных в прикладном коде
`counter.data(:date => '2013-10-07')`, а будет
`counter.data(partition.new(counter, :date => '2013-10-07'))` что очень не очень.

Если убиться за ООП, то можно и ключ в редисе в котором хранится значение можно сделать объектом и строку данных возвращать не хешом, а объектом строкой или моделью. Тогда и производительность будет соответсвующая.
Важно соблюсти баланс.