在使用Spring Boot开发应用时,可以使用Redis来实现缓存、分布式锁等功能。在编写业务逻辑代码时,可以通过注入RedisTemplate或StringRedisTemplate对象来操作Redis,如存取数据、设置过期时间、删除数据等。同时,还可以使用Redis的发布订阅机制,通过监听器监听消息,实现消息的发布和订阅功能。本文介绍如何在IDEA里将SpringBoot整合Redis。
一、创建带Redis的SpringBoot项目
创建SpringBoot项目时勾选 Spring Data Redis (Access + Driver),项目创建时会自动导入所需的redis的配置项和包。创建SpringBoot-MyBatis的流程可以参考我的上一篇文章:IntelliJ IDEA搭建SpringBoot-Mybatis项目。
和上个项目不同的地方,额外勾选这个:
二、安装启动redis服务
参考我之前的文章:Windows安装Redis数据库。
三、开发Reids有关的项目代码
1、创建RedisUtil工具类
packagecom.util; importorg.springframework.stereotype.Component; importorg.springframework.data.redis.core.RedisTemplate; importjavax.annotation.Resource; importjava.util.concurrent.TimeUnit; publicclassRedisUtil { privateRedisTemplate<String, Object>redisTemplate; /*** 设置缓存** @param key 缓存key* @param value 缓存value* @param expire 过期时间(单位:秒),传入-1表示永不过期*/publicvoidset(Stringkey, Objectvalue, longexpire) { redisTemplate.opsForValue().set(key, value); if (expire!=-1) { redisTemplate.expire(key, expire, TimeUnit.SECONDS); } } /*** 获取缓存** @param key 缓存key* @return 缓存value*/publicObjectget(Stringkey) { returnredisTemplate.opsForValue().get(key); } /*** 判断缓存是否存在** @param key 缓存key* @return true:存在,false:不存在*/publicbooleanhasKey(Stringkey) { returnredisTemplate.hasKey(key); } /*** 删除缓存** @param key 缓存key*/publicvoiddelete(Stringkey) { redisTemplate.delete(key); } }
2、更新UserController代码
我们新增一个测试接口,通过浏览器访问localhost:8080/redis可以访问到。在UserController里添加代码:
"redis") (publicStringgetRedis(HttpServletRequestrequest)throwsException{ redisUtil.set("key", "value", 300); //设置key为value,有效期为300秒returnredisUtil.get("key").toString(); }
目前完整的UserController.java代码:
packagecom.controller; importjavax.annotation.Resource; importjavax.servlet.http.HttpServletRequest; importcom.util.RedisUtil; importorg.springframework.web.bind.annotation.RequestMapping; importcom.entity.User; importcom.service.UserService; importorg.springframework.web.bind.annotation.RestController; importjava.util.HashMap; importjava.util.Map; publicclassUserController { privateUserServiceuserService; privateRedisUtilredisUtil; "user") (publicStringgetTotal(Useruser,HttpServletRequestrequest)throwsException{ Map<String,Object>map=newHashMap<>(); LonguserCount=userService.getTotal(map); returnuserCount.toString(); } "redis") (publicStringgetRedis(HttpServletRequestrequest)throwsException{ redisUtil.set("key", "value", 300); //设置key为value,有效期为300秒returnredisUtil.get("key").toString(); } }
四、测试redis接口是否成功运行
我们在UserController里把<Key=”key”, Value=”value”>的键值对存入了Redis,然后读取Key为”key”的Value值。
成功运行,返回了正确的Value值。
后面我们就可以根据实际情况在SpringBoot项目里编写调用redis数据库的代码了。