SpringBoot集成redis
一、概述
redis是一个开源免费的高性能内存数据库。其可做本地缓存也可做分布式缓存。
今天主要介绍下ubuntu服务器安装redis,安装好后和SpringBoot做集成测试。
二、示例
ps:如果是买的商业服务器,记得把对应的端口打开,不然远程无法连接。
1.安装步骤
第一步:执行命令
sudo apt update
第二步:执行命令
sudo apt-get install redis-server
第三步:打开以下文件设置密码
sudo vim /etc/redis/redis.conf
找到:requirepass 设置你的密码 。
示例:requirepass 123456
第四步:允许redis远程访问,搜索redis.conf文件找到下面这句话,并注释掉(因为redis默认本机访问) #注释bind #bind 127.0.0.1
第五步:启动、关闭、重启命令 sudo service /etc/init.d/redis-server start #启动 sudo service /etc/init.d/redis-server stop #关闭 sudo service /etc/init.d/redis-server restart #重启
根据以上命令启动就行了。可以安装一个redis客户端进行测试,如果连接上测试图如下
2.和SpringBoot集成测试
第一步:在项目中依赖redis
<!-- 集成redis-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
第二步:在application.yml中配置redis redis: #在ubuntu上启动service使用 sudo service /etc/init.d/redis-server start host: 你的主机地址 port: redis端口号 database: 0 timeout: 1800000 #超时时间 password: redis密码 lettuce: pool: #最大阻塞等待时间 ,负数表示没有限制 max-wait: -1 #连接池最大空闲连接 max-idle: 8 #连接池中最小空闲连接 min-idle: 0 #连接池最大连接数,负数表示没有限制 max-active: 50
第三步:配置RedisConfig类 @Configuration//配置类 public class RedisConfig { /** * redisTemplate相关配置 * * @param factory * @return */ @Bean public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) { RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>(); //配置连接工厂 redisTemplate.setConnectionFactory(factory); //使用Jackson2JsonRedisSerializer来序列化和反序列化redis的value值(默认使用JDK的序列化方式) Jackson2JsonRedisSerializer jacksonSeial = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); //指定要序列化的域,field,get和set,以及修饰符范围,ANY是都有包括private和public om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); // 指定序列化输入的类型,类必须是非final修饰的,final修饰的类,比如String,Integer等会跑出异常 om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jacksonSeial.setObjectMapper(om); // 值采用json序列化 redisTemplate.setValueSerializer(jacksonSeial); //使用StringRedisSerializer来序列化和反序列化redis的key值 redisTemplate.setKeySerializer(new StringRedisSerializer()); // 设置hash key 和value序列化模式 redisTemplate.setHashKeySerializer(new StringRedisSerializer()); redisTemplate.setHashValueSerializer(jacksonSeial); redisTemplate.afterPropertiesSet(); return redisTemplate; } }
第四步:编写Redis工具(这里只测试简单的key-value) @Component public class RedisUtil<T> { @Autowired RedisTemplate<String, T> redisTemplate; /** * 根据key获取 redis缓存中的值 * * @param key key * @return */ public T getValue(String key) { return redisTemplate.opsForValue().get(key); } /** * 向redis中设置值 * * @param key * @param value */ public void setValue(String key, T value) { redisTemplate.opsForValue().set(key, value); } }
第五步:使用Redis工具 @Slf4j @Service public class VideoBannerServiceImpl implements IVideoBannerService { @Autowired VideoBannerMapper videoBannerMapper; @Autowired RedisUtil<List<VideoBanner>> redisUtil; @Override public ResultOk getBanners() { String key = "video_banner_list"; List<VideoBanner> banners = redisUtil.getValue(key); if (banners == null || banners.isEmpty()) { banners = videoBannerMapper.getBanners(); redisUtil.setValue(key, banners); log.info("获取banner列表并执行了数据库操作"); } return ResultOk.ok(200, "查询所有的banner图", banners); } }
第六步:测试,多点几次这个接口,会发现只有第一次执行了数据库查询操作,其他的点击,都走的是redis缓存
第七步:看看redis缓存长啥样
好了,写完收工
分类:
Java / SpringBoot
, redis
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· 单线程的Redis速度为什么快?
· 展开说说关于C#中ORM框架的用法!
· Pantheons:用 TypeScript 打造主流大模型对话的一站式集成库
· SQL Server 2025 AI相关能力初探