redis整合spring

Spring Boot 整合 Redis 使用教程 作为开发者,相信大家都知道 Redis 的重要性。Redis 是使用 C 语言开发的一个高性能键值对数据库,是互联网技术领域使用最为广泛的存储中间件,它是「Remote Dictionary Service」的首字母缩写,也就是「远程字典服务」。Redis 以超高的性能、完美的文档、简洁的源码著称,国内外很多大型互联网公司都在用,比如说阿里、腾讯、GitHub、Stack Overflow 等等。当然了,中小型公司也都在用。 阅读详情

一、代码编写

package cn.sp.component;

public interface JedisClient {
	public String set(String key,String value);
	public String get(String key);
	public Long hset(String key,String item,String value);
	public String hget(String key,String item);
	//删除
	public Long del(String key);
	
	
}

package cn.sp.component.imp;

import org.springframework.beans.factory.annotation.Autowired;

import cn.sp.component.JedisClient;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

public class JedisClientImpl implements JedisClient {
	@Autowired
	private JedisPool jedisPool;
	
	@Override
	public String set(String key, String value) {
		Jedis jedis = jedisPool.getResource();
		String result = jedis.set(key, value);
		jedis.close();
		return result;
	}
	@Override
	public String get(String key) {
		Jedis jedis = jedisPool.getResource();
		String result = jedis.get(key);
		jedis.close();
		return result;
	}
	@Override
	public Long hset(String key, String item, String value) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.hset(key, item, value);
		jedis.close();
		return result;
	}
	@Override
	public String hget(String key, String item) {
		Jedis jedis = jedisPool.getResource();
		String result = jedis.hget(key, item);
		jedis.close();
		return result;
	}

	@Override
	public Long del(String key) {
		Jedis jedis = jedisPool.getResource();
		Long result = jedis.del(key);
		jedis.close();
		return result;
	}

}
@Resource
	private JedisClient jedisClient;
	
	
	@RequestMapping(value="index")
	public String index(@RequestParam(value="page",required=false)String page,@RequestParam(value="typeId",required=false)String typeId,
			@RequestParam(value="releaseDateStr",required=false)String releaseDateStr,ModelMap m,HttpServletRequest request){
		Gson gson = new Gson();
		if (StringUtils.isBlank(page)) {
			page = "1";
		}
		Map<String, Object> map = new HashMap<String,Object>();
		
		PageBean pageBean = new PageBean(Integer.parseInt(page),10);
		map.put("size", pageBean.getPageSize());
		map.put("start", pageBean.getStart());
		map.put("typeId", typeId);
		map.put("releaseDateStr", releaseDateStr);
		
		//先从缓存中取数据
		String json2 = jedisClient.hget(Constant.REDIS_LIST, page);
		Type type = new TypeToken<ArrayList<Blog>>(){}.getType();
		List<Blog> bloglist2 = gson.fromJson(json2, type);
		if(bloglist2 != null &&  bloglist2.size() > 0 &&  StringUtil.isEmpty(typeId) && StringUtil.isEmpty(releaseDateStr)){//搜索条件为空时
			m.put("blogList", bloglist2);
			
		}else{
			
			List<Blog> blogList = blogService.list(map);
			//使用jsoup抓取图片
			for (Blog blog : blogList) {
				String content = blog.getContent();
				Document doc = Jsoup.parse(content);
				Elements jpgs = doc.select("img[src$=.jpg]");
				List<String> imageList = blog.getImageList();
				for(int i=0 ; i<jpgs.size() ; i++){
					Element jpg = jpgs.get(i);
					
					imageList.add(jpg.toString());
					if (i == 2) {
						//最多三个图
						break;
					}
				}
					
			}
			
			//将blogList加入缓存,当搜索条件为空时
			if(StringUtil.isEmpty(typeId) && StringUtil.isEmpty(releaseDateStr)){
				String json = gson.toJson(blogList);
				jedisClient.hset(Constant.REDIS_LIST, page, json);
			}
			
			m.put("blogList", blogList);
		}
		
		
		//先判断有无
		String result = jedisClient.hget(Constant.REDIS_KEY, page);
		if(StringUtil.isNotEmpty(result)){
			m.put("pageCode", result);
		}else{
			//跳转的url
			String url =request.getContextPath()+"/index.html";
			
			//总记录数
			Long totalNum = blogService.getTotal(map);
			
			StringBuffer param = new StringBuffer();
			//分页条件回显
			if (StringUtils.isNotBlank(typeId)) {
				param.append("typeId="+typeId+"&");
			}
			
			if (StringUtils.isNotBlank(releaseDateStr)) {
				param.append("releaseDateStr="+releaseDateStr);
			}
			
			//生成分页html
			String pageCode = PageUtil.genPagination(url, totalNum, Integer.parseInt(page), 10, param.toString());
			//放入redis缓存,以当前页没 item
			jedisClient.hset(Constant.REDIS_KEY, page, pageCode);
			m.put("pageCode", pageCode);
		}
		
		
		m.put("mainPage", "/front/common/list.jsp");
		
		m.put("title", "开源博客系统");
		return "index";
	}

谷歌的gson就是强大。这里把分页数据和分页html代码放进了redis缓存中。

二、applicationContext.xml

2.1单机版

<!-- jedis配置 -->
    <bean id="jedisPool" class="redis.clients.jedis.JedisPool">
    	<constructor-arg name="host" value="192.168.75.129"></constructor-arg>
    	<constructor-arg name="port" value="6379" ></constructor-arg>
    </bean>
    <bean id="jedisClient" class="cn.sp.component.imp.JedisClientImpl"></bean>

结果使用ab压力测试结果,不加缓存的情况1000次请求10个并发,共需要16s,加缓存后大概只要5s的时间。

刷新缓存的话,只需要删除对应的key即可。

2.2集群版配置

<!-- 配置redis客户端集群版 -->
	<!-- <bean id="jedisCluster" class="redis.clients.jedis.JedisCluster">
		<constructor-arg>
			<set>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="192.168.25.153"/>
					<constructor-arg name="port" value="7001"/>
				</bean>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="192.168.25.153"/>
					<constructor-arg name="port" value="7002"/>
				</bean>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="192.168.25.153"/>
					<constructor-arg name="port" value="7003"/>
				</bean>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="192.168.25.153"/>
					<constructor-arg name="port" value="7004"/>
				</bean>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="192.168.25.153"/>
					<constructor-arg name="port" value="7005"/>
				</bean>
				<bean class="redis.clients.jedis.HostAndPort">
					<constructor-arg name="host" value="192.168.25.153"/>
					<constructor-arg name="port" value="7006"/>
				</bean>
			</set>
		</constructor-arg>
	</bean>
	<bean id="jedisClientCluster" class="com.taotao.rest.component.impl.JedisClientCluster"/> -->


YOLOv12模型详解及代码复现 YOLOV12算法详解及Python代码复现 阅读详情

相关推荐

用Arduino和FS-i6X遥控器,从零开始打造你的第一只仿生扑翼蝴蝶(附完整代码解析)

本文详细介绍了如何利用Arduino和FS-i6X遥控器从零开始制作仿生扑翼蝴蝶,包括硬件准备、电路连接、代码解析和调试技巧。通过完整的代码示例和参数说明,帮助读者快速掌握仿生机器人的制作要点,实现蝴蝶的自然飞行效果。

weixin_28727975的博客 309

springmvc mybatis 分页 控制层及sql语句 oracle mysql easyui

/** * 分页条件查询用户 * @param page * @param rows * @param s_user * @param response * @return * @throws Exception */ @RequestMapping(value="/list") public String list(@RequestParam(value="page",req

JesseCary的博客 770

保姆级教程:用Ansible 2.9自动化配置华为ENSP路由器(附Cloud连接避坑指南)

本文提供了一份详细的Ansible 2.9与华为ENSP路由器自动化配置教程,涵盖环境搭建、网络连通性配置、Playbook开发及典型问题排查。特别针对Cloud连接常见问题提供避坑指南,帮助运维工程师快速掌握网络自动化技能,提升工作效率。

weixin_42561476的博客 375

Spring Boot整合Redis

Redis 基于内存进行存储,支持key-value的存储形式,底层是用C语言进行编写的 基于key-value形式的数据字典,结构简单,没有数据表的概念,直接用键值对形式完成数据的管理。 支持5种数据类型: 字符串 列表 集合 有序集合 哈希 搭建Redis环境 在windows上安装Redis 下载Redis https://github.com/MicrosoftArchive/redis/tags 如不能进入Github,可以到https://download.youkuaiyun.com/downl

zjojk的博客 1万+

项目方案:社会视频资源整合接入汇聚系统解决方案(五)

视频监控接入和视频汇聚平台,形成整合平台,平台服务层包括编码设备、存储设备、解码设备等的接入服务,提供基础视频服务、传输服务、存储服务、控制服务及事件服务。两种不同的接入方式:监控设备接入,是指接入社会单位视频监控系统的DVR(数字硬盘录像机)、DVS和IPC、DVR/NVR、CVR等设备;平台对接,是指对接接入社会单位数字视频监控平台。AS-VAG视频监控接入网关支持onvif、国标等接入,也支持多种SDK接入方式,包括国产的主流品牌支持海康、大华、宇视、华为等SDK,国际品牌支持松下和axis等SDK。

weixin_70208651的博客 2464

基于人脸识别的课堂考勤系统 tkinter+openpyxl+face_recognition

基于face_recognition库实现人脸考勤系统功能。利用Python的tkinter模块来设计考勤系统的图形化界面,此外结合openpyxl模块,实现将学生的信息和考勤打卡数据保存到表格中,方便查看和调用。该系统具备“刷脸打卡”、“新学生注册”等功能。............

lyx4949的博客 6965

Spring整合Redis

本文将简要介绍如何在Spring中集成Jedis,配置连接池、数据序列化等内容,并通过封装工具类来优化Redis的使用体验。

懒惰蜗牛的博客 2758

海思芯片YOLOv8模型部署完整指南:从RPN硬化到8bit量化精度优化

本文详细介绍了在海思芯片平台部署YOLOv8目标检测模型的完整方案,重点解决8bit量化精度损失问题。通过分析海思RPN硬化层的性能优势(1.9ms推理时间),对比不同量化策略(16bit仅损失0.6AP,8bit损失5.2AP),并深入定位到strides计算层是量化误差的主要来源。关键突破在于采用混合精度策略(敏感层16bit,其余8bit),使8bit量化AP回升4.1%,同时保持3.4ms的推理速度和60%的低NPU占用率。文章还提供了量化参数调整、校准数据集优化等进阶技巧,为边缘计算应用提供了性能

FJN110的博客 731

Spring 整合 Redis

pom构建: 4.0.0 com.x.redis springredis 0.0.1-SNAPSHOT org.springframework.data spring-data-redis 1.0.2.RELEASE org.springframework spring-test 3.1.2.

天行健,君子以自强不息 18万+

多模型机器学习生存预测分析:AUC比较、生存分层与SHAP解释

本文研究了多种机器学习模型在心力衰竭患者生存预测中的应用。通过比较逻辑回归、随机森林、XGBoost、LightGBM和梯度提升机五种模型的AUC表现,选择最优预测模型。基于最优模型的预测概率对患者进行风险分层,并使用Kaplan-Meier生存分析和log-rank检验验证分层的有效性。最后采用SHAP方法解释模型决策过程,识别关键预测因素。研究提供了从模型构建、评估到解释的完整技术流程,为临床预后预测提供了可复现的分析框架。

AI的内部世界的博客 157

多个linux系统安装到一块硬盘(Kylin+UOS+ubuntu)

之前写过一篇类似的文档,笔者把kylin和UOS安装在一块硬盘上上一篇的文档地址多个linux系统安装到一块硬盘(Kylin+UOS)_银河麒麟系统和uos安装成双系统-优快云博客本次记录的是三个系统到一块硬件上银河麒麟:Kylin-Desktop-V10-SP1-Release-2107-arm64统信:uniontechos-desktop-20-professional-1050-arm64乌班图:ubuntu-22.04.5-live-server-arm64。

aggs1990的专栏 565

【详解】Spring整合Redis

通过上述步骤,我们成功地在Spring Boot项目中集成了Redis,并实现了基本的数据存储和读取功能。Redis的强大之处在于其高性能和丰富的数据结构支持,这使得它成为缓存和消息队列等场景的理想选择。希望本文对大家有所帮助,如果有任何问题或建议,欢迎留言交流!以上就是关于Spring整合Redis的技术博客文章,希望能对你的学习和工作有所帮助。当然可以!Spring框架与Redis的整合在现代Web应用中非常常见,特别是在需要缓存数据以提高性能的情况下。

牛肉胡辣汤 1972

PCL 欧式聚类分割【2026最新版】

PCL中欧式聚类提取算法原理详解、代码实现以及一个大自然场景地物分割提取并保存分割结果到本地文件夹的应用案例。

点云侠的博客 40万+

Spring和Redis整合详解

Spring和Redis整合详解 官方主页 Spring Spring Redis 概述 Redis是一个开源(BSD许可)的内存数据结构存储,用作数据库,缓存和消息代理。 简单来说,它是一个以(key,value)的形式存储数据的数据库. 官网:https://redis.io/download 去下载对应的版本。 Spring已经为我们对Redis做了很好的封装,我们需要做的就是配置和Serc...

feiyangtianyao的专栏 7万+

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

ET2012新版免狗免安装绿色软件

ET2012新版免狗免安祖昂绿色软件。,新界面,新视觉,

Spring整合redis

Spring整合redisRedis整合1>下载安装 Redis整合 Redis(Remote Dictionary Server)是一个开源(BSD许可),内存存储的数据结构服务器,可用作数据库,高速缓存和消息队列代理。它支持字符串、哈希表、列表、集合、有序集合,位图,hyperloglogs等数据类型,redis支持快照,依赖快照进行持久化。 1>下载安装 服务端下载 下载地址: 解压后对应机器位数运行32位或64位目录下的redis-server,直接双击即可 ...

oLengNuanZiZhi12的博客 983

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

spring boot 整合redis

1.简介spring boot提供了spring-data-redis库来整合redis的操作,并通过简单的配置信息实现与redis的整合。2.准备工作安装redis缓存数据库,安装可视化工具,推荐使用:rdm。3.redis简介REmote DIctionary Server(Redis) 是一个由Salvatore Sanfilippo写的key-value存储系统。 Redis是一个开源的使

深存少年梦 7133

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

spring+redis整合

本文实现spring+redis缓存服务器的整合。 1、redis安装 (1)、下载 由于本文出于测试目的,因此使用windows的redis版本。从https://github.com/ServiceStack/redis-windows下载redis,下载后解压,找到解压文件夹中的downloads中的redis-latest.zip压缩包,该压缩包就是当前支持的最新的windi

三言两语 6616

[redis]spring整合redis

两种:spring整合redis,springboot整合redis spring整合redis: 1、环境及jar包: 环境:jdk1.6;spring+springmvc+ibatis+maven;redis3.2; pom.xml: <dependency> <groupId>org.springframework.data</groupId> <artifactId>spring-data-redis</artifactId&gt.

weixin_43303530的博客 2070

Redis基础二(spring整合redis)

​ 在开中某些方法查询的结果要放到缓存中(redis),下一次再调用该方法查询的时候先缓存中查找,如果缓存中有数据就直接返回,否则从关系型数据库中去查询数据。

LiuCJ_20000的博客 2677

Spring基于注解整合Redis

本文介绍了如何使用Spring注解来整合Redis,并使用缓存相关的注解来简化对Redis的操作。当方法被调用时,Spring会先检查缓存中是否存在对应的结果,如果存在,则直接返回缓存的结果;电子商务网站,我们可以使用Redis作为商品信息的缓存,以提高访问速度和减轻数据库的压力。当方法被调用时,Spring会先执行该方法,并将结果存入缓存,而不会去检查缓存中是否已存在。方法时,如果该商品信息已存在于缓存中,则直接从缓存中获取,避免了频繁地访问数据库,提升了访问速度和性能。实例,并配置了连接工厂。

牛肉胡辣汤 1422

Redis之——Spring基于注解整合Redis

在《Redis之——Spring整合Redis》一文中,向大家介绍了如何将Spring与Redis整合起来,但不是基于注解的形式,很多同学都希望能够通过注解的形式来简单的将Spring与Redis整合起来,这样,在使用的时候,只需要在相应的方法上加上注解,便可以使方法轻松的调用Redis的缓存。那么今天就来向大家介绍如何用基于注解的形式来整合Spring与Redis。另外,在之前的一篇《Memca

冰河的专栏 2万+

Spring整合Redis(windows版)

Spring整合RedisRedis环境准备一、下载windows版本的Redis二、安装Redis三、设置Redis服务四、使用Redis客户端来操作RedisSpring整合Redis一、新建applicationContext-jedis.xml文件二、新建配置类三、代码测试 Redis环境准备 一、下载windows版本的Redis 去官网找了很久,发现原来在官网上可以下载的windows...

wxj1079099010的博客 313

[Spring]Redis+Spring整合

[Spring]Redis+Spring整合

Konaji 4418
上一篇: 服务器环境搭建【三】
下一篇: springboot-jpa报错No identifier specified for entity:
2YSP
博客等级 码龄10年 12粉丝 34原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值