jedis操作set_使用Redis来进行缓存操作
在今日,发现有部分功能因SQL语句查询过于缓慢,并且无法在进行优化(由于部分原因导致SQL固定,数据库结构无法改变,外键已经无法设置),但是在我尽力压缩时间后每一次的查询也是有7-8s的时间,这是绝对无法接受的,因此我想到使用Redis进行远程读写来实现一个伪缓存的操作。
在上篇文章中我已经讲过,Redis是基于内存的NOSQL数据库,拥有每秒十万级别的读写能力,因此用它来实现非常完美,具体步骤如下:
1.安装redis数据库到虚拟机(服务器)中,详情见上篇文章
2.在项目中进行远程调用:
①.笔者比较喜欢使用maven作为包依赖,所以在这里直接讲解maven的做法:
首先导包
<!--redis连接所需--><!--redis-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.9.0</version>
</dependency><!-- config redis data and client jar-->
<dependency>
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>2.0.10.RELEASE</version>
</dependency>
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.4.2</version>
</dependency><!--JSON转化工具-->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.58</version>
</dependency><!--end-->
这里的包除了最后一个,其它都是必须的!!!
②.创建redis-context.xml配置文件,配置连接池,连接工厂,kv序列化器以及redis模板对象(PS:这里可以不用redis模板对象也可以,但是就和我们的SpringCloud一样,不可能上手直接Feign来远程调用,一般都是用模板调用来学习)
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:context="http://www.springframework.org/schema/context" xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans.xsd http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-4.3.xsd"><!-- 连接池配置 -->
<bean id="poolConfig" class="redis.clients.jedis.JedisPoolConfig"><!-- 最大空闲数 -->
<property name="maxIdle" value="50"></property><!-- 最大连接数 -->
<property name="maxTotal" value="100"></property><!-- 最大等待时间 -->
<property name="maxWaitMillis" value="20000"></property>
</bean><!-- 配置连接工厂 -->
<bean id="connectionFactory" class="org.springframework.data.redis.connection.jedis.JedisConnectionFactory">
<property name="hostName" value="192.168.3.139"></property>
<property name="port" value="6379"></property>
<property name="password" value="root"></property>
<property name="poolConfig" ref="poolConfig"></property>
</bean><!-- 配置 key 和 value 的序列化器 -->
<bean id="jdkSerializationRedisSerializer" class="org.springframework.data.redis.serializer.JdkSerializationRedisSerializer"/>
<bean id="stringRedisSerializer" class="org.springframework.data.redis.serializer.StringRedisSerializer"/><!-- 配置Redis模板对象 -->
<bean id="redisTemplate" class="org.springframework.data.redis.core.RedisTemplate">
<property name="connectionFactory" ref="connectionFactory"></property>
<property name="keySerializer" ref="stringRedisSerializer"></property>
<property name="valueSerializer" ref="jdkSerializationRedisSerializer"></property>
</bean>
</beans>
这里的一些基本信息是外置比较好,当然,内置也行。
③.在spring的核心xml配置文件中进行导入:
<import resource="classpath:redis-context.xml"></import>
④.测试:
@Autowiredprivate RedisTemplate redisTemplate;
@RequestMapping(value = "redis",method = RequestMethod.GET)public void redis(){
System.out.println("成功进入到redis末班中");redisTemplate.opsForValue().set("hello","world");
System.out.println("redis设值语句执行成功!");
}
成功输出语句即完成成功!
如果失败的话大概率是你redis的服务没有开启或者你的防火墙设置外部不允许连接,鹏大道这种问题请查看笔者的上一篇文章,处理方法有写过,比较简单,都是操作redis目录中的redis.conf配置文件
jedis操作set_使用Redis来进行缓存操作相关推荐
- jedis操作set_Jedis对redis的五大类型操作代码详解
本篇主要阐述Jedis对redis的五大类型的操作:字符串.列表.散列.集合.有序集合. JedisUtil 这里的测试用例采用junit4进行运行,准备代码如下: private static fi ...
- SpringBoot2.X 整合Redis实现简单缓存操作
文章包含项目全部文件代码: pom文件 application.propertis 配置文件 SpringBoot启动类 Redis配置类 Controller测试类 一.pom文件 web依赖,非必 ...
- php redis set集合操作,php对redis的set(集合)操作
<?phprequire ('redistest.php');/*** Class setcache*集合类型的常用操作是向集合中加入或删除元素.判断某个元素是否存在等,由于集合类型在Redis ...
- Redis之sql缓存
1.环境搭建 <!-- RedisTemplate --><dependency><groupId>org.springframework.boot</gro ...
- redis做mysql缓存的优点_面试官:如何保障数据库和redis缓存的一致性
随着互联网的高速发展,使用互联网产品的人也越来越多,团队不可避免得也会面对越来越复杂的高并发业务场景(如下图),比如热点视频/文章的观看(读场景),热点视频/文章的评论,点赞等(写场景). 众所周知, ...
- jedis操作set_使用 JedisAPI 操作 Redis
一 使用 JedisAPI 操作 Redis Jedis 集成了 redis 的一些命令操作,封装了对 redis 命令的 Java 客户端. 1 使用 Jedis 操作 Redis 单机版 1.1 ...
- Redis实现求交集操作结果缓存的设计方案
Redis的集合操作 实话说,Redis提供的集合操作是我选择它成为内存数据库的一个主要理由,它弥补了传统关系型数据库在这方面带来的复杂度,使得只需要简单的一个命令就可以完成一个复杂SQL任务,并且交 ...
- jedis使用_Mybatis的二级缓存、使用Redis做二级缓存
什么是二级缓存? 二级缓存和一级缓存的原理是一样的,第一次查询,会将数据放入缓存中,然后第二次查询则会直接去缓存中取.但是一级缓存是基于的sqlSession,而二级缓存是基于mapper文件的nam ...
- Java中使用Jedis连接Redis对Hash进行操作的常用命令
场景 Centos中Redis的下载编译与安装(超详细): https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103967334 Re ...
最新文章
- 我酸了~腾讯员工平均月薪 7.6 万 | 每日趣闻
- 曼昆《经济学原理》(第五版)习题解答 第三章 相互依存性与贸易的好处
- Spring.Net 能为我们做点什么
- 当网页太多时,用锚点 以及超链接的使用
- 【51单片机快速入门指南】7:片上EEPROM
- 【ElasticSearch】ElasticSearch 中使用衰减函数来完美你的搜索结果
- Microsoft.Ink namespace
- greenplum数据导入到mysql,将数据从DB2数据库传输到greenplum数据库
- c int转字符串_零基础如何学好Python 之int 数字整型类型 定义int()范围大小转换...
- 不用花钱,让你百度网盘满速下载的神器!简单实用教程
- 小米8,全面屏手机判断是否显示虚拟键
- http状态404 vscode_HTTP常见状态码(404、400、500)等错误
- MySQL 删除大量数据
- 如何一次性改变word中的数字和字母的字体属性
- 现在机器翻译效果已经那么牛逼了!?
- 编译单个java文件
- 国际会议oral经验浅谈
- 女博士年薪156万入职华为!网友:实力演绎美貌与智慧并重!
- ipv6修改DNS服务-首选DNS服务器:240c::6666
- cool ! 3d plane !