`

redis应用于缓存

阅读更多
import redis.clients.jedis.Jedis;
public class RedisJava {
private static String host = "192.168.1.101";

public static void main(String[] args) {
//isServerRunning();

// set(); //1.保存放键/值对

// setSigleList(); //2.保存List

// getRedisServerAllKeys(); //3.获取所有的key

// setSingleMap(); //4.保存Map

//setObject(); //5.保存序列化的对象

setObjectWithTimeout(); //6.保存序列化的对象并设置超时时间

//setJson(); //
}

private static void isServerRunning(){
  //连接本地的 Redis 服务
      Jedis jedis = new Jedis(host);
      System.out.println("Connection to server sucessfully");
      //查看服务是否运行
      System.out.println("Server is running: "+jedis.ping());
}

static void set(){
//连接本地的 Redis 服务
      Jedis jedis = new Jedis(host);
      System.out.println("Connection to server sucessfully");
      //设置 redis 字符串数据
      jedis.set("w3ckey", "Redis tutorial");
     // 获取存储的数据并输出
     System.out.println("Stored string in redis:: "+ jedis.get("w3ckey"));
}

static void setSigleList(){
//连接本地的 Redis 服务
      Jedis jedis = new Jedis(host);
      System.out.println("Connection to server sucessfully");
      //存储数据到列表中
      jedis.lpush("tutorial-list", "Redis");
      jedis.lpush("tutorial-list", "Mongodb");
      jedis.lpush("tutorial-list", "Mysql");
     
      jedis.lpush("tutorial-list", "Mysql2");
      jedis.lpush("tutorial-list", "Mysql3");
      jedis.lpush("tutorial-list", "Mysql4");
      jedis.lpush("tutorial-list", "Mysql5");
     // 获取存储的数据并输出
     List<String> list = jedis.lrange("tutorial-list", 0 ,2);
     for(int i=0; i<list.size(); i++) {
       System.out.println("Stored string in redis:: "+list.get(i));
     }
    
     System.out.println();
     list = jedis.lrange("tutorial-list", 1, 2);
     for(int i=0; i<list.size(); i++) {
       System.out.println("Stored string in redis:: "+list.get(i));
     }
    
     String val = jedis.lpop("tutorial-list"); //移除list.get(0)并返回值
     System.out.println("list.get(0): "+val);
    
     for(int i=0; i<list.size(); i++) {
       System.out.println("Stored string in redis:: "+list.get(i));
}
}

static void getRedisServerAllKeys(){
//连接本地的 Redis 服务
      Jedis jedis = new Jedis(host);
      System.out.println("Connection to server sucessfully");
     
     // 获取数据并输出
     Set<String> list = jedis.keys("*");
     String key = null;
     for(Iterator it = list.iterator(); it.hasNext();) {
       key = (String)it.next();
       System.out.println("List of stored keys:: "+key);
     }
}

static void setSingleMap(){
Jedis jedis = new Jedis(host);
Map<String, String> map = new HashMap<String, String>();
map.put("name", "fujianchao");
map.put("password", "123");
map.put("age", "12");
// 存入一个map
jedis.hmset("user", map);
// map key的个数
System.out.println("map的key的个数" + jedis.hlen("user"));
// map key
System.out.println("map的key" + jedis.hkeys("user"));
// map value
System.out.println("map的value" + jedis.hvals("user"));
// (String key, String... fields)返回值是一个list
List<String> list = jedis.hmget("user", "age", "name");
System.out.println("redis中key的各个 fields值:"
+ jedis.hmget("user", "age", "name") + list.size());
// 删除map中的某一个键 的值 password
// 当然 (key, fields) 也可以是多个fields
jedis.hdel("user", "age");
System.out.println("删除后map的key" + jedis.hkeys("user"));

jedis.hset("user", "num", "100");
System.out.println("新增后map的key" + jedis.hkeys("user"));
}

static void setObject(){
Jedis jedis = new Jedis(host);

User user = new User();
user.setName("张三");
user.setId(1000);

jedis.set("user1".getBytes(), SerializationUtil.serialize(user));

byte[] val = jedis.get("user1".getBytes());
User u1 = (User)SerializationUtil.deserialize(val);
System.out.println(u1.getName());
}

//redis缓存
static void setObjectWithTimeout(){
Jedis jedis = new Jedis(host);

User user = new User();
user.setName("张三");
user.setId(1000);

jedis.set("user1".getBytes(), SerializationUtil.serialize(user));
int timeout=2;
jedis.expire("user1".getBytes(), timeout); //2秒过期

byte[] val = jedis.get("user1".getBytes());
User u1 = (User)SerializationUtil.deserialize(val);
System.out.println(u1.getName());

try {
Thread.currentThread().sleep(3000); //阻塞3秒
} catch (InterruptedException e) {
e.printStackTrace();
}
val = jedis.get("user1".getBytes());
// u1 = (User)SerializationUtil.deserialize(val);
System.out.println(val); //超时值为空
}

}

public class SerializationUtil {
    /**
     * 序列化
     *
     * @param object
     * @return
     */
    public static byte[] serialize(Object object) {
        ObjectOutputStream oos = null;
        ByteArrayOutputStream baos = null;
        try {
            baos = new ByteArrayOutputStream();
            oos = new ObjectOutputStream(baos);
            oos.writeObject(object);
            byte[] bytes = baos.toByteArray();
            return bytes;
        } catch (Exception e) {
        }
        return null;
    }

    /**
     * 反序列化
     *
     * @param bytes
     * @return
     */
    public static Object deserialize(byte[] bytes) {
        ByteArrayInputStream bais = null;
        try {
            bais = new ByteArrayInputStream(bytes);
            ObjectInputStream ois = new ObjectInputStream(bais);
            return ois.readObject();
        } catch (Exception e) {

        }
        return null;
    }

}
分享到:
评论

相关推荐

    springMybatis+redis三级缓存框架

    综上所述,"springMybatis+redis三级缓存框架"是一种有效的优化方案,它结合了MyBatis的二级缓存和Redis的分布式缓存能力,能够在保证系统响应速度的同时,降低数据库的负载,提升整体应用性能。在实际应用中,根据...

    Redis用作二级缓存

    Redis作为二级缓存是数据库系统优化的一个重要策略,特别是在高并发、大数据量的场景下,可以显著提升应用性能。在Mybatis中,二级缓存是一个跨Mapper共享的区域,用于存储查询结果,避免了重复查询数据库,从而降低...

    基于redis的分布式缓存系统架构分析_张威.pdf

    基于Redis的分布式缓存系统因其高效、灵活的特点,被广泛应用于大型应用系统中。Redis是一款开源、内存中的Key-Value存储系统,支持数据持久化,并能提供多种数据结构如List、String、Set和Hash等,这使得它在处理...

    redis本地缓存与redis缓存

    总结来说,本地缓存和Redis缓存各有优势,适用于不同的场景。理解它们的工作原理和应用场景,可以帮助我们更好地设计和优化系统的数据存储和访问策略。同时,掌握Redis的高级特性及最佳实践,能有效提升系统性能和...

    spring + ehcache + redis两级缓存

    它提供了一种快速访问最近使用(LRU)的数据的方法,支持缓存的持久化,并且可以在JVM内部或独立于应用进程运行。在Spring中,我们可以配置Ehcache作为缓存 provider,通过注解或XML配置来启用和管理缓存。 **Redis...

    php+redis服务器的缓存类

    综上所述,PHP+Redis服务器的缓存类是利用Redis的高速缓存能力来优化PHP应用程序的一种实践,通过有效管理和使用缓存,可以显著提升Web应用的性能和用户体验。在实际开发中,理解并熟练掌握这种缓存机制是非常有益的...

    Mybatis-plus基于redis实现二级缓存过程解析

    在Mybatis-plus中,二级缓存是指在应用程序中使用Redis作为缓存层,存储查询结果,以便下次查询时直接从缓存中获取数据,减少数据库查询操作的次数。 在本文中,我们将介绍如何使用Mybatis-plus基于Redis实现二级...

    Redis_Redis分布式缓存_

    Redis,作为一个高性能的键值数据存储系统,常被用作分布式缓存,以提升应用程序的性能和响应速度。本文将深入探讨Redis分布式缓存的原理、应用及其优势。 分布式缓存是解决大型互联网应用高并发访问和大数据量存储...

    redis缓存 redis缓存

    redis缓存 redis缓存

    Redis高性能缓存.pdf

    在应用场景方面,Redis适用于对读写效率要求都很高的场景,比如微博发布和计数系统。同时,它也适合那些数据处理业务复杂,对安全性要求较高的系统。由于其支持丰富的数据类型,Redis可以在服务器端直接进行复杂的...

    mybatis+redis缓存配置

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

    redis做mysql缓存服务器(公司内部培训资料)

    ### Redis作为MySQL缓存服务器(公司内部培训资料) #### 一、Redis简介 Redis是一种开源的键值存储系统,主要用于高速缓存数据。...这种方式特别适用于需要频繁读取数据但写操作相对较少的应用场景。

    redis多级缓存搭建资料

    Redis作为一款高性能的键值数据库,常被用作应用程序的缓存系统,以提高数据读取速度。在大型系统中,构建多级缓存架构是常见的优化策略,它能够更有效地利用资源,减少对主数据库的压力。本资料将详细介绍如何使用...

    redis缓存服务器

    通过理解这些基本概念和特性,你可以根据实际需求有效地利用 Redis 缓存服务器来优化应用程序性能,提高系统响应速度,并确保数据的安全性和一致性。无论是在 web 应用、数据统计、实时分析还是消息传递等领域,...

    redis数据库(缓存应用)

    redis数据库(缓存应用)

    Redis分布式缓存技术在Hadoop平台上的应用.pdf

    Redis分布式缓存技术在Hadoop平台上的应用 作为一种开源的商业化工具,Redis在Hadoop平台上的应用可以解决共享数据访问问题。通过使用Redis作为分布式缓存,可以提高Hadoop任务对共享数据的访问速度。实验结果表明...

    Spring集成Redis进行数据缓存

    通过以上配置和注解的使用,我们可以轻松地在Spring MVC应用中实现Redis的缓存功能。这不仅提高了数据访问的效率,还降低了数据库的压力,为大型Web应用提供了强大的性能优化手段。 在压缩包文件“Spring基于注解...

    Redis缓存应用.mp4

    Redis缓存应用.mp4

    Redis应用场景--Redis作者谈Redis应用场景

    ### Redis应用场景解析 Redis作为一款开源的键值存储系统,凭借其高性能、低延迟的特点,在众多应用场景中展现出独特的价值。本文将围绕Redis作者@antirez分享的几个典型应用场景进行深入探讨,旨在帮助读者更好地...

    springboot+jpa(hibernate配置redis为二级缓存) springboot2.1.4

    在本文中,我们将深入探讨如何在Spring Boot 2.1.4.RELEASE项目中结合JPA(Java Persistence API)和Hibernate实现Redis作为二级缓存。首先,我们需要理解这些技术的基本概念。 Spring Boot 是一个用于简化Spring...

Global site tag (gtag.js) - Google Analytics