Springboot配置支持Redis实例

2023-05-16

思路:既然使用redis就要添加redis依赖,redis是<key.value>的存储方式,支持字符串存储。有了jar包,就要把我们的数据存进去,读出来。redis不支持存储对象,比如User,所以需要把我们的对象User转换为字符串,再存进去。读取的时候再把json字符串转换为对象User.删除直接使用key就删除了。

1.添加依赖pom.xm;

<!--缓存支持 start--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-redis</artifactId> </dependency>
<!-- gson用于处理redis和实体的转换 --> <dependency> <groupId>com.google.code.gson</groupId> <artifactId>gson</artifactId> <version>2.2.4</version> </dependency>

2.Springboot配置redis,包括配置文件和javaBean配置(都要配置)
1.修改springboot的application.properties 加上下面配置(修改为自己的)

#Redis缓存配置 #Redis数据库名称 spring.redis.database=0 # 主机 spring.redis.host=127.0.0.1 #密码 默认为空 #spring.redis.password= #端口 spring.redis.port=6379 # 最大空闲链接 spring.redis.pool.max-idle=8 # 最小空闲链接 spring.redis.pool.min-idle=0 #连接池最大连接数(使用负值表示没有限制) spring.redis.pool.max-active=8 #连接池最小连接数(使用负值表示没有限制) spring.redis.pool.max-wait=-1 # 连接超时时间(毫秒) spring.redis.timeout=02.javaBean 配置
@Configuration public class RedisCacheConfig {
/**

缓存管理器.
@param redisTemplate * @return */ @Bean public CacheManager cacheManager(RedisTemplate<?, ?> redisTemplate) { CacheManager cacheManager = new RedisCacheManager(redisTemplate); return cacheManager; }@Bean public RedisTemplate<String, String> redisTemplate(RedisConnectionFactory factory) { RedisTemplate<String, String> redisTemplate = new RedisTemplate<String, String>(); redisTemplate.setConnectionFactory(factory); //key序列化方式;(不然会出现乱码;),但是如果方法上有Long等非String类型的话,会报类型转换错误; //所以在没有自己定义key生成策略的时候,以下这个代码建议不要这么写,可以不配置或者自己实现ObjectRedisSerializer //或者JdkSerializationRedisSerializer序列化方式; RedisSerializer<String> redisSerializer = new StringRedisSerializer();//Long类型不可以会出现异常信息; redisTemplate.setKeySerializer(redisSerializer); redisTemplate.setHashKeySerializer(redisSerializer); return redisTemplate; }
配置到这里就结束了,这时候可以测试存,读,删了。(记得打开redis)
3.利用RedisTemplate封装一个基本的工具类UserRedis,方便使用

@Repository public class UserRedis { @Autowired RedisTemplate<String, String> redisTemplate;
/**

加入缓存,设定有效期
@param key * @param time * @param object */ public void add(String key, Long time, Object object) { Gson gson = new Gson(); redisTemplate.opsForValue().set(key, gson.toJson(object), time, TimeUnit.MINUTES); System.out.println("添加到缓存成功---Key:" + key + "---Value:" + object.toString()); }/**
从缓存中获取值
@param key
@return */ public Object get(String key) { Gson gson = new Gson(); Object object = null; String objjson = redisTemplate.opsForValue().get(key); if (!StringUtils.isEmpty(objjson)) { object = gson.fromJson(objjson, Object.class); } System.out.println("从缓存中获取:---Key:" + key + "---value:" + object.toString()); return object; }/**
从缓存中删除
@param key */ public void delete(String key) { redisTemplate.opsForValue().getOperations().delete(key); System.out.println("从缓存中删除完毕--key:" + key); }/**
从缓存中获取List
@param key * @return */ public List<Object> getList(String key) { Gson gson = new Gson(); List<Object> ts = null; String listuser = redisTemplate.opsForValue().get(key); if (!StringUtils.isEmpty(listuser)) { ts = gson.fromJson(listuser, new TypeToken<List>() { //存的是list集合,获取的时候需要指定其类型 }.getType()); } System.out.println("从缓存中获取list---key:" + key); return ts; }
 
4.现在已经封装好了,bean 名称是UserRedis,下面是在一个Controller中测试使用这个bean存,读数据

//添加到缓存 @RequestMapping(value = "/redis/add/{name}") @ResponseBody public String redistestadd(@PathVariable String name) { User user = userServiceImpl.findByUsername(name);//根据用户名查询到用户 userRedis.add(name, 10L, user); return JSON.toJSONString(user);//alibaba.fastjson 也可以把对象数组转为json }//从缓存中读取数据@RequestMapping(value = "/redis/get/{name}") @ResponseBody public String redistestget(@PathVariable String name) { Object user = userRedis.get(name);//根据用户名查询到用户 System.out.println("从缓存中拿到的User:" + user.toString()); return JSON.toJSONString(user);//alibaba.fastjson 也可以把对象数组转为json }//删除数据@RequestMapping(value = "/redis/delete/{name}") @ResponseBody public void redistestdelete(@PathVariable String name) { System.out.println("name:" + name); //根据用户名查询到用户 userRedis.delete(name); }//从缓存读取List对象@RequestMapping(value = "/redis/listget/{name}") @ResponseBody public String redistestlistget(@PathVariable String name) { System.out.println("name:" + name); List<Object> users = userRedis.getList(name); return JSON.toJSONString(users); }

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Springboot配置支持Redis实例 的相关文章

随机推荐

  • Kafka简介

    Kafka简介 在当前的大数据时代 xff0c 第一个挑战是海量数据的收集 xff0c 另一个就是这些数据的分析 数据分析的类型通常有用户行为数据 应用性能跟踪数据 活动数据日志 事件消息等 消息发布机制用于连接各种应用并在它们之间路由消息
  • Flume入门笔记------架构以及应用介绍

    在具体介绍本文内容之前 xff0c 先给大家看一下Hadoop业务的整体开发流程 xff1a 从Hadoop的业务开发流程图中可以看出 xff0c 在大数据的业务处理过程中 xff0c 对于数据的采集是十分重要的一步 xff0c 也是不可避
  • 分布式服务框架dubbo原理解析

    alibaba有好几个分布式框架 xff0c 主要有 xff1a 进行远程调用 类似于RMI的这种远程调用 的 dubbo hsf xff0c jms消息服务 napoli notify xff0c KV数据库 tair 等 这个框架 工具
  • Android Studio Gradle project Sync Failed解决方法

    1 查看项目使用的gradle和本地gradle是否一致 本地gradle一般目录在C Users admin gradle文件夹下面 项目使用的gradle在项目的gradle wrapper properties文件中 distribu
  • Docker not running on windows 10 error: Hardware assisted virtualization and data execution protecti

    Docker not running on windows 10 error Hardware assisted virtualization and data execution protection must be enabled in
  • [高通SDM450][Android9.0]user版本uartlog常开

    文章目录 开发平台基本信息问题描述解决方法user版本调试串口可输入user版本uartlog常开 开发平台基本信息 芯片 SDM450 版本 Android 9 0 kernel msm 4 9 问题描述 user版本调试串口默认只输入调
  • Ubuntu 7.04 乱码解决

    一 解决XMMS乱码问题 菜单乱码的解决 1 sudo ln s etc gtk gtkrc zh CN etc gtk gtkrc zh CN utf 8 2 sudo gedit etc gtk gtkrc zh CN utf 8 填写
  • yii2连接websocket服务实现服务端主动推送消息给客户端

    上一篇写的是websocket的服务 xff0c 这一篇写写调用服务和web端调用 xff0c 接收消息部分 1 调用websocket服务 主动推送消息的方法 lt php namespace common services use co
  • 生产者消费者算法

    span class hljs comment include lt unistd h gt span span class hljs comment include lt stdlib h gt span span class hljs
  • MongoDB ODM 框架MongoMongo-简化你的数据存储

    MongMongo是一个用Java写的ODM框架 xff0c 使得对MongoDB的操作更加便捷 MongoMongo努力为Java开发者提供类似于ActiveORM 或者 Hibernate的操作API 并且保留了MongoDB的sche
  • archlinux安装deb软件步骤

    archlinux安装deb软件步骤 步骤 步骤 安装yay安装debtap安装转换出的pkg软件 注意事项 xff1a 安装yay问题解决 xff1a go语言相关安装debtap问题解决 xff1a git代理设置
  • 第六章 正则,BeautifulSoup,xpath

    文章目录 1 正则1 1 提取字符串1 2 替换1 3 搜索 2 beautifulsoup2 1 各种解析器2 2 提取方式2 3 find方法2 3 1 find2 3 2 find all2 3 3 通过id和类型精确定位2 3 3
  • spring如何获取bean的6种方法,你知道几个?

    spring获取bean的6种方法 Bean工厂 xff08 com springframework beans factory BeanFactory xff09 是Spring框架最核心的接口 xff0c 它提供了高级IoC的配置机制
  • c语言中while与do while循环的主要区别是什么

    while循环与do while循环的区别如下 xff1a 1 循环结构的表达式不同 while循环结构的表达式为 xff1a while xff08 表达式 xff09 循环体 xff1b do while循环结构的表达式为 xff1a
  • MVC设计模式

    MVC的全名是Model View Controller xff0c 是模型 Model xff0d 视图 view xff0d 控制器 controller 的缩写 xff0c 是一种设计模式 它是用一种业务逻辑 数据与界面显示分离的方法
  • MVC 模式及其优缺点

    一 MVC 原理 MVC 是一种程序开发设计模式 它实现了显示模块与功能模块的分离 提高了程序的可维 护性 可移植性 可扩展性与可重用性 xff0c 降低了程序的开发难度 它主要分模型 视图 控制器三层 1 模型 model 它是应用程序的
  • MVC 模式及其优缺点

    一 MVC 原理 MVC 是一种程序开发设计模式 它实现了显示模块与功能模块的分离 提高了程序的可维 护性 可移植性 可扩展性与可重用性 xff0c 降低了程序的开发难度 它主要分模型 视图 控制器三层 1 模型 model 它是应用程序的
  • MyBatis生命周期2的过程(最终)?

    首先加载mybatis config xml总配置文件 xff0c 根据development的参数配置连接数据库 xff1b 查询mappers映射关系 xff0c 找到mapper xml配置文件 执行mapper xml文件 xff0
  • spring boot使用redis做数据缓存

    1 添加redis支持 在pom xml中添加 1 lt dependency gt 2 lt groupId gt org springframework boot lt groupId gt 3 lt artifactId gt spr
  • Springboot配置支持Redis实例

    思路 xff1a 既然使用redis就要添加redis依赖 xff0c redis是 lt key value gt 的存储方式 xff0c 支持字符串存储 有了jar包 xff0c 就要把我们的数据存进去 xff0c 读出来 redis不