`

Jedis 设置key的超时时间

    博客分类:
  • Java
阅读更多

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

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

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

方法名: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

  • 大小: 82 KB
分享到:
评论

相关推荐

    jedis依赖jar包

    2. **字符串操作**:`set(key, value)`设置键值对,`get(key)`获取键对应的值。 3. **哈希操作**:`hset(hashKey, field, value)`设置哈希表字段值,`hget(hashKey, field)`获取哈希表字段值。 4. **列表操作**:`...

    Jedis简明教程

    2. 配置连接池:创建一个`JedisPoolConfig`对象,设置最大连接数、最大空闲连接、超时时间等参数。 ```java JedisPoolConfig poolConfig = new JedisPoolConfig(); poolConfig.setMaxTotal(100); poolConfig....

    jedis-2.9.0.jar

    2. 设置超时时间:`jedis.connect();` 或 `jedis.connect(new RedisSentinelConfiguration(), timeout);` 3. 检查连接是否成功:`if (jedis.isConnected()) { ... }` Jedis 支持多种数据类型的操作,包括字符串...

    java操作Redis缓存设置过期时间的方法

    Java 操作 Redis 缓存设置过期时间的方法可以使用 Jedis 客户端的 `expire` 方法或 `set` 方法的其他变体,合并设置值和过期时间,以避免多并发下的问题。在实际应用中,我们可以根据需要选择合适的方法来设置过期...

    jedis-3.3.0.jar文件

    3. **超时设置**:定义获取连接或返回连接的超时时间,避免阻塞应用。 4. **测试策略**:配置检测连接是否有效的策略,例如定期检查或在获取连接前进行检查。 **使用示例** ```java JedisPoolConfig poolConfig = ...

    jedis工具类

    这包括设置Redis服务器的IP地址、端口号、密码(如果启用了认证)以及超时时间等。例如: ```java public class JedisUtil { private static JedisPool pool; static { JedisPoolConfig config = new ...

    jedis-2.4.2版本

    2. **合理配置**:根据应用的并发量和Redis服务器的性能调整Jedis的超时时间、重试策略等参数。 3. **错误处理**:正确捕获并处理Jedis抛出的异常,避免程序因网络问题或其他异常情况而中断。 4. **批量操作**:尽...

    jedis简单实例

    - **配置参数调整**:根据实际需求调整Jedis的超时时间、重试策略等。 **6. 示例代码** 下面是一个简单的Jedis应用示例,展示了如何使用Jedis进行字符串操作、哈希操作和连接池的使用。 ```java import redis....

    java调用redis工具类jedis

    Java调用Redis工具类Jedis是Java开发...5. 使用合适的超时设置,避免因网络延迟导致的连接问题。 通过理解并熟练运用这些知识点,你将能够有效地使用Java通过Jedis与Redis进行数据交互,实现高效的数据存储和读取。

    jedis接口API

    7. `expire(String key, int seconds)`:为键设置过期时间(以秒为单位),超时后键将自动删除。 8. `expireAt(String key, long unixTime)`:用 Unix 时间戳设置键的过期时间。 9. `ttl(String key)`:查询键的剩余...

    英文 Jedis API 2.9.0

    例如,`jedis.set("key", "value")`用于设置键值对,`jedis.get("key")`用于获取值。 - **哈希(Hashes)**:哈希数据类型允许存储键值对的集合。`hset`、`hget`、`hgetAll`、`hdel`等方法用于操作哈希。如`jedis....

    jedis 和 common-pool

    标题中的“jedis”和“common-pool”指的是在Java开发中常用的两个库,它们分别是Jedis和Apache Commons Pool。...在实际项目中,我们还需要关注连接池的大小设置、超时策略、异常处理等细节,以达到最佳的性能表现。

    jedis-2.0.o

    2. 配置合适的超时时间,防止阻塞操作导致应用僵死。 3. 对于大量操作,考虑使用事务或批处理以提高性能。 4. 注意及时释放资源,如关闭连接,避免内存泄漏。 总结,Jedis 2.0.0 是 Java 开发者与 Redis 交互的首选...

    jedis pool配置

    6. **Timeout**: 连接超时时间,单位通常为毫秒。 7. **Password**: 如果Redis服务器设置了密码,这里需要提供。 8. **Database**: 默认数据库编号,Redis支持0到15个数据库。 9. **ClientName**: 可选,为连接指定...

    jedis-2.9.0源码+jar包

    6. **连接配置**:用户可以通过配置参数设置超时时间、最大空闲连接数、最小空闲连接数等,以适应不同的应用场景。 **三、Jedis 2.9.0的源码分析** 1. **设计模式**:Jedis的源码中应用了多种设计模式,如工厂模式...

    jedis-2.9.0 最新版Redis客户端CSDN下载

    3. 执行命令:如`jedis.set("key", "value")`来设置键值对,`jedis.get("key")`来获取值。 4. 关闭连接:操作完成后,记得关闭Jedis实例或释放连接池中的连接。 在实际应用中,还需要注意以下几点: - 错误处理:...

    jedis-2.9.0+commons-pool2-2.4.2redis依赖包

    在实际应用中,我们需要配置JedisPoolConfig,设置如最大活动对象数、最大空闲对象数、超时时间等参数,以满足应用的特定需求。 在使用这个依赖包时,我们需要在项目中引入jedis-2.9.0.jar和commons-pool2-2.4.2....

    jedis-2.0.0

    2. **合理设置超时时间**:根据实际网络环境调整连接和操作超时时间,防止阻塞。 3. **批量操作**:尽可能批量处理数据,减少网络交互次数。 4. **缓存结果**:对于不常变的数据,可以考虑缓存结果,减少对Redis的...

    jedis 2.9.0 API、jar包、source

    String value = jedis.get("key"); ``` Jedis支持多种连接池管理工具,如Apache Commons Pool2,这在处理大量并发请求时尤为重要,可以有效管理和重用连接,提高性能。此外,Jedis还支持配置超时、密码认证、选择...

    springboot-jedis.zip

    # 可选配置:如密码、数据库索引、连接超时时间等 ``` 三、创建RedisTemplate Spring Data Redis提供了一个名为`RedisTemplate`的模板类,它是操作Redis的主要接口。我们可以通过Spring Boot的自动配置来获取实例...

Global site tag (gtag.js) - Google Analytics