External Infinispan cluster vs Offline tokens with Keycloak

Hi ,
I am trying to configure external Infinispan cluster with Keycloak. We serve about 200-300K tokens everyday from our platform. We have scenarios where we need to allow the max lifespan of the token to be around 365 days. With this in mind, we are having two approaches to support the extended timeout that is requested by business.

a. Have offline tokens, so that even if we have to upgrade and restart keycloak, users will not have to login again.
b. Use External Infinispan to store sessions, so that Keycloak restarts do not impact the session cache.

So, I would like to understand here the real difference between using external Infinispan and using Offline tokens. It seems that even though I use external store for sessions, Keycloak still caches it with itself locally.

If I plan to use external Infinispan with offline tokens enabled, then the session information will be stored at three places, i.e. locally with Keycloak, In the database and also in external Infinispan. I want to understand is it the right and recommended way to do use both offline tokens and external Infinispan, or I should only consider using only one.
If only one, which one is better, external Infinispan or offline tokens.

Any help on this is really appreciated.

Regards,
Ashish Choudhari