One type in redis which can be used for such purpose is the sorted set. If you have limited number of total keys, you can precalculate the value for each key(like combination of customer, item, etc) and store it in a sorted set, where date represents the score and value is the data, then for getting the data between a date range, you can get the sorted set operations, zrangebyscore.
But i think its important to go for it if you feel it will fulfill all you need for a reporting database..