springboot中的redis怎么正确使用
发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,这篇"springboot中的redis怎么正确使用"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一
千家信息网最后更新 2025年01月19日springboot中的redis怎么正确使用
这篇"springboot中的redis怎么正确使用"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"springboot中的redis怎么正确使用"文章吧。
redis实现了对数据的缓存,在项目里一些字典数据,会话数据,临时性数据都会向redis来存储,而在springboot里对redis也有支持,一般来说多个线程共同使用一个redis实现是有线程安全的风险的,而每个实现一个线程又太浪费资源,无法控制线程数量是非常危险的,所以就出现了一些redis线程池组件,下面说一下两个主要的组件。
jedis 线程池主要是每个实例有自己的线程,线程可以从它建立的池子里获取
lettuce lettuce是 apache推出的线程池工具,它的redis实例是可以被多个线程共享访问的,提高了资源使用率
redis序列化配置
一般来说, redis-key采用字符串序列化; redis-value采用json序列化, json的体积小,可读性高,不需要实现serializer接口。
/** * 对redis的配置. */@Configurationpublic class RedisConfig { @Autowired private RedisConnectionFactory redisConnectionFactory; /** * redis重写RedisTemplate. */ @Bean public RedisTemplate redisTemplate() { RedisTemplate redisTemplate = new RedisTemplate(); RedisSerializerstringSerializer = 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串是带有类型的,这样再反序列化时可以直接通过类型去推断。
[ "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怎么正确使用"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
序列
线程
内容
数据
类型
一般来说
代码
多个
实例
文章
知识
篇文章
资源
配置
危险
两个
临时性
价值
体积
体积小
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
软件开发怎么进行账务处理
对于维护国家网络安全
2021年网络安全公司50强
华硕路由器接硬盘服务器
极限编程如何应用到软件开发中
北大数据库上机作业
数据库在内网 后端在外网
公民网络安全委
软件开发过程的成果物管理
服务器安全狗访问验证
软件开发形势
数据库管理需要哪些证书
数据库描述安全级别划分指标
网络安全设备停用报告
怀柔区定制软件开发
阿里数据库兼容oracle吗
张店进销存库存软件开发公司
数据泵导出整个数据库
信息网络安全法
贝尔利网络技术有限公司
计算机网络技术第三章的答案
软件开发过程的成果物管理
杭州软件开发平台外包
宣讲网络安全知识小结
延安软件开发有限公司
石狮市峰行网络技术有限公司
备份服务器一般做raid几
传音控股软件开发面试
华为x6000服务器安装方法
缅甸网络服务器