redis实现了对数据的缓存,在项目里一些字典数据,会话数据,临时性数据都会向redis来存储,而在springboot里对redis也有支持,一般来说多个线程共同使用一个redis实现是有线程安全的风险的,而每个实现一个线程又太浪费资源,无法控制线程数量是非常危险的,所以就出现了一些redis线程池组件,下面说一下两个主要的组件。
jedis 线程池主要是每个实例有自己的线程,线程可以从它建立的池子里获取
lettuce lettuce是 apache推出的线程池工具,它的redis实例是可以被多个线程共享访问的,提高了资源使用率
一般来说, redis-key采用字符串序列化; redis-value采用json序列化, json的体积小,可读性高,不需要实现serializer接口。
/**
* 对redis的配置.
*/
@Configuration
public class RedisConfig {
@Autowired
private RedisConnectionFactory redisConnectionFactory;
/**
* redis重写RedisTemplate.
*/
@Bean
public RedisTemplate redisTemplate() {
RedisTemplate redisTemplate = new RedisTemplate();
RedisSerializer<String> stringSerializer = new StringRedisSerializer();
Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
ObjectMapper om = new ObjectMapper();
om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
//序列化时允许非常量字段均输出类型,即redis序列化后带有类型
om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
jackson2JsonRedisSerializer.setObjectMapper(om);
// redis key的序列化
redisTemplate.setKeySerializer(stringSerializer);
redisTemplate.setHashKeySerializer(stringSerializer);
// redis value的序列化
redisTemplate.setValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.setHashValueSerializer(jackson2JsonRedisSerializer);
redisTemplate.setConnectionFactory(redisConnectionFactory);
return redisTemplate;
}
}上面代码中,om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL)产生的json串是带有类型的,这样再反序列化时可以直接通过类型去推断。
AILOGO
LOGO123旗下的AI智能LOGO生成器,只需输入品牌名称就能免费在线生成公司logo设计及配套企业VI,轻松打造您的个性品牌!
139
查看详情
[
"com.lind.basic.entity.Token",
{
"credentials": "ok",
"region": "hello",
"bucket": null
}
]看一下添加和读取的代码
@GetMapping("set")
public String set() throws JsonProcessingException {
Token token = Token.builder()
.credentials("ok")
.region("hello")
.build();
redisTemplate.opsForValue().set("test:user", token);//redisTemplate帮我们序列化
redisTemplate.opsForHash().put("author", "zzl", token);
return "OK";
}
@GetMapping("get")
public Token get() throws IOException {
return (Token) redisTemplate.opsForValue().get("test:user");
}注意:对于实体类Token它应该有一个无参构造方法,这是反序列化时需要的。
以上就是springboot中的redis怎么正确使用的详细内容,更多请关注其它相关文章!
# SpringBoot
# 横栏网站seo优化
# 乐平律师网站推广平台
# 广德网站建设价格
# 就能
# 是有
# 也有
# 您的
# 这是
# 自己的
# 如何实现
# 网络带宽
# 多个
# 序列化
# redis
# seo属于什么广告类
# 威县seo网站优化
# 宿迁seo推广价位
# 网站优化课程顾问
# 做网站推广行情怎么样啊
# 网站建设感悟心得
# 网页seo优化地址
相关栏目:
【
Google疑问12 】
【
Facebook疑问10 】
【
优化推广96088 】
【
技术知识133117 】
【
IDC资讯59369 】
【
网络运营7196 】
【
IT资讯61894 】
相关推荐:
网易云音乐闹钟铃声设置教程
青橙手机语音助手怎么唤醒_青橙手机语音助手设置与唤醒方法
mysql数据库索引类型有哪些_mysql索引类型解析
TikTok视频播放不流畅怎么办 TikTok视频播放优化方法
Win10如何关闭开机锁屏界面_Windows10跳过锁屏直接登录设置
抖音网页版官方链接 抖音网页版官网链接入口
网页版网易云音乐入口_网易云音乐在线官网登录
C++ priority_queue怎么用_C++优先队列底层实现与自定义比较器
123平台官方登录入口 123邮箱网页端在线沟通工具
食品生产用水只要符合国家规定的生活饮用水卫生标准就可以吗
b站怎么用微信登录_b站微信登录方法
WPS长文档分栏排版不乱方法_WPS分栏+分节符报纸排版教程
天天漫画2025最新入口 天天漫画永久有效登录入口
PHP中获取HTTP响应状态消息:方法与限制
Yandex浏览器官方入口_Yandex搜索引擎中文版
如何配置VS Code作为您Git操作的默认编辑器
微信网页版在线登录 微信网页版在线使用入口
苹果SE如何开启单手模式_苹果SE单手操作功能
VS Code中的Tailwind CSS IntelliSense插件使用技巧
Sublime Text怎么关闭自动完成_Sublime禁用Auto Complete设置
Django模型动态关联检查:高效管理复杂关系
vivo浏览器怎么离线保存网页 vivo浏览器下载完整页面以便无网络时阅读
j*a中赋值运算符是什么?
《百度畅听版》关闭兴趣推荐方法
Golang如何测试结构体方法_Golang reflect方法测试与调用技巧
Yandex俄罗斯搜索引擎官网入口 Yandex网页端直接访问
C++ optional用法详解_C++17处理可能为空的返回值
《爱南宁》认证电动车方法
创客贴登录页面入口 创客贴网页版最新网址链接
MongoDB聚合管道:高效统计列表中各项的文档数量
《气泡星球》兑换码礼包大全
PHP魔术方法__set与__isset:设计考量、性能权衡与静态分析的视角
C++ cast类型转换总结_C++ reinterpret_cast与const_cast的使用
一点万象签到领积分指南
windows10怎么开启卓越性能_windows10电源选项代码激活
《爱笔思画x》涂色教程
微博网页版访问入口 微博网页版网页端使用指南
《优志愿》修改手机号方法
怎样让Windows 11的开始菜单恢复经典样式_Open-Shell工具使用指南【怀旧】
鸣潮历史学家灯塔位置一览
外媒评《燕云十六声》DIY载具新玩法:很像《塞尔达传说王国之泪》!
VS Code源代码管理(SCM)视图的进阶使用技巧
我的世界官方网址入口 我的世界游戏主页直达入口
美发店速赢秘籍
顺丰快递在线查询系统 顺丰快递官方查单入口
VS Code快捷键when上下文子句的妙用
《星露谷物语》克林特好感度事件介绍
Scipy Sparse CSR 矩阵非零元素行级遍历的最佳实践
空腹吃苹果好吗 苹果空腹摄入指南
抖音作品被限流怎么办 抖音内容优化与流量恢复方法
2023-05-29
运城市盐湖区信雨科技有限公司是一家深耕海外推广领域十年的专业服务商,作为谷歌推广与Facebook广告全球合作伙伴,聚焦外贸企业出海痛点,以数字化营销为核心,提供一站式海外营销解决方案。公司凭借十年行业沉淀与平台官方资源加持,打破传统外贸获客壁垒,助力企业高效开拓全球市场,成为中小企业出海的可靠合作伙伴。