我是靠谱客的博主 高大御姐,最近开发中收集的这篇文章主要介绍Jedis 设置key的超时时间,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

一分钟之内只能发送一次短信,

若用户刷新页面,然后输入原来的手机号,则继续计时

方案:服务器端要记录时间戳

方法名:sMSWaitingTime

功能:返回倒计时剩余时间,单位秒

 

/***
* 倒计时还剩余多长时间
* @param mobile : 手机号
* @return : second
*/
public int sMSWaitingTime(String mobile) {
HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();
HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();
RedisHelper rdsHelper = RedisHelper.getInstance();
String cid = getCid(request, response);
String lastSendSMSTime = rdsHelper.getCache(cid+mobile);//getKeyCache(request, response, mobile) ;
if(StringUtil.isNullOrEmpty(lastSendSMSTime)) {
saveExpxKeyCache(request, response, mobile, String.valueOf(DateTimeUtil.getCurrentTimeSecond()),60);
return 0;
} else {
long lastSendSMSTimeSecond=Long.parseLong(lastSendSMSTime);
long currentTimeSecond=DateTimeUtil.getCurrentTimeSecond();
int delter=(int) (currentTimeSecond-lastSendSMSTimeSecond);
System.out.println("delter:"+delter);
if(delter>=60){
return 0;
}else{
return 60-delter;
}
}
}

 

jedis 可以设置key的超时时间:

public /*synchronized*/ void saveExpxKeyCache(HttpServletRequest request, HttpServletResponse response, String k, String v,long time) {
String cid = getCid(request, response);
//
logger.debug("cid is " + cid);
//
logger.debug("set " + k + " to value : " + v);
RedisHelper helper = RedisHelper.getInstance();
helper.saveExpxKeyCache(cid+k,
v,time);
//
jedis.hset(httpSession.getId(), k, v);
//
jedis.expire(httpSession.getId(), 3600);
}
/***
* Only set the key if it does not already exist
*
* @param k
* @param v
* @param time : second
*/
public void saveExpxKeyCache(String k, String v, long time) {
saveExpxKeyCache(k, v, "NX", time);
}
/***
* @param k
* @param v
* @param nxxx :
NX|XX, NX -- Only set the key if it does not already exist. XX -- Only set the key
*
if it already exist.
* @param time : second
*/
public void saveExpxKeyCache(String k, String v, String nxxx, long time) {
Jedis jedis = Const.pool.getResource();
try {
jedis.set(k, v, nxxx, "EX"/*seconds*/, time);
} catch (Exception e) {
e.printStackTrace();
logger.error("saveKeyCache", e);
Const.pool.returnBrokenResource(jedis);
jedis = null;
} finally {
if (jedis != null) {
Const.pool.returnResource(jedis);
}
}
}

 

 

参考:

http://hw1287789687.iteye.com/blog/2225130

最后

以上就是高大御姐为你收集整理的Jedis 设置key的超时时间的全部内容,希望文章能够帮你解决Jedis 设置key的超时时间所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(39)

评论列表共有 0 条评论

立即
投稿
返回
顶部