我们被要求在使用redis的应用程序中实现缓存。该应用程序应该有一个逻辑来在启动时清除缓存并初始化它。但是,redis实例可以由多个应用程序实例共享。
例如,应用程序X有两个实例X0和X1共享同一个redis实例。
问题:对于多个实例,可能会出现一个实例尝试在其他实例清除缓存时初始化缓存的情况。
两个问题:
1)如何确保在缓存正在初始化时,其他实例不会清除它。
解决此问题的一种方法是在redis中维护一个标志以检查是否正在清除或初始化缓存。如果正在初始化缓存,则不要清除或重新初始化它。
2)将redis实例共享给多个应用程序实例是否是一个好的实践?
例如,应用程序X有两个实例X0和X1共享同一个redis实例。
问题:对于多个实例,可能会出现一个实例尝试在其他实例清除缓存时初始化缓存的情况。
两个问题:
1)如何确保在缓存正在初始化时,其他实例不会清除它。
解决此问题的一种方法是在redis中维护一个标志以检查是否正在清除或初始化缓存。如果正在初始化缓存,则不要清除或重新初始化它。
2)将redis实例共享给多个应用程序实例是否是一个好的实践?