jedis依赖_SpringBoot整合Jedis实现redis缓存

我是一个java开发者,我的文章,没有华丽的言辞,没有666的版式,这些都是我自己工作中用到的解决方案,很多都是直接粘贴的源码,在这里与君分享。如果喜欢这里文章可以关注我,我回继续发的,谢谢你。

我们在使用springboot搭建微服务的时候,在很多时候还是需要redis的高速缓存来缓存一些数据,存储一些高频率访问的数据,如果直接使用redis的话又比较麻烦,在这里,我们使用jedis来实现redis缓存来达到高效缓存的目的,接下来,让我们一起来使用jedis来实现redis缓存

1.在pom.xml文件中添加依赖

redis.clients

jedis

2.8.2

2. 在springboot的配置文件中加入redis的配置信息

#redis jedis配置

# Redis数据库索引(默认为0)

spring.redis.database=0

# Redis服务器地址

spring.redis.host=10.100.140.84

# Redis服务器连接端口

spring.redis.port=6379

# Redis服务器连接密码(默认为空)

#spring.redis.password=

# 连接池最大连接数(使用负值表示没有限制)

spring.redis.pool.max-active=200

# 连接池最大阻塞等待时间(使用负值表示没有限制)

spring.redis.pool.max-wait=-1

# 连接池中的最大空闲连接

spring.redis.pool.max-idle=8

# 连接池中的最小空闲连接

spring.redis.pool.min-idle=0

# 连接超时时间(毫秒)

spring.redis.timeout=0

#spring-session 使用

spring.session.store-type=none

3.创建jedis配置文件

配置文件的作用是在项目启动的时候将jedis注入,接着我们就可以在其他类中获取到JedisPool类的信息

@Configuration

public class JedisConfig extends CachingConfigurerSupport{

private Logger logger = LoggerFactory.getLogger(JedisConfig.class);

/**

* SpringSession 需要注意的就是redis需要2.8以上版本,然后开启事件通知,在redis配置文件里面加上

* notify-keyspace-events Ex

* Keyspace notifications功能默认是关闭的(默认地,Keyspace 时间通知功能是禁用的,因为它或多或少会使用一些CPU的资源)。

* 或是使用如下命令:

* redis-cli config set notify-keyspace-events Egx

* 如果你的Redis不是你自己维护的,比如你是使用阿里云的Redis数据库,你不能够更改它的配置,那么可以使用如下方法:在applicationContext.xml中配置

*

* @return

*/

@Value("${spring.redis.host}")

private String host;

@Value("${spring.redis.port}")

private int port;

@Value("${spring.redis.timeout}")

private int timeout;

@Value("${spring.redis.pool.max-active}")

private int maxActive;

@Value("${spring.redis.pool.max-idle}")

private int maxIdle;

@Value("${spring.redis.pool.min-idle}")

private int minIdle;

@Value("${spring.redis.pool.max-wait}")

private long maxWaitMillis;

@Bean

public JedisPool redisPoolFactory(){

JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();

jedisPoolConfig.setMaxIdle(maxIdle);

jedisPoolConfig.setMaxWaitMillis(maxWaitMillis);

jedisPoolConfig.setMaxTotal(maxActive);

jedisPoolConfig.setMinIdle(minIdle);

JedisPool jedisPool = new JedisPool(jedisPoolConfig,host,port,timeout,null);

logger.info("JedisPool注入成功!");

logger.info("redis地址:" + host + ":" + port);

return jedisPool;

}

}

接下来,我们启动项目,gogogo

d86aee346e624e939c09ec1a62a23083

Jedis注入成功了!!!

然后我们可以定义一个工具类,用于对redis进行各种操作

4115a153c0da4bd99cbc2da8d6dadbca

这里我们通过@Autowired将JedisPool注入到工具类中,其他两个是命名、序列化的类

这里,我们列举一下平常最常用的几个方法

//给某个key设值

public void set(String key, Object value) {

Jedis client = getJedis();

try {

byte[] keyBytes = serializer.serializeKey(keyNamingPolicy.getKeyName(key));

byte[] valueBytes = serializer.serializeValue(value);

client.set(keyBytes, valueBytes);

} finally {

returnJedis(client);

}

}

//根据key获取value

public Object get(String key) {

Jedis client = getJedis();

try {

byte[] keyBytes = serializer.serializeKey(keyNamingPolicy.getKeyName(key));

byte[] valueBytes = client.get(keyBytes);

return serializer.deserializeValue(valueBytes);

} finally {

returnJedis(client);

}

}

//根据键值获取value

public Object hashGet(String key, String field) {

Jedis client = getJedis();

try {

byte[] keyBytes = serializer.serializeKey(keyNamingPolicy.getKeyName(key));

byte[] fieldBytes = serializer.serializeKey(field);

byte[] valueBytes = client.hget(keyBytes, fieldBytes);

return serializer.deserializeValue(valueBytes);

} finally {

returnJedis(client);

}

}

public void hashSet(String key, String field, Object value) {

Jedis client = getJedis();

try {

byte[] keyBytes = serializer.serializeKey(keyNamingPolicy.getKeyName(key));

byte[] fieldBytes = serializer.serializeKey(field);

byte[] valueBytes = serializer.serializeValue(value);

client.hset(keyBytes, fieldBytes, valueBytes);

} finally {

returnJedis(client);

}

}

public Map hashAllGet(String key) {

Jedis client = getJedis();

try {

byte[] keyBytes = serializer.serializeKey(keyNamingPolicy.getKeyName(key));

Map map = client.hgetAll(keyBytes);

Map valueMap = Maps.newHashMap();

Set> valueSet = map.entrySet();

for (Map.Entry entry : valueSet) {

valueMap.put(serializer.deserializeKey(entry.getKey()), serializer.deserializeValue(entry.getValue()));

}

return valueMap;

} finally {

returnJedis(client);

}

}

//判断key是否存在

public boolean existKey(String key) {

Jedis client = getJedis();

try {

byte[] keyBytes = serializer.serializeKey(keyNamingPolicy.getKeyName(key));

return client.exists(keyBytes);

} finally {

returnJedis(client);

}

}

在该项目中,我们发送短信验证码后会将验证码存在redis中去,然后校验的时候会判断用户输入的验证码和缓存中的验证码是否一致,达到目的

a75d4ce1afe546fba514938ccd1519c7
555c14329e7241038d1f32a3fecad805
f3d6c58b587a48ef8b61135ad9a365d4
5e6c5f4a8162469d9c9bcbc8b9ed4a39

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

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

相关文章

软件文档 服务器上,服务器上需要什么软件

服务器上需要什么软件 内容精选换一换华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。MindStudio所在的环境为开发环境,开发人员可以进…

服务器补丁 系统,操作系统补丁服务器

操作系统补丁服务器 内容精选换一换北京时间1月3日,Intel处理器芯片被曝出存在严重的Meltdown和Spectre安全漏洞,漏洞详情如下:漏洞名称:Intel处理器存在严重芯片级漏洞漏洞编号:CVE-2017-5753、CVE-2017-5715、CVE-20…

matlab 周立功can_隐藏在CAN协议底层的编码方式——到底是大端还是小端?

当我们想要讨论CAN协议底层发送到数据线上的二进制信号的编码方式时,最值得关注的两点是:字节编码(Endianness)和比特顺序(Bit Numbering)。先一句话揭晓答案:CAN协议的字节编码是大端编码&…

samba服务器新建文件权限,Ubuntu中安装samba服务器创建文件共享的方法及普通用户设置共享的问题解析...

Ubuntu中安装samba服务器创建文件共享的方法及普通用户设置共享的问题解析发布时间:2011-01-04 19:10:00 作者:佚名 我要评论本文是基于ubuntu桌面版进行操作说明的。前面的设置都是管理员进行的,这里说的管理员就是可以使用sudo命令&am…

flashpaper打印机没有被正确安装_没有正确保存与安装,可导致80%的轴承提早失效...

轴承损坏可谓司空见惯,可您是否知道,80%的轴承提早失效是因为没有正确地安装。轴承的正确安装,不仅可以增加轴承的使用寿命,降低成本,还可以大大提高生产效益。轴承安装与常规其他部件安装有很大区别,为了实…

rabbitmq实例_RabbitMQ不得不知道的点

RabbitMQ的优缺点优点这边的流量削峰功能主要应用在秒杀活动中,在秒杀活动中一般因为流量过大,导致应用挂掉,为了解决这个问题,在应用前端、库存系统前端加入消息队列,在订单系统中,服务器收到用户的请求后…

图片优化_网站里的图片应该如何优化

我们一直都在做网站关键词、内页关键词、标签等。但很多朋友都忽略了网站里的图片如何优化。近年来百度图片识别、360图片识别都在不断升级功能上已经很完善了,所以我们应该对网站图片进行优化,应该做seo的朋友们重视起来, 下面笔者跟大家分享…

rabbitmq 取消消息_mall整合RabbitMQ实现延迟消息

本文主要讲解mall整合RabbitMQ实现延迟消息的过程,以发送延迟消息取消超时订单为例。项目使用框架介绍RabbitMQRabbitMQ是一个被广泛使用的开源消息队列。它是轻量级且易于部署的,它能支持多种消息协议。RabbitMQ可以部署在分布式和联合配置中&#xff0…

vue 将行转换成对象_Vue简化版实现

Vue整体结构Vue: 把data中的成员注入到Vue实例,并且把data中的成员转换成getter, setterObserver: 劫持对象的所有属性, 如有变动可拿最新的值, 通知DepCompiler:解析每一个元素中的指令/插值表达式, 替换成相应的数据Dep: 发布者…

python 如何修改字典的key值_如何使用python技术完成数据集缺失值多种应用场景的滤除或填充?...

前言在数据处理的过程中,我们应该都有这样的体会,本质上数据处理与分析是相互协作,彼此成就的过程。比如,我们会用数据分析统计数据集中的缺失值、异常值,更直观的也会进阶到数据可视化的部分(到达该部分一般是成了文章…

python graphics 清空 图_【手把手教你】使用Python玩转金融时间序列模型

01引言上一篇推文【Python量化基础】时间序列的自相关性与平稳性着重介绍了时间序列的一些基础概念,包括自相关性、偏自相关性、白噪声和平稳性,以及Python的简单实现。本文在此基础上,以沪深300指数收益率数据为例,探讨如何使用P…

postman linux_Postman使用

postman简介官网https://learning.getpostman.com/用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具。今天给大家介绍的这款网页调试工具不仅可以调试简单的…

java与MySQL做购物系统_java Swing mysql实现简单的购物系统项目源码附带指导视频教程...

大家好,今天给大家演示一下由Java swing实现的一款简单的购物程序,数据库采用的是mysql,该项目非常简单,实现了管理员对商品类型和商品的管理及用户注册登录后浏览商品、加入购物车、购买商品等功能,旨在学习Java 图形…

mysql pdm_mysql 生成pdm

1.条件1.1 工具powerDesigner16.51.2 mysql数据库地址或脚本1.3 mysql-connector-odbc-5.3.4-winx64.msi2.操作步骤2.1 database > change DBMS 选择Mysql5.02.2 打开powerDesigner16.5工具, file > reverse Engineer > database确定,则生成对应的pdm.3.图形列表中展示…

java 调用htm中js函数_从 node.js Web应用中调用 WASM 函数 | WebAssembly 入门教程

文中所有的代码都可以在 https://github.com/second-state/wasm-learning/tree/master/nodejs/hello 中找到在之前的教程中,我们讨论了如何从 Web 浏览器中的 JavaScript 应用程序访问 WebAssembly 函数。WebAssembly 快问快答从 Rust 开始入门 WebAssembly | WebAs…

vba cad 读取宏的路径_openpyxl 第三篇 lt;工作表的读取和写入gt;

1、打开表格文件from openpyxl import load_workbook wb load_workbook(r"文件路径工作簿文件全名")2. 查看有哪些sheet页sheet_names wb.sheetnames print(sheet_names)3. 读取指定的sheet页sheet1 wb[指定工作表的名字]4.单元格的使用#写 sheet1.cell(row3,colu…

mysql 一致性读_MySQL半一致性读原理解析-从源码角度解析

1、什么是半一致性读A type of read operation used for UPDATE statements, that is a combination of read committed and consistent read. When an UPDATE statement examines a row that is already locked, InnoDB returns the latest committed version to MySQL so tha…

飞秋发送文件对方无法接收_微信新功能,发送高清图片和视频终于不会被压缩了...

今天,扎比从微博中刷到了腾讯微信团队的最新微博,称微信支持发送高清图片视频不被压缩,而且给好友发送的文件容量上限也变得更大了。发送教程一般情况下,我们使用微信给好友发视频和图片时都会被压缩。而今天扎比分享的是一个不会…

张仰彪第二排序法_C++之排序

常见的各种排序算法复杂度快速排序1.原理假设我们现在对“6 1 2 7 9 3 4 5 10 8”这个10个数进行排序。首先在这个序列中随便找一个数作为基准数。为了方便,就让第一个数6作为基准数吧。接下来,需要将这个序列中所有比基准数大的数放在6的右边&am…

mysql1440秒未活动_phpMyAdmin登陆超时1440秒未活动请重新登录

本文章总结了关于phpMyAdmin登陆超时1440秒未活动请重新登录解决方法,有需要的朋友可参考本文章。问题现象:现象一:phpmyadmin在使用过程中经常出现“登陆超时(1440秒未活动),请重新登录”;现象二:phpmyadm…