遇到个业务,每次下发指令,都需要存储指令的id,当终端机器,推给服务端的时候,会携带指令,此时根据指令id,判断是否存在。每辆车,1个小时可能出现100次指令,如果有10W辆车,那就是1千万,1小时1千万数据,存储不太现实,redis支持的key只有2亿。而且指令这种东西,我们收到就可以丢掉了。因为下次也用不到这个指令,如果是做数据分析的话,我们直接把指令记录写到磁盘就行。所以需要设置一个过期时间,当指令过了多久后会自动消失。

短信验证码,也同样可以用redis这样做


代码

set key "hhh"

expire key 30

这段代表30秒后消失

java中

导入依赖

<dependency>
    <groupId>redis.clients</groupId>
    <artifactId>jedis</artifactId>
    <version>3.2.0</version>
</dependency>

连接

Jedis jedis = new Jedis("192.168.xx.xx");
jedis.auth("TeacherLove~U");//设置了认证就输入密码

//设置个值
jedis.set("1","hh");
//设置1的过期时间
jedis.expire("1",30);

优化理论,我发现我之前是个傻子。这种方法不好,由于电动车他要停止后,才能锁车成功。

而且消费只消费一次,所以我们优化一下。

1.设置过期时间为1小时,3600秒

2.如果终端发送消息来了,我就把这条消息msgId在redis中删除

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐