SpringBoot集成Redis如何使用RedisRepositories
发表于:2025-11-20 作者:千家信息网编辑
千家信息网最后更新 2025年11月20日,这篇"SpringBoot集成Redis如何使用RedisRepositories"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完
千家信息网最后更新 2025年11月20日SpringBoot集成Redis如何使用RedisRepositories
这篇"SpringBoot集成Redis如何使用RedisRepositories"文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇"SpringBoot集成Redis如何使用RedisRepositories"文章吧。
SpringBoot集成Redis
1.添加redis依赖
org.springframework.boot spring-boot-starter-data-redis org.apache.commons commons-pool2
2.在application.properties中添加redis配置信息
spring.redis.host=127.0.0.1# Redis服务器连接端口spring.redis.port=6379# Redis服务器连接密码(默认为空)spring.redis.password=# 连接池最大连接数(使用负值表示没有限制)spring.redis.lettuce.pool.max-active=8# 连接池最大阻塞等待时间(使用负值表示没有限制)spring.redis.lettuce.pool.max-wait=-1# 连接池中的最大空闲连接spring.redis.lettuce.pool.max-idle=8# 连接池中的最小空闲连接spring.redis.lettuce.pool.min-idle=0# 连接超时时间(毫秒)spring.redis.timeout=30000
3.SpringBoot启动类中添加注解配置
@EnableCaching@EnableRedisRepositories//注解开启使用RedisRepositories//CRUD操作将会操作redis中的数据@SpringBootApplicationpublic class RedisApplication { public static void main(String[] args) { SpringApplication.run(RedisApplication.class, args); } }4.创建实体类Entity
@Data@RedisHash("user")//RedisHash非常重要//user表示在redis中新建user集合//之后所有的UserEntity的保存操作全部会保存在user这个集合中//保存时Key的格式为--user:idpublic class UserEntity{ @Id private Long id; private String name; private Integer age; private Date createTime = new Date();}5.创建Dao层——数据操作层
@Repositorypublic interface UserDao extends CrudRepository{}
6.创建Service层——服务层
@Servicepublic class UserService { @Autowired private UserDao userDao; //因为使用了RedisRepositories,所以简单的crud将不用使用RedisTemplate// @Autowired// private RedisTemplate redisTemplate; /** * 按user:id的方式存入redis * @param user */ public void save(UserEntity user){ //redisTemplate.opsForValue().set(new Random().nextDouble() + "",user); userDao.save(user); } /** * 根据key从redis中查找对应value * @param id * @return */ public UserEntity findOne(Long id){ //UserEntity user = (UserEntity) redisTemplate.opsForValue().get(key); UserEntity user = userDao.findById(id).get(); return user; }}7.创建Controller层——控制层
@RestController@RequestMapping("user")public class UserController { @Autowired private UserService userService; /** * 保存到redis中 * @return */ @GetMapping("save") public String save(){ UserEntity user = new UserEntity(); user.setName(String.valueOf(new Random().nextInt(100000))); user.setAge(new Random().nextInt(100000)); userService.save(user); System.out.println(user.toString()); return "success"; } /** * 根据key从redis中查找value * @param id * @return */ @GetMapping("find/{id}") public String find(@PathVariable Long id){ UserEntity user = userService.findOne(id); System.out.println(user); return "success"; }}8.redis配置类
@Configurationpublic class RedisConfig { @Bean public RedisTemplate redisTemplate(RedisConnectionFactory factory) { RedisTemplate template = new RedisTemplate(); template.setConnectionFactory(factory); Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class); ObjectMapper om = new ObjectMapper(); om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY); om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL); jackson2JsonRedisSerializer.setObjectMapper(om); StringRedisSerializer stringRedisSerializer = new StringRedisSerializer(); // key采用String的序列化方式 template.setKeySerializer(stringRedisSerializer); // hash的key也采用String的序列化方式 template.setHashKeySerializer(stringRedisSerializer); // value序列化方式采用jackson template.setValueSerializer(jackson2JsonRedisSerializer); // hash的value序列化方式采用jackson template.setHashValueSerializer(jackson2JsonRedisSerializer); template.afterPropertiesSet(); return template; }} Redis中的结构为
redis封装工具类
@Componentpublic class RedisUtils { @Autowired private RedisTemplate redisTemplate; // =============================common============================ /** * 指定缓存失效时间 * * @param key 键 * @param time 时间(秒) * @return */ public boolean expire(String key, long time) { try { if (time > 0) { redisTemplate.expire(key, time, TimeUnit.SECONDS); } return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 根据key 获取过期时间 * * @param key 键 不能为null * @return 时间(秒) 返回0代表为永久有效 */ public long getExpire(String key) { return redisTemplate.getExpire(key, TimeUnit.SECONDS); } /** * 判断key是否存在 * * @param key 键 * @return true 存在 false不存在 */ public boolean hasKey(String key) { try { return redisTemplate.hasKey(key); } catch (Exception e) { e.printStackTrace(); return false; } } /** * 删除缓存 * * @param key 可以传一个值 或多个 */ @SuppressWarnings("unchecked") public void del(String... key) { if (key != null && key.length > 0) { if (key.length == 1) { redisTemplate.delete(key[0]); } else { redisTemplate.delete(CollectionUtils.arrayToList(key)); } } } // ============================String============================= /** * 普通缓存获取 * * @param key 键 * @return 值 */ public Object get(String key) { return key == null ? null : redisTemplate.opsForValue().get(key); } /** * 普通缓存放入 * * @param key 键 * @param value 值 * @return true成功 false失败 */ public boolean set(String key, Object value) { try { redisTemplate.opsForValue().set(key, value); return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 普通缓存放入并设置时间 * * @param key 键 * @param value 值 * @param time 时间(秒) time要大于0 如果time小于等于0 将设置无限期 * @return true成功 false 失败 */ public boolean set(String key, Object value, long time) { try { if (time > 0) { redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS); } else { set(key, value); } return true; } catch (Exception e) { e.printStackTrace(); return false; } } /** * 递增 * * @param key 键 * @param delta 要增加几(大于0) * @return */ public long incr(String key, long delta) { if (delta < 0) { throw new RuntimeException("递增因子必须大于0"); } return redisTemplate.opsForValue().increment(key, delta); } /** * 递减 * * @param key 键 * @param delta 要减少几(小于0) * @return */ public long decr(String key, long delta) { if (delta < 0) { throw new RuntimeException("递减因子必须大于0"); } return redisTemplate.opsForValue().increment(key, -delta); } // ================================Map================================= /** * HashGet * * @param key 键 不能为null * @param item 项 不能为null * @return 值 */ public Object hget(String key, String item) { return redisTemplate.opsForHash().get(key, item); } /** * 获取hashKey对应的所有键值 * * @param key 键 * @return 对应的多个键值 */ public Map 以上就是关于"SpringBoot集成Redis如何使用RedisRepositories"这篇文章的内容,相信大家都有了一定的了解,希望小编分享的内容对大家有帮助,若想了解更多相关的知识内容,请关注行业资讯频道。
时间
缓存
成功
多个
数据
内容
方式
个数
序列
索引
普通
最大
服务
配置
中放
代表
因子
文章
服务器
注解
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
江苏智慧城管软件开发公司
联通的服务器地址如何设置
网络安全法网络安全应急预案等级
无线网络安全类型防蹭
高二网络技术应用计划
类似于数据库操作的题
vf9.0如何打开数据库
芯片软件开发业务领域
计算机网络安全第3版刘远生
名校的身材数据库
数据库设计教程 pdf
网络安全工程师工作简历
湖南虚拟服务器管理软件服务器
传统电脑服务器
数据库营销顾客分析与管理
网络安全 精彩一课
学校网络安全的重要性
数据库字段的长度无限
网络安全宣传周led
sybase数据库游标
对软件开发专业的理解
视频服务器ip改不了
服务器硬盘使用率多少正常
服务器开启文件共享
软件开发技术部门的岗位职责
鄞州手机软件开发系统
昆山途威网络技术怎么样
台湾方面的数据库
失落的方舟美西是哪个服务器
vba数据库另存为