`

清理redis缓存数据

    博客分类:
  • java
阅读更多

import java.util.Timer;

import java.util.TimerTask;

 

import redis.clients.jedis.Jedis;

import redis.clients.jedis.Transaction;

 

 

public class Simple7 {

static int EXPIRED_SENCONDS = 60; //60秒过期,使用线程清除过期的数据

 

public static void main(String[] args) {

 

isServerRunning();

Jedis client = getConnection();

 

client.set("user:zhangsan", "1"); //user表

client.hset("time:user", "user:zhangsan", expiredDate()); // time表-记录键的过期时间

 

//周期性的删除过期数据(user表)

Timer timer = new Timer();

long delay = 1000;

long period = 30 * 1000;

TimerTask task = new ClearExpiredKeys(client);

timer.schedule(task, delay, period);

}

 

//redis事务

private static void transaction(Jedis client){

Transaction tr = client.multi();

tr.hset("user:www", "query", "1");

tr.exec();

}

 

//ping

private static void isServerRunning(){

String host = "127.0.0.1";

     Jedis jedis = new Jedis(host, 6379);

     System.out.println("Connection to server sucessfully");

     System.out.println("Server is running: "+jedis.ping());

}

 

static Jedis getConnection(){

String host = "127.0.0.1";

     Jedis client = new Jedis(host, 6379);

   return client;

}

 

static String expiredDate(){

Date d = new Date();

d.setSeconds(d.getSeconds() + EXPIRED_SENCONDS);

SimpleDateFormat f = new SimpleDateFormat("HHmmss");

return f.format(d);

}

 

 

}

 

 

class ClearExpiredKeys extends TimerTask{

private Jedis client;

 

public ClearExpiredKeys(Jedis client){

this.client = client;

}

 

@Override

public void run() {

 

Set<String> fields = client.hkeys("time:user");

Iterator<String> it = fields.iterator();

String field = null;

String expiredDate = null;

Date now = new Date();

SimpleDateFormat f = new SimpleDateFormat("HHmmss");

int inow = new Integer(f.format(now));

while(it.hasNext()){

field = it.next();

expiredDate = client.hget("time:user", field);

if(new Integer(expiredDate) < inow){

//client.del("user:zhangsan");

client.del(field);

client.hdel("time:user", field);

System.out.println("-- 删除键 " + field);

}

}

//client.close();

}

}

分享到:
评论

相关推荐

    mybatis+redis缓存配置

    ### MyBatis与Redis缓存配置详解 #### 一、MyBatis缓存机制概述 在MyBatis中,缓存是一项重要的性能优化措施。它能够显著减少数据库的访问次数,提高应用程序的响应速度。MyBatis提供了两种级别的缓存支持:一级...

    redis缓存管理工具

    通过使用像Redis Desktop Manager这样的工具,开发者和运维人员能够更加高效地管理和维护Redis缓存,提高工作效率,同时确保数据的安全和一致性。无论你是初学者还是经验丰富的开发者,这样的工具都将极大地提升你的...

    redis缓存的示例代码

    1. **Redis缓存的优势** - 高性能:Redis是基于内存的数据结构存储系统,读写速度非常快。 - 支持多种数据结构:如字符串、哈希、列表、集合、有序集合等。 - 支持持久化:通过RDB或AOF方式保存数据到磁盘,防止...

    Spring Cache手动清理Redis缓存

    Spring Cache手动清理Redis缓存 Spring Cache是Spring框架中的一种缓存机制,它可以将缓存数据存储在Redis中。...使用Spring Cache手动清理Redis缓存可以帮助我们更好地管理缓存数据,释放内存空间和更新缓存数据。

    redis缓存客户端管理工具

    连接redis服务器,管理缓存数据,新增、修改、删除、刷新

    springboot-redis缓存+分布锁

    在这个"springboot-redis缓存+分布锁"的项目中,我们将探讨如何在SpringBoot应用中集成Redis来实现缓存管理和分布式锁。 1. **Redis缓存** Redis作为一个键值对数据库,因其高效读写性能和丰富的数据结构(如字符...

    shell脚本批量删除redis数据.txt

    linux系统下,模糊匹配,可批量删除redis的key,修改ip即可使用。试用场景:redis内存爆满、redis不能定时清理数据等。

    Spring集成Redis进行数据缓存

    本文将深入探讨如何使用SpringMVC结合Redis实现数据缓存,以及Spring是如何通过注解来简化缓存管理的。 首先,Redis是一个开源的、基于内存的数据存储系统,常用于做高速缓存,它支持多种数据结构如字符串、哈希、...

    清空redis缓存.txt

    根据提供的文件信息,本文将详细解释与“清空Redis缓存”相关的知识点,包括如何访问Redis、登录Redis、查看及管理Redis中的键值对等操作。 ### 一、Redis简介 Redis(Remote Dictionary Server)是一种开源的键值...

    springboot-mybatis-redis缓存集成

    6. Redis缓存配置:在`@Configuration`类中配置RedisTemplate和StringRedisTemplate,用于操作Redis。 7. 使用缓存:在需要缓存的方法上使用`@Cacheable`注解,指定缓存的key和value生成策略。 8. 清除缓存:使用`@...

    window手动操作清理redis缓存的技巧总结

    本文将详细介绍两种在Windows上清理Redis缓存的方法,并探讨Redis缓存可能出现的问题——缓存穿透、缓存击穿和缓存雪崩。 首先,了解Redis缓存的清理方法: 1. 使用Redis命令行工具: Redis提供了命令行客户端`...

    SSM整合Redis缓存Demo

    SSM整合Redis缓存Demo是基于Spring、SpringMVC和MyBatis的高效开发框架,进一步结合了Redis作为缓存技术的示例项目。这个Demo适用于开发者在MyEclipse或Eclipse环境中导入并配置数据库,只要本地已安装Redis服务器,...

    Redis缓存穿透,缓存击穿,缓存雪崩面试题解析

    3. 使用缓存失效机制,定期清理过期或无效的缓存数据,避免缓存穿透。 二、缓存击穿 缓存击穿是指在高并发的情况下,缓存中的某个热点数据失效或过期,导致大量请求直达数据库,导致数据库压力增大,甚至宕机。...

    springMybatis+redis三级缓存框架

    "springMybatis+redis三级缓存框架"是一个高效且灵活的解决方案,它将MyBatis的二级缓存与Redis相结合,形成一个三级缓存体系,以优化数据读取速度并减轻数据库压力。 首先,MyBatis作为一款轻量级的持久层框架,其...

    redis缓存最新版下载

    此外,Redis还支持过期策略,可以通过设置键的生存时间(TTL,Time to Live)来自动清理不再需要的数据。 Redis还具备丰富的特性,如发布/订阅(Pub/Sub)模式,支持消息队列,实现进程间通信;主从复制,用于构建...

    spring + ehcache + redis两级缓存

    4. **代码中使用缓存**: 在业务代码中,我们可以使用Spring的`@Cacheable`、`@CacheEvict`和`@CachePut`注解来声明方法的返回结果应被缓存,清除特定缓存项,或者在更新数据后更新缓存。 5. **监控与维护**: 最后,...

    Spring Redis缓存实例

    Spring集成Redis缓存能有效提升应用性能,减少数据库压力。通过合理配置和使用,可以在保证数据一致性的前提下,为用户提供快速响应。理解并掌握Spring Cache和Redis的集成,是优化Java Web应用的关键技能。

    redis缓存技术入门

    在Java开发中,Redis缓存技术是提升Web应用程序性能的关键工具。本教程将引导你入门Redis缓存技术,帮助你理解如何在Java环境中集成和使用Redis。 首先,让我们了解一下Redis的基本概念。Redis支持多种数据结构,如...

    基于PHP的Wordpress专用Redis缓存系统.zip

    为了最大化Redis缓存的效果,需要定期清理过期数据,避免内存占用过多。同时,合理设置Redis的过期时间、最大内存限制和数据持久化策略,以保持系统的稳定性和数据安全性。监控Redis的性能指标,如内存使用、命令...

    windows-redis缓存

    1. **缓存**:由于Redis的高性能,常被用于网站的session存储、页面静态化数据的缓存,以及数据库查询结果的缓存,以减轻数据库压力。 2. **计数器**:如统计网页访问次数、社交网络的点赞数等。 3. **排行榜**:...

Global site tag (gtag.js) - Google Analytics