返回顶部
首页 > 资讯 > 数据库 >redis缓存的简单操作(get、put)
  • 380
分享到

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

缓存操作简单 2022-06-04 17:06:51 380人浏览 安东尼
摘要

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

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

一、引入jedis jar包


<!-- java访问redis的jar包jedis -->
<dependency>
 <groupId>redis.clients</groupId>
 <artifactId>jedis</artifactId>
 <version>2.7.3</version>
</dependency>
<!-- protostuff序列化依赖 -->
<dependency>
 <groupId>com.dyuproject.protostuff</groupId>
 <artifactId>protostuff-core</artifactId>
 <version>1.0.8</version>
</dependency>
<dependency>
 <groupId>com.dyuproject.protostuff</groupId>
 <artifactId>protostuff-runtime</artifactId>
 <version>1.0.8</version>
</dependency>

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

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

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

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


<!-- 注入redis dao -->
<bean id="redisDao" class="org.demo.dao.cache.RedisDao">
  <constructor-arg index="0" value="localhost"></constructor-arg>
  <constructor-arg index="1" value="6379"></constructor-arg>
</bean>

注意:

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

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

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

三、RedisDao需要的一些工具


//redis连接池
 private final JedisPool jedisPool;//根据对象的字节码文件,生成空对象
 private RuntimeSchema<Object> 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    //首先查询redis
if null       //如果没有
 get from db     //再从数据库db查询
 if null      //如果仍然没有
  return null    //那么返回空
 else       //否则
  put into redis_cache  //现将数据放入redis
  return obj    //再放回数据
else        //如果从redis中查询到了
 return obj     //那么直接返回数据

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

您可能感兴趣的文档:

--结束END--

本文标题: redis缓存的简单操作(get、put)

本文链接: https://lsjlt.com/news/11769.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • redis缓存的简单操作(get、put)
    本文介绍简单的redis缓存操作,包括引入jedisjar包、配置redis、RedisDao需要的一些工具、向redis中放数据(put)、从redis中取数据(get)、访问redis时的逻辑 一、引入...
    99+
    2022-06-04
    缓存 操作 简单
  • laravel操作redis和缓存操作
    一:操作redis 1:redis拓展安装 composer require predis/predis 或者你也可以通过 PECL 安装 PhpRedis PHP 扩展,安装方法比较复杂,个人不推荐 2:配置redis 在con...
    99+
    2023-09-04
    laravel php redis 缓存 Powered by 金山文档
  • Laravel操作redis和缓存操作详解
    目录一:操作redis1:redis拓展安装2:配置redis3:操作redis二:缓存操作1:缓存配置2:缓存操作一:操作redis 1:redis拓展安装 composer re...
    99+
    2023-02-13
    Laravel操作redis Laravel 缓存操作 Laravel redis
  • Redis缓存更新一致性的简单介绍
    这篇文章主要介绍“Redis缓存更新一致性的简单介绍”,在日常操作中,相信很多人在Redis缓存更新一致性的简单介绍问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Redis缓...
    99+
    2024-04-02
  • springboot使用shiro-整合redis作为缓存的操作
    说在前面 本来的整合过程是顺着博客的顺序来的,越往下,集成的越多,由于之前是使用ehcache缓存,现在改为redis,限制登录人数 以及 限制登录次数等 都需要改动,本篇为了简单,...
    99+
    2024-04-02
  • Python如何操作Redis缓存数据库
    本篇内容主要讲解“Python如何操作Redis缓存数据库”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python如何操作Redis缓存数据库”吧!今天我们来学习如何使用Python操作Red...
    99+
    2023-06-02
  • SpringBoot中的Redis 缓存问题及操作方法
    目录1、五大基本数据类型和操作1.1 字符串-string1.2 列表-list1.3 集合-set1.4 键值对-hash1.5 有序集合-zset2、Redis整合2.1 spr...
    99+
    2022-11-13
    SpringBoot Redis 缓存 SpringBoot缓存
  • 如何在java项目中操作Redis缓存
    这篇文章给大家介绍如何在java项目中操作Redis缓存,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。1.导入必须的Jar包使用Java操作Redis需要两个必须的Jar包:jedis-2.5.1.jar 和 ...
    99+
    2023-05-31
    java redis
  • Redis中五种数据类型简单操作
    Redis中五种数据类型简单操作 提出问题 Redis五种数据类型的简单增删改查命令??? 解决问题 假设你已经安装Redis服务器; 假设你已经打开Redis cli命令行工具; 假设你对Redis有...
    99+
    2022-06-04
    五种 数据类型 操作
  • Python的简单socket操作
    import sockethost = ''port = 12345s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)s.setsockopt(socket.SOL_SOCKET, s...
    99+
    2023-01-31
    操作 简单 Python
  • window手动操作清理redis缓存的技巧总结
    redis缓存知识点: 一、缓存穿透 缓存穿透是指查询一个缓存和数据库中都没有的数据,由于大部分缓存策略是被动加载的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求...
    99+
    2024-04-02
  • redis缓存的作用是什么
    redis缓存的作用:提高系统的性能,减少IO的操作。关系型数据库的扩展性不强,难以改变表结构,而redis缓存降低数据库的负载。解决应用服务器的cpu和内存压力,并且读取速度快,对较大数据处理快。...
    99+
    2024-04-02
  • PHP缓存技术的简单介绍
    本篇内容介绍了“PHP缓存技术的简单介绍”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!php缓存技术的应用时相当普遍的,也许有些人还对这项技...
    99+
    2023-06-17
  • Spring Boot中怎么利用Redis 实现缓存操作
    这期内容当中小编将会给大家带来有关Spring Boot中怎么利用Redis 实现缓存操作,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、缓存的应用场景二、更新缓存的策略三、运行 springboot-...
    99+
    2023-06-17
  • vue中的cookies缓存存值方式超简单
    目录使用vue-cookies插件第一步:安装第二步:全局引入 main.js 无需多言第三步:设置cookies第四步:获取cookiesvue使用缓存遇到的坑总结(1) good...
    99+
    2022-11-13
    vue cookies cookies缓存存值 vue 缓存
  • python3对emqtt的简单操作
    需要先下载外部包 pip install paho-mqtt 发布者 import paho.mqtt.client as mqtt HOST = "192.168.44.31" PORT = 1883 def Publish_Mess...
    99+
    2023-01-31
    操作 简单 emqtt
  • hibernate入门的简单操作
    单表基本操作首先映射要操作的数据库表:以Student为例:public class Student{ private Integer SId; private String Sname; private String SAge; publ...
    99+
    2023-06-03
  • springboot整合EhCache实现单服务缓存的操作方法
    目录一、整合Spring Cache 与Ehcache二、缓存的使用方法三、缓存使用中的坑在Spring框架内我们首选Spring Cache作为缓存框架的门面,之所以说它是门面,是...
    99+
    2024-04-02
  • 搭建单机Redis缓存服务的实现
    目录1.安装 gcc2.下载Redis 安装包3.解压下载的redis-5.0.14.tar.gz文件4.查看解压文件情况5.进入解压的redis-5.0.14目录下,编译和安装6.查看安装后的redis目录7.进入re...
    99+
    2023-04-10
    搭建Redis缓存 Redis缓存
  • 第19章 简单的MySQL操作
    1. 如何更改系统环境变量PATH?vim /etc/profile.d/path.sh  加入  #!/bin/bash  export PATH=$PATH:/u...
    99+
    2024-04-02
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作