数码资讯
redis过期时间设置(redis过期时间设置为永久)
1. redis过期时间设置为永久最近在使用redis,用到里面的incrBy操作,但是这个API没有提供一个参数来设置key的失效时间。我自己想了一个比较low的办法。Long limit = redisStringService.incrBy(limitCacheKey, 1);//拿到数字1的
1. redis过期时间设置为永久
最近在使用redis,用到里面的incrBy操作,但是这个API没有提供一个参数来设置key的失效时间。
我自己想了一个比较low的办法。
Long limit = redisStringService.incrBy(limitCacheKey, 1);
//拿到数字1的那个线程,设置key的有效期
if (limit == 1) {
redisStringService.expired(limitCacheKey,2);
}
就是当incrBy的返回值是1的时候,让拿到1的那个线程帮忙设置一下key的失效时间。
由于incrBy是原子性的,拿到1的肯定只有一个线程,所以不会存在并发调用expired操作的可能。
经过验证,这个方法是可行的,但是感觉很low
2. Redis设置过期时间
表示永久有限,即key存在但是没有设置剩余时间。
3. redis怎么设置过期时间
过期键的处理就是把过期键删除,这里的操作主要是针对过期字段处理的。
Redis中有三种处理策略:定时删除、惰性删除和定期删除。
定时删除:在设置键的过期时间的时候创建一个定时器,当过期时间到的时候立马执行删除操作。不过这种处理方式是即时的,不管这个时间内有多少过期键,不管服务器现在的运行状况,都会立马执行,所以对CPU不是很友好。
惰性删除:惰性删除策略不会在键过期的时候立马删除,而是当外部指令获取这个键的时候才会主动删除。处理过程为:接收get执行、判断是否过期(这里按过期判断)、执行删除操作、返回nil(空)。
定期删除:定期删除是设置一个时间间隔,每个时间段都会检测是否有过期键,如果有执行删除操作。这个概念应该很好理解。
4. redis为什么设置过期时间
EXPIRE 接口定义:EXPIRE key "seconds"
接口描述:设置一个key在当前时间"seconds"(秒)之后过期。返回1代表设置成功,返回0代表key不存在或者无法设置过期时间。
例如:EXPIRE aa 60
PEXPIRE 接口定义:PEXPIRE key "milliseconds"
接口描述:设置一个key在当前时间"milliseconds"(毫秒)之后过期。返回1代表设置成功,返回0代表key不存在或者无法设置过期时间。
例如:EXPIRE aa 60
(integer) 1 //设置
5. redis设置永不过期
token存储在redis中,设置了过期时间,过期就过期了 ,不需要去刷新token,
token过期后,客户端可以依据refreshtoken来获取新的token。
6. redis设置过期时间一天
过期时间删除的方法有三种:
1、删除这个key,使用del command
2、用set or getset 命令会将key的expiration清空,事实上set和getset命令是替换了key对应的value,所以key的过期时间也就不复存在。所以,需要注意的是:incr,LPUSH,HSET命令是不会改变key的过期时间的。原来是多久,这三条命令执行完之后还是多久。
3、使用persist命令清楚key的过期时间。
rename命令是将keyA变为keyB,无论keyB是否已经存在,keyA的过期时间都会被keyB继承过去。
7. redis数据的默认过期时间
redis可以通过设置key的过期时间,setExpire(key, 30),key30秒后会自动过期掉。
8. redis过期时间设置为永久时间
通过EXPIRE 命令或者PEXPIRE 命令,客户端可以以秒或者毫秒精度为数据库中的某个键设置生存时间( Time To Live , TTL) ,在经过指定的秒数或者毫秒数之后,服务器就会自动删除生存时间为0的键:redis> SET key valueOKredis> EXP 工RE key 5(integer) 1redis> GET key // 5 秒之内"value"redis> GET key // 5 秒之后(nil)
9. redis过期时间一般设置多久
手机注册就是提交用户名,密码到数据库保存起来(当然密码要用哈希)。至于验证码登录,提供一个获取验证码的接口,从前端获取用户的手机号,生成一个随机数,将随机数和手机号作为一个字典保存在redis里面,并将随机数作为模板变量交给短信运营商。
当用户提交手机号和验证码的时候,在redis里面核对一下即可。至于设计验证码何时失效,设置redis里面的key的过期时间就可以了。