redis+spring 注解Cacheable 设定redis的生存周期。

业务场景:

1、要取得当日汇率(美元兑人民币,及人民币兑美元),精度不高,频率不高,一天取一到两次即可。

2、取得的汇率作为所有用户的基础汇率用做其它运算。所有用户共用一套汇率,不区分用户。

解决方案:

1、初步考虑

     i 、建表,存汇率值。

     ii、用定时任务 调用其它网站提供的汇率API 来更新表中固定汇率。频率用定时任务的参数来设置。

     iii、redis取得表里的值。设置过期时间。

2、后期优化后考虑

    i、因为频率不高,可以直接用httpUrlConnection来爬取。代替了别人提供的API接口,(找到的免费汇率API不太满足方案,要么只能免费一个月,要么汇率只有CNF,没有CNY,要么就是美元换成欧元),方案可以多设置几个网站。以防反爬或其它问题取值失败。

    ii、表也不用建了、定时任务也没必要,直接用@cacheable设定spring缓存时间。过期(一天)后,当第一个用户调用时再爬一次,并缓存上。对用户来说基本上无感。

优缺点:

优的是资源少,速度快,简单易懂。

缺点一个是只适用于精度要求不高的场合,另一个是爬取的通病,爬的对象保不准什么时候就失效,补救措施要多做准备,在这里用了两套待爬网站+实在取不到取固定汇率预定值的方案。

一、配置很简单。

<!--database根据自己的业务线来设定-->
    <bean id="sessionJedisConnectionFactory"
          class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory"
          p:usePool="true" p:database="0">
        <constructor-arg name="sentinelConfig" ref="redisSentinelConfiguration"/>
    </bean>

    <bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate"
          p:connectionFactory-ref="sessionJedisConnectionFactory">
        <property name="keySerialize
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值