千家信息网

redis缓存的简单操作(get、put)

发表于:2026-11-02 作者:千家信息网编辑
千家信息网最后更新 2026年11月02日,本文介绍简单的redis缓存操作,包括引入jedisjar包、配置redis、RedisDao需要的一些工具、向redis中放数据(put)、从redis中取数据(get)、访问redis时的逻辑一、
千家信息网最后更新 2026年11月02日redis缓存的简单操作(get、put)

本文介绍简单的redis缓存操作,包括引入jedisjar包、配置redis、RedisDao需要的一些工具、向redis中放数据(put)、从redis中取数据(get)、访问redis时的逻辑

一、引入jedis jar包

 redis.clients jedis 2.7.3 com.dyuproject.protostuff protostuff-core 1.0.8 com.dyuproject.protostuff protostuff-runtime 1.0.8

注意:为什么要引入序列化依赖jar包protostuff?

1)从redis中取出的数据是序列化的,我们需要使用protostuff的反序列化操作,讲序列化对象转化成我们的需要的对象

2)向redis中放入数据时,我们需要先使用protostuff的序列化操作,将对象转化成序列化对象,才能放入redis

二、在spring配置文件中注入redis,放入spring的ioc容器

    

注意:

1)这里的RedisDao路径是我的包路径,注意你在配置的时候应使用你自己的路径

2)这里使用本地的redis服务localhost

3)redis服务的默认端口是6379

三、RedisDao需要的一些工具

//redis连接池 private final JedisPool jedisPool;//根据对象的字节码文件,生成空对象 private RuntimeSchema schema = RuntimeSchema.createFrom(Object.class); //Object.class:获取对象的字节码  public RedisDao(String ip, int port){  jedisPool = new JedisPool(ip, port); }

注意:

1)RedisDao需要redis的连接池JedisPool,就好比JDBC的数据库连接池一样。我们在RedisDao的构造器中会初始化这个连接池

2)我们需要一个可以根据对象的字节码文件生成空对象的工具 RuntimeSchema。你要使用什么对象,你就在Object的位置写入你的对象(Object.class:获取对象的字节码文件)

3)连接池JedisPool的初始化需要两个参数:ip、port

四、向redis中放数据(put)

//将对象缓存到redis public String putObject(Object obj){  //缓存逻辑:Object --> 序列化 --> byte[] --> 缓存到redis  try {   Jedis jedis = jedisPool.getResource(); //获取redis的连接对象,相当于JDBC的connection   try{    String key = "Object:"+obj.getId();    //进行序列化    byte[] bytes = ProtostuffIOUtil.toByteArray(seckill, schema,       LinkedBuffer.allocate(LinkedBuffer.DEFAULT_BUFFER_SIZE)); //如果对象过大,会进行缓冲    //开始缓存    int timeout = 60*60; //设置超时时间 一小时,通过超时维护一致性    String result = jedis.setex(key.getBytes(), timeout, bytes);    return result;   }finally{    jedis.close();   }  } catch (Exception e) {   e.printStack();  }  return null; }

注意:

1)缓存逻辑:Object --> 序列化操作 --> byte[] --> 写入redis。也就是先把对象序列化,再写入redis!

2)我们在操作redis之前必须先拿到redis的连接对象,从连接池拿

五、从redis中取数据(get)

 //从redis缓存中查询 public Object getObject(long id){  //redis操作逻辑  try {   Jedis jedis = jedisPool.getResource(); //缓存连接对象,相当于数据库连接对象connection   try {    String key = "Object:"+id;    //实体对象并没有实现内部序列化操作    //缓存逻辑:getByte[] --> 反序列化 --> Object    byte[] bytes = jedis.get(key.getBytes()); //从jedis中获取目标对象的序列化对象数组    if(bytes != null){     //反序列化逻辑     Object obj = schema.newMessage(); //通过schema生成一个新的空对象     ProtostuffIOUtil.mergeFrom(bytes, obj, schema); //进行反序列化操作     return obj;    }       } finally {    jedis.close();   }      } catch (Exception e) {        e.printStack();  }  return null; }

注意:

1)取数据逻辑:redis --> 得到byte[] --> 反序列化 --> Object

2)我们在放数据的时候,是以键值对的形式:id --> obj。我们在取数据的时候,就是根据id来取的

六、查询redis时的逻辑

伪代码:

get form redis_cache    //首先查询redisif null       //如果没有 get from db     //再从数据库db查询 if null      //如果仍然没有  return null    //那么返回空 else       //否则  put into redis_cache  //现将数据放入redis  return obj    //再放回数据else        //如果从redis中查询到了 return obj     //那么直接返回数据

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。

对象 序列 数据 缓存 逻辑 查询 字节 文件 中放 工具 数据库 时候 路径 生成 配置 就是 服务 一致 一致性 两个 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 南京欣网互联网络科技 互联网科技图片 广东万易互联网科技有限公司惠州分公司 中关村互联网科技集团 深圳科技互联网 深圳互联网科技公司 成都互联网科技公司 北京互联网络科技有限公司 云电互联网科技 互联网养老 桔豆科技 互联网汽车科技小镇 银川新华互联网科技职业技术培训学校图片 注册互联网科技公司经营范围大全 哈尔滨屹滨互联网科技有限公司 恒生互联网科技业指数调整周期 易企秀互联网科技是做什么的 国产互联网科技公司 湖北辰鑫科技互联网 安徽零酒互联网科技有限公司 互联网科技创新方面的资料 互联网金融监管科技数据 嘟嘟瓜互联网科技 唐信互联网科技 互联网科技美容 广州慧亚互联网科技怎么样 互联网科技热点资讯 坤平互联网科技 深圳育鹏互联网科技有限公司招聘 互联网科技大赛获奖感言 小米互联网科技园入驻
0