spring redis 连接和连接池配置 使用

spring redis 连接和连接池配置 使用

redis的使用方式方法有很多,我这里只用了这一种

jar包

redis

<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.5.2</version>
</dependency>

连接池

<dependency><groupId>org.apache.commons</groupId><artifactId>commons-pool2</artifactId><version>2.9.0</version>
</dependency>

redis 连接池配置

<bean id="redisConfig" class="org.apache.commons.pool2.impl.GenericObjectPoolConfig" lazy-init="true"><property name="maxTotal" value="${redis.pool.maxTotal}"/><property name="maxIdle" value="${redis.pool.maxIdle}"/><property name="minIdle" value="${redis.pool.minIdle}"/><property name="maxWaitMillis" value="${redis.pool.maxWaitMillis}"/><property name="testOnBorrow" value="${redis.pool.testOnBorrow}"/><property name="testOnReturn" value="${redis.pool.testOnReturn}"/><property name="timeBetweenEvictionRunsMillis" value="${redis.pool.timeBetweenEvictionRunsMillis}"/><property name="testWhileIdle" value="${redis.pool.testWhileIdle}"/><property name="numTestsPerEvictionRun" value="${redis.pool.numTestsPerEvictionRun}"/></bean>

redis bean

<bean id="jedisPool" class="redis.clients.jedis.JedisPool" lazy-init="true"><constructor-arg index="0" ref="redisConfig"/><constructor-arg index="1" value="${redis.hostname}"/><constructor-arg index="2" value="${redis.port}"/><constructor-arg index="3" value="${redis.timeout}"/><constructor-arg index="4" value="${redis.password}"/><constructor-arg index="5" value="${redis.database}"/>
</bean>

redis 客户端

实现了两个方法,一个有返回值一个没有返回值,可以自定义实现方法

下面都自动关闭了连接,也可以不设置关闭,如果不关闭连接的话连接池会自动关闭连接 设置超时时间

@Lazy(value = true)
@Component
public class RedisClient {private Logger log = LoggerFactory.getLogger(RedisClient.class);@Resourceprivate  JedisPool jedisPool;public  <T> T use(Function<Jedis, T> function) {Jedis jedis = jedisPool.getResource();try{T t = function.apply(jedis);return t;}catch (Exception e){log.error(e.getMessage(),e);}finally {jedis.close();}return null;}public void voidUse(Consumer<Jedis> function) {Jedis jedis = jedisPool.getResource();try {function.accept(jedis);}catch (Exception e){log.error(e.getMessage(),e);}finally {jedis.close();}}public void setStringVal(String key,String val){this.voidUse(e->{e.set(key, val);});}public String setStringValRet(String key,String val){return this.use(e->{return e.set(key, val);});}public String getStringVal(String key){return this.use(e->{return e.get(key);});}/*** redis 操作 hash*///hmsetpublic String hmSetByMap(String key, Map<String,String> map){return this.use(e->{return e.hmset(key,map);});}public String hmSet(String key, String field,String val){return this.use(e->{Map<String,String> map = new HashMap<>();map.put(field,val);return e.hmset(key,map);});}//hgetallpublic Map<String, String>  hGetAll(String key){return this.use(e->{return e.hgetAll(key);});}//hdelpublic Long hDel(String key,String ...field){return this.use(e->{return e.hdel(key,field);});}//hexistspublic Boolean hexists(String key,String field){return this.use(e->{return e.hexists(key,field);});}//expirepublic long expire(String key,int time){return this.use(e->{return e.expire(key,time);});}//keyspublic Set<String> keys(String pattern){return this.use(e->{return e.keys(pattern);});}//delpublic long del(String key){return this.use(e->{return  e.del(key);});}public long del(String ...key){return this.use(e->{return  e.del(key);});}}

使用redis

@Resource
private RedisClient redisClient;
//删除public boolean deleteByUserCode(String key) {long count = redisClient.hDel(WHITE_KEY_LIST,key);return count>0;}
//保存public boolean save(String account,String userCode) {String ret = redisClient.hmSet(WHITE_KEY_LIST,userCode,account);return "OK".equals(ret);}

其他方法可以自定义使用,有问题和建议请留言

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/608600.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

树莓派中配置mDNS服务

在树莓派上配置mDNS服务通常涉及使用Avahi守护进程&#xff0c;它是Linux系统中最常用的mDNS实现之一。为了在树莓派上配置mDNS服务&#xff0c;请按照以下步骤操作&#xff1a; 安装 Avahi: 打开树莓派的终端&#xff0c;确保你的系统是最新的&#xff0c;然后安装 Avahi 和它…

[足式机器人]Part2 Dr. CAN学习笔记-动态系统建模与分析 Ch02-8 Bode Plot伯德图

本文仅供学习使用 本文参考&#xff1a; B站&#xff1a;DR_CAN Dr. CAN学习笔记-动态系统建模与分析 Ch02-8 Bode Plot伯德图 Bode Plot 手绘技巧与应用

第7章-第6节-Java中的Map集合

1、HashMap&#xff1a; 1&#xff09;、 引入 如果业务需要我们去用姓名的拼音手写字母匹配完整姓名&#xff0c;那么如果用单列数据&#xff0c;我们可能需要两个集合才能存储&#xff0c;而且两个集合之间没有关联不好操作&#xff0c;这种时候双列数据就会起很大作用 2&…

【前端素材】bootstrap4实现服装鞋饰电商平台Doron

一、需求分析 一个服装鞋饰电子商务页面是一个在线平台&#xff0c;用于展示和销售各种服装、鞋子和配饰产品。它通常具有以下功能&#xff1a; 产品展示&#xff1a;服装鞋饰电子商务页面会展示各种服装、鞋子和配饰产品的图片、描述和价格。这些产品可以按照不同的分类&#…

批量剪辑方法:掌握视频剪辑技巧,按指定时长轻松分割视频

在视频制作和编辑过程中&#xff0c;经常要批量处理和剪辑大量的视频片段。学会批量剪辑方法可以提高工作效率&#xff0c;还可以使视频编辑更加准确和高效。下面来看下云炫AI智剪如何按指定时长轻松分割视频的批量剪辑方法。 分割后的视频文件效果&#xff0c;已分割分段的视…

PHPStudy快速搭建网站并结合内网穿透远程访问本地站点

文章目录 [toc]使用工具1. 本地搭建web网站1.1 下载phpstudy后解压并安装1.2 打开默认站点&#xff0c;测试1.3 下载静态演示站点1.4 打开站点根目录1.5 复制演示站点到站网根目录1.6 在浏览器中&#xff0c;查看演示效果。 2. 将本地web网站发布到公网2.1 安装cpolar内网穿透2…

减少客户流失并留住长期客户:实用策略与实践分享

一、什么是客户流失&#xff1f; 客户流失是指客户停止付费并离开您的产品/服务。流失率是指在特定时间内离开产品/服务的用户除以用户总数的百分比。 比如&#xff1a; 假设某媒体平台是一个基于订阅的流媒体平台&#xff0c;为用户提供各种电影、电视剧、纪录片等。到二月…

Linux--防火墙,实验案例:基于区域、服务、端口的访问控制

实验环境 某公司的Web服务器&#xff0c;网关服务器均采用Linux CentOS 7.3操作系统&#xff0c;如图2.13所示。为了 加强网络访问的安全性&#xff0c;要求管理员熟悉firewalld防火墙规则的编写&#xff0c;以便制定有效、可行的主机防护策略。 需求描述 > 网关服务器ens3…

【第八节】变量与运算符-整型数据类型的使用

整数类型&#xff1a;byte、short、int、long 类型占用存储空间表数范围byte1字节8bit位-128~127short2字节-2^15~2^15-1int4字节-2^31-2^31-1(约21亿)long8字节-2^63~2^63-1 定义long类型的变量时&#xff0c;赋值时需要以小写字母“l”或者大写字母“L”作为后缀 java中声…

RT-Thread:ADC 框架应用,通过 STM32CubeMX 配置 STM32 ADC驱动

关键词&#xff1a;ADC,RT-Thread ADC,STM32 ADC应用 说明&#xff1a;本笔记是记录如何开启 RT-Thread 框架的ADC功能&#xff0c;使用系统自带的ADC函数&#xff0c;并通过 STM32CubeMX 配置 STM32 ADC驱动 。 1. 打开board.h 文件&#xff0c;找到ADC 使用配置的流程&…

猴子选大王

思路&#xff1a;首先举个例子&#xff1a;当N 5 时 1 2 3 4 5 3 3 3 3 输出4 请观看代码 …

37-数据类型,一元运算符typeof,字符串string,布尔Boolean,未定义undefined,空null,数组Array

<body><script>// 0.1加0.2不等于0.3&#xff0c;正确的运算方法如下console.log(0.10.2);var x 0.1;var y 0.2;console.log((x*10y*10)/10);</script> </body> 简单数据类型&#xff08;5种&#xff09;&#xff1a;数字number&#xff0c;字符串s…

【漏洞挖掘】sourcemap、webpck源码泄露漏洞

目录 1.使用npm安装reverse-souecemap1.1 安装npm1.2 npm配置优化1.2.1 全局模块存放路径和cache路径1.2.2 更改镜像源1.2.3 升级更新npm&#xff0c;并添加环境变量 1.3 安装 reverse-sourcemap 2. 使用reverse-sourcemap逆向获取源码3. 漏洞修复 1.使用npm安装reverse-souece…

基于 Python+Neo4j+医药数据,构建了一个知识图谱的自动问答系统

知识图谱是目前自然语言处理的一个热门方向。目前知识图谱在各个领域全面开花&#xff0c;如教育、医疗、司法、金融等。 本项目立足医药领域&#xff0c;以垂直型医药网站为数据来源&#xff0c;以疾病为核心&#xff0c;构建起一个包含7类规模为4.4万的知识实体&#xff0c;…

C++学习笔记(二十八):c++ 箭头->运算符

c中->运算符主要包含两种使用方式&#xff0c;一种是最为常用的用来调用类指针对象的属性和方法&#xff0c;另一种是c运算符重载。代码示例如下&#xff1a; #include <iostream>class Entity { public:void Print() const{std::cout << "Hello!" &l…

llama.cpp模型推理之界面篇

目录 前言 一、llama.cpp 目录结构 二、llama.cpp 之 server 学习 1. 介绍 2. 编译部署 3. 启动服务 4、扩展或构建其他的 Web 前端 5、其他 前言 在《基于llama.cpp学习开源LLM本地部署》这篇中介绍了基于llama.cpp学习开源LLM本地部署。在最后简单介绍了API 的调用方…

智汇云舟受邀出席《城市轨道交通公共安全防范安全评价标准》专家评审会

1月3日&#xff0c;由中国城市公共交通协会归口的《城市轨道交通公共安全防范安全评价标准》&#xff08;以下简称“《标准》”&#xff09;送审稿审查会顺利召开。该标准由同方威视技术股份有限公司、上海新海信通信息技术有限公司和中安保实业集团有限公司主编&#xff0c;北…

python进阶 -- 日志装饰器详解

日志 日志&#xff1a;记录程序运行的时候&#xff0c;出现的问题&#xff0c;或者说验证流程是否正常 在实际工作中&#xff0c;python的脚本命令一般是放在服务器执行的linux系统 日志其实就是记录程序运行时出现的问题、或者正常的打印&#xff0c;协助出现问题的时解决排查…

AMEYA360 | 热敏电阻的工作原理及作用 热敏电阻厂商有哪些

摘要&#xff1a;热敏电阻是一种传感器电阻&#xff0c;其电阻值随着温度的变化而改变。热敏电阻的工作原理是使用传感器来帮助调节温度高低&#xff0c;作用包括电压调节&#xff0c;音量控制&#xff0c;时间延迟和电路保护。热敏电阻具有测温、温度补偿、过热保护、液面测量…

总结多线程的各种锁

1、公平锁和非公平锁 公平锁是严格按照线程请求的顺序来分配锁&#xff0c;每一个线程都能获取到锁&#xff0c;避免线程饥饿现象&#xff1b;相反&#xff0c;非公平锁表示线程竞争锁时可以插队来抢占资源。 非公平锁在大多数情况下效率优于公平锁&#xff0c;因为公平锁涉及到…