尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
Redis基础day02
一、Jedis1. Jedis官网地址https://github.com/redis/jedis2. 快速入门1引入Maven依赖dependencygroupIdredis.clients/groupIdartifactIdjedis/artifactIdversion3.7.0/version/dependency2建立Redis直连privateJedisjedis;BeforeEachvoidsetUp(){//建立连接jedisnewJedis(192.168.100.129,6379);//设置密码jedis.auth(1234);//选择数据库jedis.select(0);}3测试String类型操作TestvoidtestString(){//添加Stringresultjedis.set(name,阳哥);System.out.println(result);//获取Stringnamejedis.get(name);System.out.println(name);}4释放连接资源AfterEachvoidtearDown(){if(jedis!null){jedis.close();}}3. Jedis连接池使用原因Jedis原生直连线程不安全频繁创建、销毁TCP连接会产生大量性能开销项目生产环境推荐使用Jedis连接池复用连接。连接池工具类publicclassJedisConnectionFactory{privatestaticJedisPooljedisPool;static{// 配置连接池参数JedisPoolConfigpoolConfignewJedisPoolConfig();poolConfig.setMaxTotal(8);// 最大总连接数poolConfig.setMaxIdle(8);// 最大空闲连接数poolConfig.setMinIdle(0);// 最小空闲连接数poolConfig.setMaxWaitMillis(1000);// 获取连接最大等待毫秒数// 初始化连接池jedisPoolnewJedisPool(poolConfig,192.168.100.129,6379,1000,1234);}// 从连接池获取Jedis连接publicstaticJedisgetJedis(){returnjedisPool.getResource();}}二、SpringDataRedis简介SpringDataRedis是Spring家族中用于数据访问的子模块专门封装Redis客户端操作底层支持Lettuce默认基于Netty异步非阻塞与Jedis两种客户端提供统一RedisTemplateAPI简化Redis各类数据类型操作。核心能力统一封装Redis五大常用数据类型操作API原生支持发布订阅、哨兵、Redis集群支持响应式编程、多种序列化方案提供集合封装可直接用Java集合方式操作Redis1. 快速入门1导入依赖!-- SpringBoot Redis Starter --dependencygroupIdorg.springframework.boot/groupIdartifactIdspring-boot-starter-data-redis/artifactId/dependency!-- 连接池依赖 --dependencygroupIdorg.apache.commons/groupIdartifactIdcommons-pool2/artifactId/dependency2application.yml 配置文件spring:data:redis:host:192.168.100.129port:6379password:1234lettuce:pool:max-active:8max-idle:8min-idle:0max-wait:1003注入模板并测试AutowiredprivateRedisTemplateredisTemplate;TestvoidtestString(){//写入数据redisTemplate.opsForValue().set(name,小王);//获取数据ObjectnameredisTemplate.opsForValue().get(name);System.out.println(name);}RedisTemplate 分类API对照表API返回值类型说明redisTemplate.opsForValue()ValueOperations操作String字符串类型redisTemplate.opsForHash()HashOperations操作Hash哈希类型redisTemplate.opsForList()ListOperations操作List列表类型redisTemplate.opsForSet()SetOperations操作Set无序集合类型redisTemplate.opsForZSet()ZSetOperations操作SortedSet有序集合redisTemplate 本身RedisTemplate通用Redis全局命令删除key、设置过期时间、查询key等三、SpringDataRedis 序列化机制详解1. 默认序列化规则与问题RedisTemplate默认使用JDK原生序列化存入Redis时会把Java对象序列化为二进制字节数组读取时再反序列化转回对象。两大缺点可读性极差Redis客户端查看key/value会显示乱码二进制串对应你截图里的\xac\xed前缀乱码无法直观查看存储内容内存冗余大JDK序列化会附带类路径、版本号等额外元信息占用更多Redis存储空间。2. 两种主流优化序列化方案方案一自定义RedisTemplate全局JSON序列化替换默认JDK序列化器Key/HashKey使用字符串序列化Value/HashValue使用Jackson JSON序列化存入Redis为标准JSON格式兼顾可读性与便捷性。ConfigurationpublicclassRedisConfig{BeanpublicRedisTemplateString,ObjectredisTemplate(RedisConnectionFactoryfactory){//创建RedisTemplate对象RedisTemplateString,ObjecttemplatenewRedisTemplate();//设置连接工厂template.setConnectionFactory(factory);// 创建JSON序列化工具GenericJackson2JsonRedisSerializerjsonRedisSerializernewGenericJackson2JsonRedisSerializer();//设置key、hashKey 序列化方式为字符串template.setKeySerializer(RedisSerializer.string());template.setHashKeySerializer(RedisSerializer.string());//设置value、hashValue 序列化方式为JSONtemplate.setValueSerializer(jsonRedisSerializer);template.setHashValueSerializer(jsonRedisSerializer);template.afterPropertiesSet();returntemplate;}}优点直接存入Java对象框架自动序列化/反序列化业务代码极简缺点JSON中会额外携带class字段记录实体类全限定名依旧存在少量内存浪费。方案二使用原生 StringRedisTemplate推荐SpringBoot内置StringRedisTemplate所有key、value强制只能存储String字符串无任何默认序列化乱码问题。需要存储Java对象时手动借助ObjectMapper完成 对象 ↔ JSON字符串 互转。示例代码// Jackson提供负责Java对象与JSON字符串双向转换privatestaticfinalObjectMapperobjectMappernewObjectMapper();TestvoidtestUser(){//创建实体对象UserusernewUser(虎哥,21);//手动序列化Java对象 → JSON字符串StringjsonobjectMapper.writeValueAsString(user);//写入RedisstringRedisTemplate.opsForValue().set(user:200,json);//读取Redis字符串StringjsonUserstringRedisTemplate.opsForValue().get(user:200);//手动反序列化JSON字符串 → Java对象Useruser1objectMapper.readValue(jsonUser,User.class);System.out.println(user1);}优点Redis存储纯JSON文本无多余字段内存占用最小、无乱码、排查数据极其方便缺点存取对象需要手动序列化与反序列化少量增加代码量。补充说明ObjectMapper属于Jackson框架核心工具类SpringBoot web依赖已自动引入无需额外导包
RELATED

相关推荐

EN 18031标准落地经验:联网无线电设备网络安全合规的关键节点与常见误区

EN 18031标准落地经验:联网无线电设备网络安全合规的关键节点与常见误区

一、从RED指令到EN 18031:合规维度发生了哪些变化 2025年8月1日,欧盟无线电设备指令(RED 2014/53/EU)第3.3(d)、(e)、(f)条款进入强制实施阶段。这三项条款分别涉及网络防护、个人隐私保护和防欺诈能力。与以往RED框架下的射频、电…

📅 2026/10/18 23:06:55
为什么相同提示词丢给不同大模型,生成效果天差地别?底层原理+落地解决方案

为什么相同提示词丢给不同大模型,生成效果天差地别?底层原理+落地解决方案

前言 做AI开发、提示词工程的人几乎都踩过同一个坑:一段在Qwen上输出工整JSON、逻辑严谨的提示词,复制到DeepSeek直接语句混乱;一套写文案好用的Prompt,换到Claude就通篇拒绝输出;同样的代码需求,7B轻量模型…

📅 2026/10/18 23:06:37
高效整合多模型AI工具:Chatbox跨平台AI助手终极实战指南

高效整合多模型AI工具:Chatbox跨平台AI助手终极实战指南

高效整合多模型AI工具:Chatbox跨平台AI助手终极实战指南 【免费下载链接】chatbox Powerful AI Client 项目地址: https://gitcode.com/GitHub_Trending/ch/chatbox 在AI技术快速发展的今天,技术爱好者和效率追求者面临着一个普遍难题&#xff1a…

📅 2026/10/9 17:42:51
MORE NEWS

更多资讯

📰

告别编辑器绑定:编码Agent的本地优先工作台实战

不用看热搜也知道,最近圈子里聊编码Agent的人分成两派:一派还在编辑器里折腾补全和对话,另一派已经把Agent当独立进程扔在终端里跑,让它自己读仓库、改文件、跑测试、迭代提交。我属于后者,而且越用越确认一个判断——…

📰

Graph-Engineering-第12章第60节-ADK与Vertex-AI集成-企业级部署实战

ADK 2.0与Vertex AI集成:企业级部署实战 本地跑通只是及格线——Agent Engine托管、Cloud Logging结构化日志、Monitoring告警、BigQuery成本追踪,一套企业级部署方案从零到一 本文导航 为什么"本地能跑"和"生产能活"是两回事企业级…

📰

STM32F407+FreeRTOS存储方案:LittleFS+SUFD+EasyLogger+RTT实战

简介:本资源面向STM32嵌入式开发者与FreeRTOS学习者,聚焦在STM32F407平台上集成LittleFS文件系统、SFUD串行Flash驱动、EasyLogger日志组件与Segger RTT调试输出,解决片外25Q64 Flash上可靠存储与实时日志调试的问题。压缩包共1515个文件&…

📰

ABAP Cloud 如何消费外部集成服务,从 Service Consumption Model 到 Outbound Communication 的完整设计

在一个真实的 SAP S/4HANA Cloud 或 SAP BTP ABAP environment 项目里,业务数据很少只存在于当前 ABAP 系统内部。 销售订单可能存放在 SAP S/4HANA 中,客户信用评分来自外部风控平台,物流轨迹来自第三方物流服务,汇率来自金融数据服务,员工信息可能位于 SAP SuccessFact…

📰

SSM酒店客房预定系统毕业设计:环境配置到跑通全流程避坑指南

简介:面向Java毕业设计或课程设计场景的酒店客房预定管理系统完整项目包,基于SSM框架与JSP技术实现,按管理员、用户两类角色划分权限。管理员可完成客房类型与房态管理、预定单处理、开房记录登记、退房结账及系统公告维护;用户端…

📰

开放式代码审查实践:从流程设计到工具链落地

1. 先想清楚:代码审查到底在审什么写代码的老手们应该都有类似感受:代码审查这个环节,在很多团队里要么是走过场,要么是火药桶。合并请求挂在那里三天没人看,临上线了催着大家“赶紧过一眼”,指出来一堆风格…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬