Вы можете использовать модуль маршала, специально предназначенный для сериализации внутренних объектов
cache.set(eq, marshal.dumps(compile(eq, '<string>', 'eval')), 365*24*60)
...
eval(marshal.loads(cache.get(eq)))
В качестве альтернативы вы можете сохранить источник
cache.set(eq, eq, 365*24*60)
...
eval(cache.get(eq))
В любом случае вам может понадобиться оценить потенциальные угрозы безопасности при выполнении кода, извлеченного из внешнего кэша.