`

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;
    }

}
分享到:
评论

相关推荐

    spring-ehcache-redis两级缓存

    在缓存到远程redis的同时,缓存一份到本地进程ehcache(此处的ehcache不用做集群,避免组播带来的开销),取缓存的时候会先取本地,没有会向redis请求,这样会减少应用服务器&lt;–&gt;缓存服务器redis之间的网络开销。...

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

    在应用系统当中,需要确保数据访问所具备的时效性, 将关键性的业务数据全都存储在内存当中。不过如果出现业务 范围持续拓展的情况,只是利用一台机器已然无法实现对全部 关键性业务数据的上传,所以,应该针对...

    redis数据库(缓存应用)

    redis数据库(缓存应用)

    Redis缓存应用.mp4

    Redis缓存应用.mp4

    Spring Boot整合Redis做集中式缓存

    在一些要求高一致性(任何数据变化都能及时的被查询到)的系统和应用中,就不能再使用EhCache来解决了,这个时候使用集中式缓存是个不错的选择,因此本文将介绍如何在Spring Boot的缓存支持中使用Redis进行数据缓存...

    redis应用案例_缓存歌曲最新评论.zip

    redis应用案例_缓存歌曲最新评论:java访问多数据源:redis,mysql。

    Redis高性能缓存使用指南

    主要内容  Redis 简介  Redis 特性  其他缓存对比  Redis 集群( 主从复制,Sentinel,Cluster)  Redis 应用场景  Redis 常用客户端  Redis 功能演示  Redis

    SpringBoot集成Redis缓存在电信运营系统中的应用研究.docx

    SpringBoot集成Redis缓存在电信运营系统中的应用研究.docxSpringBoot集成Redis缓存在电信运营系统中的应用研究.docxSpringBoot集成Redis缓存在电信运营系统中的应用研究.docxSpringBoot集成Redis缓存在电信运营系统...

    J2Cache 基于内存和 Redis 的两级 Java 缓存框架

    Java 两级缓存框架,可以让应用支持两级缓存框架 ehcache(Caffeine) + redis 。避免完全使用独立缓存系统所带来的网络IO开销问题。J2Cache 是 OSChina 目前正在使用的两级缓存框架(要求至少 Java 8)。第一级缓存...

    ssm框架整合redis实现缓存

    此应用为我最近探索的ssm框架整合范例以及redis 整合 ssm的demo, 给大家作为参考。

    分布式缓存Redis高级应用实战.md

    reidis介绍、为什么使用内存缓存数据库、Redis作为单线程模型为什么效率还这么高、Redis服务安装及常用命令解析、数据持久化、持久化化文件是如何恢复的、高可用主从搭建、故障转移哨兵模式、集群

    通过redis(缓存)实现单点登录

    跨应用访问 通过redis实现单点登录。即保证安全又减少多次输入密码的繁琐。

    Redis开源的高性键值存储系统广泛应用于缓存、实时消息传递

    Redis是一种开源的高性键值存储系统,被广泛应用于缓存、实时消息传递、会话管理等场景。它以内存为主要存储介质,支持持久化和数据复制,提供了丰富的数据结构和强大的操作命令,为开发者提供了一种快速、可靠的...

    Redis缓存设计与性能优化精要

    本文深入探讨了Redis缓存的关键策略与性能优化技巧。首先,解决缓存穿透,强调缓存空对象与布隆过滤器的应用。接着,针对缓存击穿与雪崩问题,提出过期...这些内容对于提升Redis应用性能、保障系统稳定性具有重要意义。

    Redis基本应用模型

    Redis基本应用模型框架图、Redis缓存层设计图、Redis缓存层架构图

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

    #资源达人分享计划#

    Redis在高速缓存系统中的应用

    随着互联网的发展,各种...缓存技术就是解决此问题的一种方案,缓存技术以其简单的设计、高效的存储性能得到了越来越广泛的应用,而内存数据库则是一种优秀的缓存解决方案。主要介绍Redis的特性以及在系统中的应用。

    秒杀系统企业级实战应用(真实工业界案例)61-65 高并发之redis缓存

    61、秒杀系统高并发之redis环境搭建 62、秒杀系统高并发之redis的java编程...63、秒杀系统高并发之redis缓存服务代码编写1 64、秒杀系统高并发之redis缓存服务代码编写2 65、秒杀系统高并发之redis缓存服务代码编写3

    Redis面试必备知识点:使用场景及应用示例详解

    Redis是一个高性能的内存数据库,被广泛应用于...最后,Redis应用示例有很多,以下是一些常见的示例: 缓存示例:将热点数据缓存到Redis中,如网站的首页数据、商品信息等。 计算结果缓存示例:将一些计算结果缓存到Red

    windows系统下的redis服务

    windows系统下redis缓存服务应用

Global site tag (gtag.js) - Google Analytics