遇到个业务,每次下发指令,都需要存储指令的id,当终端机器,推给服务端的时候,会携带指令,此时根据指令id,判断是否存在。每辆车,1个小时可能出现100次指令,如果有10W辆车,那就是1千万,1小时1千万数据,存储不太现实,redis支持的key只有2亿。而且指令这种东西,我们收到就可以丢掉了。因为下次也用不到这个指令,如果是做数据分析的话,我们直接把指令记录写到磁盘就行。所以需要设置一个过期时间,当指令过了多久后会自动消失。
短信验证码,也同样可以用redis这样做
代码
set key "hhh"
expire key 30
这段代表30秒后消失
java中
导入依赖
<dependency>
<groupId></groupId>
<artifactId>jedis</artifactId>
<version>3.2.0</version>
</dependency>
连接
Jedis jedis = new Jedis("192.");
("TeacherLove~U");//设置了认证就输入密码
//设置个值
("1","hh");
//设置1的过期时间
("1",30);
优化理论,我发现我之前是个*。这种方法不好,由于电动车他要停止后,才能锁车成功。
而且消费只消费一次,所以我们优化一下。
1.设置过期时间为1小时,3600秒
2.如果终端发送消息来了,我就把这条消息msgId在redis中删除