将缓存Redis过期设置为1年

mrj*_*_05 2 caching spring-mvc redis cache-expiration

如何设置Redis Cache的有效期为1年?

我试图long将xml配置上的值设置为:31556952000(1年),但是随后它捕获到一个异常,该异常是Integer类型无法将值识别为Integer。我尝试在Google上进行搜索,结果显示Integer最大值不超过2147483647,这意味着,如果设置为Integer最大值,则只会使我的缓存在24天后过期。

这是我的applicationContext.xml(我省略了不必要的代码):

    ...
    <cache:annotation-driven />

    <bean id="redisCacheMap" class="java.util.HashMap">
        <constructor-arg index="0" type="java.util.Map">
            <map key-type="java.lang.String" value-type="java.lang.Integer">
                <entry key="ruleCache" value="86400"/>
            </map>
        </constructor-arg>
    </bean>
    ...
Run Code Online (Sandbox Code Playgroud)

上面的代码配置为将过期设置ruleCache为仅1天(86400以毫秒为单位)。

有可能这样做吗?谢谢。

小智 5

Redis接受expire命令的整数值(最大为2 147 483 647)。单位是秒,而不是毫秒,因此1年是31556952,而不是31556952000,它适合整数。

如果您想让地图访问Long,也许可以修改配置:

<map key-type="java.lang.String" value-type="java.lang.Long">
Run Code Online (Sandbox Code Playgroud)

  • “expire”的最大值是“9223372036854775807”而不是“2147483647”,尝试一下。 (2认同)