redis设置database 不生效剖析
设置database 不生效剖析
- 前言
- 配置
- 加载类
- 问题
- commons-pool 对象池

主页传送门:📀 传送
前言
事情是这样的 今天在拉取了同事的代码做redis缓存设置的时候,发现即使已经设置了database, 但是存数据的时候还是用的默认0数据库。这引起了我的好奇,遂开始琢磨是什么情况造成的这种现象。
配置

上述仅为测试代码问题,为了便于维护可以这么写,
spring:redis:host: ${REDIS_HOST:localhost}port: ${REDIS_PORT:6379}password: ${REDIS_PASSWORD:}database: ${REDIS_DATABASE:0}
加载类
然后通过RedisConfiguration 加载
@ConfigurationProperties("spring.redis")
public class RedisConfiguration {private String host;private int port;private String password;private int database;// getters and setters...
}
问题
上网找了一系列的文章都没解决,后来仔细观察研究发现是database多了个空格,正确的该是这样,没想到一个空格浪费了这么多时间

信心满满的以为这就万事大吉了,结果一运行发现依然不可以,后又开始检查,最后发现是少了几个依赖

发现没有引入commons-pool2依赖,加上了依赖之后再运行发现已经切换了

commons-pool 对象池
引入Commons Pool对象池,用于缓存Redis连接的原因是因为Lettuce本身是基于Netty的异步驱动,在异步访问时并不需要创建连接池,但基于Servlet模型的同步访问时,连接池是有必要的。目的是为了复用对象,以减少创建对象的开销,所以一定记得要加这个依赖。
/*** Creates an instance that can be served by the pool and wrap it in a* {@link PooledObject} to be managed by the pool.** @return a {@code PooledObject} wrapping an instance that can be served by the pool** @throws Exception if there is a problem creating a new instance,* this will be propagated to the code requesting an object.*/PooledObject makeObject()throws Exception;/*** Destroys an instance no longer needed by the pool.* <p>* It is important for implementations of this method to be aware that there* is no guarantee about what state <code>obj</code>will be in and the* implementation should be prepared to handle unexpected errors.* </p> * <p>* Also, an implementation must take in to consideration that instances lost* to the garbage collector may never be destroyed.* </p>** @param p a {@code PooledObject} wrapping the instance to be destroyed** @throws Exception should be avoided as it may be swallowed by* the pool implementation.** @see #validateObject* @see ObjectPool#invalidateObject*/void destroyObject(PooledObject p)throws Exception;/*** Ensures that the instance is safe to be returned by the pool.** @param p a {@code PooledObject} wrapping the instance to be validated** @return <code>false</code> if <code>obj</code>is not valid and should* be dropped from the pool, <code>true</code>otherwise.*/boolean validateObject(PooledObject p);/*** Reinitializes an instance to be returned by the pool.** @param p a {@code PooledObject} wrapping the instance to be activated** @throws Exception if there is a problem activating <code>obj</code>,* this exception may be swallowed by the pool.** @see #destroyObject*/void activateObject(PooledObject p)throws Exception;/*** Uninitializes an instance to be returned to the idle object pool.** @param p a {@code PooledObject} wrapping the instance to be passivated** @throws Exception if there is a problem passivating <code>obj</code>,* this exception may be swallowed by the pool.** @see #destroyObject*/void passivateObject(PooledObject p)throws Exception;
注意:
Jedis 和Lettuce 是Java 操作Redis 的客户端。
在Spring Boot 1.x 版本默认使用的是Jedis ,而在Spring Boot 2.x 版本默认使用的就是Lettuce。
所以如果你用的是1.x版本的话 需要把 RedisConnectionFactory factory 替换为LettuceConnectionFactory lettuceConnectionFactory

如果喜欢的话,欢迎 🤞关注 👍点赞 💬评论 🤝收藏 🙌一起讨论你的支持就是我✍️创作的动力! 💞💞💞
相关文章:
redis设置database 不生效剖析
设置database 不生效剖析 前言配置加载类问题commons-pool 对象池 主页传送门:📀 传送 前言 事情是这样的 今天在拉取了同事的代码做redis缓存设置的时候,发现即使已经设置了database, 但是存数据的时候还是用的默认0数据库。这引起了我的好…...
汽车及汽车零部件行业云MES解决方案
汽配行业现状: 随着经济全球化进程加快,一直走在智能化改造,数字化转型前沿的汽车行业企业,面临的信息化需求也日益增加,不管德系,美系还是日系供应链的各大厂商,均将企业信息化,数字…...
算法工程师-机器学习面试题总结(4)
深度学习 DNN 描述一下神经网络?推导反向传播公式? 神经网络(Neural Network)是一种模拟人脑神经系统的计算模型。它由许多节点(神经元)和连接它们的权重组成,这些节点和权重可以学习和调整&a…...
Linux学习之awk函数
awk里边的函数分为内置函数和自定义函数。 内置函数有下边的几种: 算术函数(arithmetic) 字符串函数(string) 输入/输出函数和通用函数(input/output, and general) 自定义函数格式如下…...
Redis的数据结构到底是一种什么样的结构?
有了上一篇NoSQL的基础,我们也都知道了Redis就是一种典型的NoSql,那我们就先简简单单的介绍一下Redis: Redis是什么? Redis(Remote Dictionary Server)是一个开源的使用ANSI C语言编写的高性能键值存储系统…...
eclipse 导入项目js报错问题
eclipse 导入项目后会出现项目中的js文件报错(红叉),如下图所示,有时候报错的文件很多,需要集中处理。 解决办法: 右键项目名称》Properties》MyEclipse》JavaScript》Include Path,在右侧选择“…...
《HeadFirst设计模式(第二版)》第七章代码——外观模式
代码文件目录: Subsystem: Amplifier package Chapter7_AdapterAndFacadePattern.FacadePattern.Subsystem;/*** Author 竹心* Date 2023/8/8**///扬声器 public class Amplifier {int volume 0;//音量public void on(){System.out.println("The amplifier …...
前端杂项-个人总结八股文的背诵方案
个人总结八股文的背诵方案 URL到显示网页的过程 浏览器解析URL,获取协议,主机名,端口号,路径等信息,并通过DNS查询将主机名转换为对应的IP地址浏览器与服务器建立TCP,进行三次握手。浏览器向服务器发送HT…...
利用 3D 地理空间数据实现Cesium的沉浸式环境
推荐:使用 NSDT场景编辑器 助你快速搭建可编辑的3D应用场景 为了将大量异构 3D 地理空间数据处理和分散到各行各业的地理空间应用程序和运行时引擎,Cesium 创建了 3D Tiles,这是一种用于高效流式传输和渲染大量异构数据集的开放标准。3D Tile…...
微服务——ES实现自动补全
效果展示 在搜索框根据拼音首字母进行提示 拼音分词器 和IK中文分词器一样的用法,按照下面的顺序执行。 # 进入容器内部 docker exec -it elasticsearch /bin/bash# 在线下载并安装 ./bin/elasticsearch-plugin install https://github.com/medcl/elasticsearch…...
北斗+5G 织就精确定位的“天罗地网”
今年,邓中亮更忙了。 外部会议,内部讨论,课题研究,还有疫情困扰期间没能出的差铆足劲似的补上,一天里,从离开床和回到床中间的时间都被工作冠名了。 北京邮电大学教授邓中亮 忙碌的加速键在2020年按下暂停…...
Ansible Roles详解
Ansible 的角色(Roles)是一种组织和管理任务和变量的方法,可以帮助您更好地组织和重用 Ansible 代码。角色是一个可重用的、自包含的 Ansible 单元,它封装了一组任务和变量,可以在不同的剧本中轻松地重用。 角色的目录…...
微服务学习笔记-基本概念
微服务是一种经过良好架构设计的分布式架构方案。根据业务功能对系统做拆分,每个业务功能模块作为独立项目开发,称为一个服务。 微服务的架构特征: 单一职责:微服务拆分粒度更小,每一个服务都对应唯一的业务能力&…...
Linux查看GPU显卡/CPU内存/硬盘信息
显卡信息命令/CPU内存/硬盘 1.显卡2、CPU内存3、硬盘 1.显卡 nvidia-smi nvidia-smi(显示一次当前GPU占用情况) nvidia-smi -l(每秒刷新一次并显示) watch -n 5 nvidia-smi (其中,5表示每隔6秒刷新一次终端…...
SQLAlchemy 入门:Python 中的 SQL 工具包和 ORM
SQLAlchemy 是 Python 中一款非常流行的数据库工具包,它对底层的数据库操作提供了高层次的抽象。在本篇文章中,我们将介绍 SQLAlchemy 的两个主要组成部分:SQL 工具包 (SQL Toolkit) 和对象关系映射器 (Object-Relational Mapper, ORM) 的基本…...
react Hook+antd封装一个优雅的弹窗组件
前言 在之前学vue2的时候封装过一个全局的弹窗组件,可以全局任意地方通过this调用,这次大创项目是用react技术栈,看了一下项目需求,突然发现弹窗还是比较多的,主要分为基础的弹窗以及form表单式的弹窗,如果…...
HICP学习--BGP综合小实验
需要完善 一、实验拓扑 二、实验需求 1、R2-7每台路由器均存在一个环回接口用于建立邻居,同时还存在一个环回来代表连接用户的接口;最终这些连接用户的接口网络需要可以和R1/8的环回通讯 2、AS2网段地址172.16.0.0/16 减路由条目数量 三、实验步骤 首先配置IP R…...
grafana中利用变量来添加dashboard详情页地址实现点击跳转
背景 最近弄grafana的dashboard,突然想到各个dashboard之前可以直接跳转到不同详细页面的面板,于是找了找实现方法 实现 以stat 格式的面板为例,显示出各个pod的对应状态, PromQL是(avg(kube_pod_status_phase{phase"Running", namespace!"kube-system"…...
正则表达式练习
正则表达式练习 工具目的代码运行结果 工具 pycharm 目的 https://www.77xsw.cc/fenlei/1_1/:第一页的网址 https://www.77xsw.cc/fenlei/1_2/:第二页的网址 ... https://www.77xsw.cc/fenlei/1_10/:第十页的网址 代码 import requests im…...
leetcode做题笔记73矩阵置零
给定一个 m x n 的矩阵,如果一个元素为 0 ,则将其所在行和列的所有元素都设为 0 。请使用 原地 算法。 思路一:记录行列值 void setZeroes(int** matrix, int matrixSize, int* matrixColSize){int row[matrixSize],col[*matrixColSize];fo…...
LoFTR Unleashed: Revolutionizing Feature Matching with Transformer-Based Detector-Free Approach
1. 传统特征匹配的困境与突破 计算机视觉领域有个经典难题:如何让两张不同角度拍摄的图片找到相同的特征点?这就像让两个素未谋面的人通过照片认出对方身上的独特标记。传统方法通常采用"检测-描述-匹配"的三步走策略,就像先找人脸…...
004-Python基础数据类型:数字、字符串与布尔值
004-Python基础数据类型:数字、字符串与布尔值 那天下午,调试器停在一行看似无害的代码上: price 18.9 total price * 3 print(total) # 输出56.699999999999996新来的实习生盯着屏幕发呆:“浮点数在内存里有自己的脾气。”我拉…...
我在选域名服务时,慢慢开始关注这3个点
在前面几篇里,我更多是在整理域名本身的问题。但最近在实际操作的时候,发现:👉 选“在哪管理域名”,其实也挺重要的1. 一开始容易忽略的点最开始,我只是随便选了一个能用的方式。但后面才发现:&…...
视频转PPT终极指南:三分钟从视频中智能提取幻灯片内容
视频转PPT终极指南:三分钟从视频中智能提取幻灯片内容 【免费下载链接】extract-video-ppt extract the ppt in the video 项目地址: https://gitcode.com/gh_mirrors/ex/extract-video-ppt 你是否曾经面对长达数小时的会议录像或教学视频,却需要…...
硅基波导介绍
硅基波导的简单介绍 文章目录 一、基本概念 二、原理 2.1 截止频率 2.2 波导的模式 三、硅基波导规格 一、基本概念 波导能够将电磁能量束缚在中空的金属管内传输,从而显著降低传输过程中的损耗,这与天线将能量直接辐射至整个自由空间的工作方式截然不同…...
使用StructBERT构建Reddit社区情感监测系统
使用StructBERT构建Reddit社区情感监测系统 社区讨论中的负面情绪就像煤矿中的金丝雀,及早发现能避免很多潜在问题 1. 引言 你有没有遇到过这样的情况:一个原本活跃的在线社区,突然间讨论氛围变得消极,用户流失严重,等…...
聊聊天AI搞定本地Excel自动同步飞书表格!影刀6.0解锁数据同步新姿势
聊聊天AI搞定本地Excel自动同步飞书表格!影刀6.0解锁数据同步新姿势谁懂职场人数据同步的崩溃啊🥹手里的本地Excel天天更新还要手动复制粘贴到飞书表格共享给同事字段一多、行数一大复制错行、漏贴数据简直是家常便饭反复核对、反复粘贴,十几…...
流匹配模型:从确定性ODE到高效生成建模的实践指南
1. 流匹配模型的核心机制 流匹配模型的核心在于利用确定性常微分方程(ODE)构建从噪声到数据的平滑转换路径。想象一下河流的流动:水流总是沿着最自然的路径从高处流向低处,而流匹配模型中的"流场"就像这条河流的河道&am…...
openclaw 两个案例
1. 用 OpenClaw Nano Banana 自动生成视频分镜,联动即梦实现文生视频自动化生成;1.1这里首先用到的是claude code 写skill一个skill是操作gemini网页根据文生图;图生图;视频生图;一个skill是根据提示词生成分镜序列1.…...
小白友好!Llama-3.2V-11B-cot快速入门:上传图片提问,看AI推理全过程
小白友好!Llama-3.2V-11B-cot快速入门:上传图片提问,看AI推理全过程 1. 引言:像聊天一样使用AI视觉推理 想象一下,你手头有一张图片——可能是旅游时拍的风景照,或是工作中遇到的图表,又或是孩…...
