广告
返回顶部
首页 > 资讯 > 后端开发 > Python >SpringBoot集成Redis—使用RedisRepositories详解
  • 667
分享到

SpringBoot集成Redis—使用RedisRepositories详解

2024-04-02 19:04:59 667人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

目录SpringBoot集成Redis 1.添加redis依赖2.在application.properties中添加redis配置信息3.springBoot启动类中添加

SpringBoot集成Redis

 1.添加redis依赖

<dependency>
  <groupId>org.springframework.boot</groupId>
  <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
  <groupId>org.apache.commons</groupId>
  <artifactId>commons-pool2</artifactId>
</dependency>

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中的数据
@SpringBootApplication
public 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:id
public class UserEntity{
    @Id
    private Long id; 
    private String name; 
    private Integer age; 
    private Date createTime = new Date();
}

5.创建Dao层——数据操作层

@Repository
public interface UserDao extends CrudRepository<UserEntity,Long> {
}

6.创建Service层——服务层

@Service
public class UserService {
 
    @Autowired
    private UserDao userDao;
 
//因为使用了RedisRepositories,所以简单的crud将不用使用RedisTemplate
//    @Autowired
//    private RedisTemplate redisTemplate; 
 
    
    public void save(UserEntity user){
        //redisTemplate.opsForValue().set(new Random().nextDouble() + "",user); 
        userDao.save(user); 
    }
 
    
    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;
 
    
    @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";
    }
 
    
    @GetMapping("find/{id}")
    public String find(@PathVariable Long id){
       UserEntity user = userService.findOne(id);
 
        System.out.println(user);
        return "success";
    }
}

8.redis配置类

@Configuration
public class RedisConfig {
 
    @Bean
    public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory factory) {
        RedisTemplate<String, Object> template = new RedisTemplate<String, Object>();
        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封装工具类

@Component
public class RedisUtils {
 
	@Autowired
	private RedisTemplate<String, Object> redisTemplate;
 
	// =============================common============================
 
	
	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;
		}
	}
 
	
	public long getExpire(String key) {
		return redisTemplate.getExpire(key, TimeUnit.SECONDS);
	}
 
	
	public boolean hasKey(String key) {
		try {
			return redisTemplate.hasKey(key);
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}
 
	
	@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=============================
 
	
	public  Object get(String key) {
		return key == null ? null : redisTemplate.opsForValue().get(key);
	}
 
	
	public boolean set(String key, Object value) {
		try {
			redisTemplate.opsForValue().set(key, value);
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return 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;
		}
	}
 
	
	public long incr(String key, long delta) {
		if (delta < 0) {
			throw new RuntimeException("递增因子必须大于0");
		}
		return redisTemplate.opsForValue().increment(key, delta);
	}
 
	
	public long decr(String key, long delta) {
		if (delta < 0) {
			throw new RuntimeException("递减因子必须大于0");
		}
		return redisTemplate.opsForValue().increment(key, -delta);
	}
	// ================================Map=================================
 
	
	public Object hget(String key, String item) {
		return redisTemplate.opsForHash().get(key, item);
	}
 
	
	public Map<Object, Object> hmget(String key) {
		return redisTemplate.opsForHash().entries(key);
	}
 
	
	public boolean hmset(String key, Map<String, Object> map) {
		try {
			redisTemplate.opsForHash().putAll(key, map);
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}
 
	
	public boolean hmset(String key, Map<String, Object> map, long time) {
		try {
			redisTemplate.opsForHash().putAll(key, map);
			if (time > 0) {
				expire(key, time);
			}
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}
 
	
	public boolean hset(String key, String item, Object value) {
		try {
			redisTemplate.opsForHash().put(key, item, value);
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}
 
	
	public boolean hset(String key, String item, Object value, long time) {
		try {
			redisTemplate.opsForHash().put(key, item, value);
			if (time > 0) {
				expire(key, time);
			}
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}
 
	
	public void hdel(String key, Object... item) {
		redisTemplate.opsForHash().delete(key, item);
	}
 
	
	public boolean hHasKey(String key, String item) {
		return redisTemplate.opsForHash().hasKey(key, item);
	}
 
	
	public double hincr(String key, String item, double by) {
		return redisTemplate.opsForHash().increment(key, item, by);
	}
 
	
	public double hdecr(String key, String item, double by) {
		return redisTemplate.opsForHash().increment(key, item, -by);
	}
	// ============================set=============================
 
	
	public Set<Object> sGet(String key) {
		try {
			return redisTemplate.opsForSet().members(key);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}
 
	
	public boolean sHasKey(String key, Object value) {
		try {
			return redisTemplate.opsForSet().isMember(key, value);
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}
 
	
	public long sSet(String key, Object... values) {
		try {
			return redisTemplate.opsForSet().add(key, values);
		} catch (Exception e) {
			e.printStackTrace();
			return 0;
		}
	}
 
	
	public long sSetAndTime(String key, long time, Object... values) {
		try {
			Long count = redisTemplate.opsForSet().add(key, values);
			if (time > 0)
				expire(key, time);
			return count;
		} catch (Exception e) {
			e.printStackTrace();
			return 0;
		}
	}
 
	
	public long sGetSetSize(String key) {
		try {
			return redisTemplate.opsForSet().size(key);
		} catch (Exception e) {
			e.printStackTrace();
			return 0;
		}
	}
 
	
	public long setRemove(String key, Object... values) {
		try {
			Long count = redisTemplate.opsForSet().remove(key, values);
			return count;
		} catch (Exception e) {
			e.printStackTrace();
			return 0;
		}
	}
	// ===============================list=================================
 
	
	public List<Object> lGet(String key, long start, long end) {
		try {
			return redisTemplate.opsForList().range(key, start, end);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}
 
	
	public long lGetListSize(String key) {
		try {
			return redisTemplate.opsForList().size(key);
		} catch (Exception e) {
			e.printStackTrace();
			return 0;
		}
	}
 
	
	public Object lGetIndex(String key, long index) {
		try {
			return redisTemplate.opsForList().index(key, index);
		} catch (Exception e) {
			e.printStackTrace();
			return null;
		}
	}
 
	
	public boolean lSet(String key, Object value) {
		try {
			redisTemplate.opsForList().rightPush(key, value);
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}
 
	
	public boolean lSet(String key, Object value, long time) {
		try {
			redisTemplate.opsForList().rightPush(key, value);
			if (time > 0)
				expire(key, time);
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}
 
	
	public boolean lSet(String key, List<Object> value) {
		try {
			redisTemplate.opsForList().rightPushAll(key, value);
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}
 
	
	public boolean lSet(String key, List<Object> value, long time) {
		try {
			redisTemplate.opsForList().rightPushAll(key, value);
			if (time > 0)
				expire(key, time);
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}
 
	
	public boolean lUpdateIndex(String key, long index, Object value) {
		try {
			redisTemplate.opsForList().set(key, index, value);
			return true;
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}
 
	
	public long lRemove(String key, long count, Object value) {
		try {
			Long remove = redisTemplate.opsForList().remove(key, count, value);
			return remove;
		} catch (Exception e) {
			e.printStackTrace();
			return 0;
		}
	}
}

以上为个人经验,希望能给大家一个参考,也希望大家多多支持编程网。

--结束END--

本文标题: SpringBoot集成Redis—使用RedisRepositories详解

本文链接: https://www.lsjlt.com/news/142553.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • SpringBoot集成Redis—使用RedisRepositories详解
    目录SpringBoot集成Redis 1.添加redis依赖2.在application.properties中添加redis配置信息3.SpringBoot启动类中添加...
    99+
    2022-11-13
  • SpringBoot集成Redis如何使用RedisRepositories
    这篇“SpringBoot集成Redis如何使用RedisRepositories”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这...
    99+
    2023-06-29
  • Java SpringBoot 集成 Redis详解
    目录1、概述Redis是什么?Redis能该干什么?特性2、测试Redis3、自定义redisTemplate1、概述 Redis是什么? Redis(Remote Dictiona...
    99+
    2022-11-12
  • SpringBoot集成Redis流程详解
    目录第一步,导入jar包第二步,编写配置类第三步,编写util类第四步,配置yml第一步,导入jar包 <!--Redis--> <depende...
    99+
    2023-05-19
    SpringBoot集成Redis SpringBoot Redis
  • SpringBoot集成Redis的思路详解
    目录SpringBoot集成Redis1、概述2、测试Redis3、自定义redisTemplateSpringBoot集成Redis 1、概述 Redis是什么? Redis(...
    99+
    2022-11-12
  • SpringBoot集成Redis使用Lettuce
            Redis是最常用的KV数据库,Spring 通过模板方式(RedisTemplate)提供了对Redis的数据查询和操作功能。本文主要介绍基于RedisTemplate + lettuce方式对Redis进行查询和操作...
    99+
    2023-09-05
    redis spring boot java
  • 怎么使用springBoot集成redis
    这篇文章将为大家详细讲解有关怎么使用springBoot集成redis,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。REmote DIctionary Server(Re...
    99+
    2022-10-18
  • SpringBoot集成如何使用Redis
    小编给大家分享一下SpringBoot集成如何使用Redis,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!SpringBoot集成使用redisJedis 是 Redis 官方推出的一款面向 Java 的客户端,提供了很多...
    99+
    2023-06-29
  • springboot集成redis的使用注解有哪些
    这篇文章给大家分享的是有关springboot集成redis的使用注解有哪些的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。redis简介:Redis是当前比较热门的NOSQL系统之一,它是一个开源的使用ANSI&...
    99+
    2023-06-29
  • SpringBoot集成elasticsearch使用图文详解
    目录前言elasticsearch简介elasticsearch使用环境安装代码演示普通查询高亮查询结束前言 此文适合了解了es相关概念以及基础知识的同学阅读 elasticsear...
    99+
    2023-05-16
    springboot集成elasticsearch springboot集成elasticsearch样例项目 springboot集成Elasticsearch
  • 使用springBoot集成redis的案例
    小编给大家分享一下使用springBoot集成redis的案例,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!springboot...
    99+
    2022-10-18
  • 一起来看看springboot集成redis的使用注解
    目录redis简介:引入依赖:编写application.properties文件编写配置类:springboot的redis注解介绍(1)缓存@Cacheable(2)缓存@Cac...
    99+
    2022-11-13
  • SpringBoot集成使用Redis及搭建过程
    目录SpringBoot集成使用redis搭建1.导入jar包2.配置连接redis3.添加配置类RedisConfig4.注入RedisTemplate5.测试和使用使用实例:Sp...
    99+
    2022-11-13
  • springBoot详解集成Swagger流程
    目录Swagger简介SpringBoot集成Swagger配置SwaggerSwagger配置扫描接口配置是否启动Swagger配置API文档的分组实体类配置常用的注解小结目标: ...
    99+
    2022-11-13
  • springboot优雅集成redisson详解
    目录集成及注意事项手动注入redisson配置具体yaml配置注解方式需要一个切面集成及注意事项 上一篇文章大白话说了一下redisson的可重入、可续约、阻塞、时间轮、红锁、联锁、...
    99+
    2022-11-13
    spring boot集成redisson spring boot redisson
  • SpringBoot集成MQTT示例详解
    目录引言MQTT特点Apache-Apollo下载配置与启动SpringBoot2的开发添加依赖自定义配置配置MQTT发布和订阅消息发布器发送消息入口类引言 特别提醒: 文...
    99+
    2022-11-13
  • springboot集成redis并使用redis生成全局唯一索引ID
    部署redis Windows下搭建Reids本地集群,可参考https://www.jb51.net/article/242520.htm springboot集成 redis p...
    99+
    2022-11-13
  • Spring Boot Redis 集成配置详解
    spring Boot 熟悉后,集成一个外部扩展是一件很容易的事,集成Redis也很简单,看下面步骤配置:一、添加pom依赖 <dependency> <groupId>org.springframe...
    99+
    2023-05-31
    spring boot redis
  • springboot 集成dubbo的步骤详解
    目录第一步 搭建zookeeper环境第二步 springboot集成dubbo1.项目目录机构2.代码编写2.1 api目录2.2 consumer目录 web访问、接口调用以及d...
    99+
    2022-11-13
  • Springboot集成mqtt客户端详解
    目录1. 前言2. 引入依赖3. 配置文件4. MQTT消息类5. MQTT消息接收器6. MQTT消息发送器7. 测试MQTT发送消息1. 前言 ​ 这里我们使用springboo...
    99+
    2022-11-13
    Springboot集成mqtt Springboot mqtt
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作