相信大家在很多业务场景都会遇到对数据设置过期时间,如安全认证token、短信验证码等。一般我们的解决有几种:存redis、存数据库、实时计算(如JWT),不管使用哪种方式,需求就是过期了对数据的清理。下面我们说说如何对token设置过期处理。
首先我选择的是Redis,效率高能满足我所有的业务需求,但在redis中的 hash是不支持设置过期时间的,如果我们要设置过期时间,还要分类存储,可以用下面折中的方法。所谓的分类存储,就是对key命名格式。命名格式以冒号隔开,如:key=group:key。
添加数据、设置过期时间、查看分类
127.0.0.1:6379> set USER_TOKEN:token1 "11111111111111111111"
127.0.0.1:6379> set USER_TOKEN:token2 "22222222222222222222"
127.0.0.1:6379> EXPIRE USER_TOKEN:token1 60
127.0.0.1:6379> EXPIRE USER_TOKEN:token2 60
127.0.0.1:6379> keys USER_TOKEN*
1) "USER_TOKEN:token2"
2) "USER_TOKEN:token1"