Jedis 设置key的超时时间

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

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

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

方法名:sMSWaitingTime

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

 

Java代码  收藏代码
  1. /*** 
  2.      * 倒计时还剩余多长时间 
  3.      * @param mobile : 手机号 
  4.      * @return : second 
  5.      */  
  6.     public int sMSWaitingTime(String mobile) {  
  7.         HttpServletRequest request = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getRequest();  
  8.         HttpServletResponse response = ((ServletRequestAttributes) RequestContextHolder.getRequestAttributes()).getResponse();  
  9.         RedisHelper rdsHelper = RedisHelper.getInstance();  
  10.         String cid = getCid(request, response);  
  11.           
  12.         String lastSendSMSTime = rdsHelper.getCache(cid+mobile);//getKeyCache(request, response, mobile) ;  
  13.   
  14.         if(StringUtil.isNullOrEmpty(lastSendSMSTime)) {  
  15.             saveExpxKeyCache(request, response, mobile, String.valueOf(DateTimeUtil.getCurrentTimeSecond()),60);  
  16.             return 0;  
  17.         } else {  
  18.             long lastSendSMSTimeSecond=Long.parseLong(lastSendSMSTime);  
  19.             long currentTimeSecond=DateTimeUtil.getCurrentTimeSecond();  
  20.             int delter=(int) (currentTimeSecond-lastSendSMSTimeSecond);  
  21.             System.out.println("delter:"+delter);  
  22.             if(delter>=60){  
  23.                 return 0;  
  24.             }else{  
  25.                 return 60-delter;  
  26.             }  
  27.         }  
  28.     }  

 

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

Java代码  收藏代码
  1. public /*synchronized*/ void saveExpxKeyCache(HttpServletRequest request, HttpServletResponse response, String k, String v,long time) {  
  2.   
  3.         String cid = getCid(request, response);  
  4.   
  5. //        logger.debug("cid is " + cid);  
  6. //        logger.debug("set " + k + " to value : " + v);  
  7.   
  8.         RedisHelper helper = RedisHelper.getInstance();  
  9.         helper.saveExpxKeyCache(cid+k,  v,time);  
  10.   
  11. //        jedis.hset(httpSession.getId(), k, v);  
  12. //        jedis.expire(httpSession.getId(), 3600);  
  13.   
  14.   
  15.     }  
  16.   
  17.  /*** 
  18.      * Only set the key if it does not already exist 
  19.      * 
  20.      * @param k 
  21.      * @param v 
  22.      * @param time : second 
  23.      */  
  24.     public void saveExpxKeyCache(String k, String v, long time) {  
  25.         saveExpxKeyCache(k, v, "NX", time);  
  26.     }  
  27.   
  28.     /*** 
  29.      * @param k 
  30.      * @param v 
  31.      * @param nxxx :  NX|XX, NX -- Only set the key if it does not already exist. XX -- Only set the key 
  32.      *             if it already exist. 
  33.      * @param time : second 
  34.      */  
  35.     public void saveExpxKeyCache(String k, String v, String nxxx, long time) {  
  36.         Jedis jedis = Const.pool.getResource();  
  37.         try {  
  38.             jedis.set(k, v, nxxx, "EX"/*seconds*/, time);  
  39.         } catch (Exception e) {  
  40.             e.printStackTrace();  
  41.             logger.error("saveKeyCache", e);  
  42.             Const.pool.returnBrokenResource(jedis);  
  43.             jedis = null;  
  44.         } finally {  
  45.             if (jedis != null) {  
  46.                 Const.pool.returnResource(jedis);  
  47.             }  
  48.         }  
  49.     }  

 

 

参考:

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/284775.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

[转]IIS7全新管理工具AppCmd.exe的命令使用

IIS 7 提供了一个新的命令行工具 Appcmd.exe,可以使用该工具来配置和查询 Web 服务器上的对象,并以文本或 XML 格式返回输出。 下面是一些可以使用 Appcmd.exe 完成的任务的示例: •创建和配置站点、应用程序、应用程序池和虚拟目录。 •停止…

【QGIS入门实战精品教程】4.1:QGIS栅格数据地理配准完整操作流程

推荐阅读:ArcGIS地理配准完整操作步骤 文章目录 一、安装地理配准插件二、准备实验数据三、配准操作流程1. 添加栅格数据2. 添加地面控制点3. 配准设置4. 开始配准5. 精度评价一、安装地理配准插件 点击下拉菜单【插件】→【管理并安装插件】,如下图所示: QGIS默认已经安装…

聊聊 C++ 中的几种智能指针 (上)

一:背景 我们知道 C 是手工管理内存的分配和释放,对应的操作符就是 new/delete 和 new[] / delete[], 这给了程序员极大的自由度也给了我们极高的门槛,弄不好就得内存泄露,比如下面的代码:void test() {int* i new i…

【Android 学习】深入理解Handler机制

版权声明:本文为博主原创文章,转载请注明出处http://blog.csdn.net/u013132758。 https://blog.csdn.net/u013132758/article/details/51355051 Android 提供了Handler和Looper来来满足线程间的通信,而前面我们所说的IPC指的是进程间的通信。…

第五天个人总结

1.昨天做了什么 页面完善 2.今天要做什么 暂未知转载于:https://www.cnblogs.com/sunshine-z/p/8298895.html

【QGIS入门实战精品教程】4.3:QGIS属性表按字段链接外部属性数据

属性数据是GIS空格数据的重要组成部分。属性数据采集的基本操作由于地理实体(如建筑物) 位于地块之内成者与地块有关(如道路),因此,描述地理实体的属性数据和描述地块实体与地理实体之间关系的属性数强大多数都是土地信息的范畴土地空间数据库的属性教据主要是用来描述空间目…

解决 Cmder 的光标跟文字有个间距 及常用配置

具体的方法: 菜单 > SettingStartup > Environment set PATH%ConEmuBaseDir%\Scripts;%PATH% set LANGzh_CN.UTF8 chcp 65001 如果无效:在 Cmder 下的 verndor 目录里,修改 clink.lua 文件大约40和46行,把符号 λ 改为 # …

32 commons-lang包学习

maven依赖 <dependency><groupId>commons-lang</groupId><artifactId>commons-lang</artifactId><version>2.6</version></dependency>一、DateUtils类1、日期比较 public static boolean isSameDay(Date date1, Date date2)&…

做一个高德地图的 iOS / Android .NET MAUI 控件系列 - 创建控件

我们知道 MAUI 是开发跨平台应用的解决方案 &#xff0c;用 C# 可以直接把 iOS , Android , Windows , macOS , Linux ,Tizen 等应用开发出来。那我们在这个框架除了用底层自定义的 UI 控件外&#xff0c;如果我们要用如高德地图这样的第三方控件&#xff0c;要如何做呢&#x…

flask中的session,render_template()第二和参数是字典

1. 设置一个secret_key 2.验证登入后加上session,这是最简单,不保险 . 3.注意render_template传的参数是字典 转载于:https://www.cnblogs.com/cuzz/p/8087844.html

统一设置网站html文件输出编码为utf-8,以解决乱码问题

如果设置整站&#xff0c;就在根目录web.config设置如下参数&#xff0c;如果是指定目录&#xff0c;在该目录下的web.config文件设置如下参数&#xff0c;如果没有web.config文件&#xff0c;可以直接新建一个&#xff1a; <?xml version"1.0" encoding"…

失败记录两则

一&#xff0c;未找出为什么有的CPU应用超高&#xff0c;而另一些CPU静静啥也不干。可能是将JOB的优先级设置低了&#xff1f; 二&#xff0c;给BOSS的三星I9300线刷港版ROM失败。可能文件坏&#xff0c;最可能数据线不是原装&#xff1f;

【QGIS入门实战精品教程】1.1:QGIS与GIS的区别和联系

「刘一哥GIS」系列专栏《QGIS入门实战精品教程(配套案例数据)》目录 1. QGIS概述 QGIS(在2.0版本之前称之为Quantum GIS)于2002年由Gary Sherman创立,在2007年由OSGeo接管,并于2009年发布了1.0版本,目前最高版本为3.22。QGIS采用开源证书GNU GPLv2 (GNU General Public…

简单的对拍

在算法竞赛中&#xff0c;我们常用对拍来初步检验程序。 网上也有其它的关于对拍的教程&#xff0c;但是任性的我还是要自己写一篇教程。  首先&#xff0c;我们要知道我们是用一个叫做” 批处理文件&#xff08;.bat&#xff09;“的东西来处理这个问题。点击初步了解bat 不过…

AI 之 OpenCvSharp 大图找小图(案例版)

要说跟AI扯上啥关系&#xff0c;估计只有库本身了&#xff0c;但是&#xff0c;这个大图搜小图功能还是不错的&#xff0c;有喜欢的可以试试。我主要用的场景是&#xff0c;具体的某个界面为大图&#xff0c;界面的某个图标为小图&#xff0c;或者&#xff0c;整个桌面为大图&a…

SaaS应用的十二要素

简介 如今&#xff0c;软件通常会作为一种服务来交付&#xff0c;它们被称为网络应用程序&#xff0c;或软件即服务&#xff08;SaaS&#xff09;。12-Factor 为构建如下的 SaaS 应用提供了方法论&#xff1a; 使用标准化流程自动配置&#xff0c;从而使新的开发者花费最少的…

对话Linus:Linux 25岁啦

作为芬兰Helsinki大学计算机科学系的学生&#xff0c;Linus Torvalds在1991年编写了Linux操作系统的原始内核。很快&#xff0c;Linux就发展成为了一个全特征的操作系统&#xff0c;并开始运行在智能手机、服务器和各种设备中。在本次通过e-mail进行的访谈中&#xff0c;Torval…

路由器与交换机区别

路由器与交换机区别 近日&#xff0c;在回答知道网友提问的时候&#xff0c;发现很多朋友不知道路由器与交换机的不同&#xff0c;常常问一些看起来有点可笑的问题。比如路由器同时登陆两个账号&#xff0c;所以今天写下这篇经验&#xff0c;科普一下路由器的功能和交换机的功能…

【QGIS入门实战精品教程】1.2:QGIS与ArcGIS的区别和联系

「刘一哥GIS」系列专栏《QGIS入门实战精品教程(配套案例数据)》目录 以下是GISGeography官方给出的两者之间的27点比较(译): 官方网址:https://gisgeography.com/qgis-arcgis-differences/ 1.QGIS容纳更多的数据格式 ArcGIS没有支持所有的数据格式,毫无疑问,QGIS在处…

mysql中的增删改查

显示数据库中有的表格 SHOW TABLES增 新建表格 CREATE TABLE urls( id int, url varchar(100), description varchar(100) ) 插入值 INSERT INTO chflvghu_test.user (user, password) VALUES (小红, qwerty); 插入多条数据 INSERT INTO chflvghu_test.user (user, password) V…