Hey Ram,
What you want is certainly doable in redis, using the sorted set feature - ZSET.
let's say you have all the zodiac signs saved in HASH objects, each with a key like sign:leo, sign:pices etc, and members start_date, end_date, etc
then you take the start date and end date, and convet them to a number, the simplest idea I have is just the day of year.
so leo is (making this up) days 113-144
then you index those in a sorted set. you enter the end end DOY of each sign to sorted set (there's no need to actually input the start date for this exact use case, but you can use either)
ZADD date_index 144 leo
for all signs.
now when you want to know what sign a date is in, you convert it to day-of-year as well,
for example day 128
now you do
ZRANGEBYSCORE date_index 128 +inf LIMIT 0 1
this will give you the nearest end of month record, in this case "leo"
then you can go and fetch the HASH containing the data, i.e HGETAL sign:leo
this is very fast, I'm using this method for example to resolve an ip adress to an ip range for location resolving.
of course you can use this with any numerical index.