SpringBoot整合SpringDataRedis

àì夳堔傛蜴生んèń 2022-01-29 04:07 348阅读 0赞

  本文介绍下SpringBoot如何整合SpringDataRedis框架的,SpringDataRedis具体的内容在前面已经介绍过了,可自行参考。

SpringBoot整合SpringDataRedis

1.创建项目添加依赖

  创建SpringBoot项目,并添加如下依赖:

  1. <dependencies>
  2. <!-- springBoot 的启动器 -->
  3. <dependency>
  4. <groupId>org.springframework.boot</groupId>
  5. <artifactId>spring-boot-starter-web</artifactId>
  6. </dependency>
  7. <!-- Spring Data Redis 的启动器 -->
  8. <dependency>
  9. <groupId>org.springframework.boot</groupId>
  10. <artifactId>spring-boot-starter-data-redis</artifactId>
  11. </dependency>
  12. <dependency>
  13. <groupId>org.springframework.boot</groupId>
  14. <artifactId>spring-boot-starter-test</artifactId>
  15. <scope>test</scope>
  16. </dependency>
  17. <dependency>
  18. <groupId>redis.clients</groupId>
  19. <artifactId>jedis</artifactId>
  20. <version>2.9.0</version>
  21. </dependency>
  22. </dependencies>

2.设置application.properties文件

  1. spring.redis.jedis.pool.max-idle=10
  2. spring.redis.jedis.pool.min-idle=5
  3. spring.redis.pool.max-total=20
  4. spring.redis.hostName=192.168.88.120
  5. spring.redis.port=6379

3.添加Redis的配置类

  添加Redis的java配置类,设置相关的信息。

  1. /** * @program: springboot-redis-demo * @description: Redis的配置类 * @author: 波波烤鸭 * @create: 2019-05-20 23:40 */
  2. @Configuration
  3. public class RedisConfig {
  4. /** * 1.创建JedisPoolConfig对象。在该对象中完成一些链接池配置 * @ConfigurationProperties:会将前缀相同的内容创建一个实体。 */
  5. @Bean
  6. @ConfigurationProperties(prefix="spring.redis.pool")
  7. public JedisPoolConfig jedisPoolConfig(){
  8. JedisPoolConfig config = new JedisPoolConfig();
  9. /*//最大空闲数 config.setMaxIdle(10); //最小空闲数 config.setMinIdle(5); //最大链接数 config.setMaxTotal(20);*/
  10. System.out.println("默认值:"+config.getMaxIdle());
  11. System.out.println("默认值:"+config.getMinIdle());
  12. System.out.println("默认值:"+config.getMaxTotal());
  13. return config;
  14. }
  15. /** * 2.创建JedisConnectionFactory:配置redis链接信息 */
  16. @Bean
  17. @ConfigurationProperties(prefix="spring.redis")
  18. public JedisConnectionFactory jedisConnectionFactory(JedisPoolConfig config){
  19. System.out.println("配置完毕:"+config.getMaxIdle());
  20. System.out.println("配置完毕:"+config.getMinIdle());
  21. System.out.println("配置完毕:"+config.getMaxTotal());
  22. JedisConnectionFactory factory = new JedisConnectionFactory();
  23. //关联链接池的配置对象
  24. factory.setPoolConfig(config);
  25. //配置链接Redis的信息
  26. //主机地址
  27. /*factory.setHostName("192.168.70.128"); //端口 factory.setPort(6379);*/
  28. return factory;
  29. }
  30. /** * 3.创建RedisTemplate:用于执行Redis操作的方法 */
  31. @Bean
  32. public RedisTemplate<String,Object> redisTemplate(JedisConnectionFactory factory){
  33. RedisTemplate<String, Object> template = new RedisTemplate<>();
  34. //关联
  35. template.setConnectionFactory(factory);
  36. //为key设置序列化器
  37. template.setKeySerializer(new StringRedisSerializer());
  38. //为value设置序列化器
  39. template.setValueSerializer(new StringRedisSerializer());
  40. return template;
  41. }
  42. }

4.添加pojo

  1. /** * @program: springboot-redis-demo * @description: Users * @author: 波波烤鸭 * @create: 2019-05-20 23:47 */
  2. public class Users implements Serializable {
  3. private Integer id;
  4. private String name;
  5. private Integer age;
  6. public Integer getId() {
  7. return id;
  8. }
  9. public void setId(Integer id) {
  10. this.id = id;
  11. }
  12. public String getName() {
  13. return name;
  14. }
  15. public void setName(String name) {
  16. this.name = name;
  17. }
  18. public Integer getAge() {
  19. return age;
  20. }
  21. public void setAge(Integer age) {
  22. this.age = age;
  23. }
  24. @Override
  25. public String toString() {
  26. return "Users [id=" + id + ", name=" + name + ", age=" + age + "]";
  27. }
  28. }

5.单元测试

  1. @RunWith(SpringRunner.class)
  2. @SpringBootTest(classes = SpringbootRedisDemoApplication.class)
  3. public class SpringbootRedisDemoApplicationTests {
  4. @Autowired
  5. private RedisTemplate<String, Object> redisTemplate;
  6. /** * 添加一个字符串 */
  7. @Test
  8. public void testSet(){
  9. this.redisTemplate.opsForValue().set("key", "bobokaoya...");
  10. }
  11. /** * 获取一个字符串 */
  12. @Test
  13. public void testGet(){
  14. String value = (String)this.redisTemplate.opsForValue().get("key");
  15. System.out.println(value);
  16. }
  17. /** * 添加Users对象 */
  18. @Test
  19. public void testSetUesrs(){
  20. Users users = new Users();
  21. users.setAge(20);
  22. users.setName("张三丰");
  23. users.setId(1);
  24. //重新设置序列化器
  25. this.redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
  26. this.redisTemplate.opsForValue().set("users", users);
  27. }
  28. /** * 取Users对象 */
  29. @Test
  30. public void testGetUsers(){
  31. //重新设置序列化器
  32. this.redisTemplate.setValueSerializer(new JdkSerializationRedisSerializer());
  33. Users users = (Users)this.redisTemplate.opsForValue().get("users");
  34. System.out.println(users);
  35. }
  36. /** * 基于JSON格式存Users对象 */
  37. @Test
  38. public void testSetUsersUseJSON(){
  39. Users users = new Users();
  40. users.setAge(20);
  41. users.setName("李四丰");
  42. users.setId(1);
  43. this.redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(Users.class));
  44. this.redisTemplate.opsForValue().set("users_json", users);
  45. }
  46. /** * 基于JSON格式取Users对象 */
  47. @Test
  48. public void testGetUseJSON(){
  49. this.redisTemplate.setValueSerializer(new Jackson2JsonRedisSerializer<>(Users.class));
  50. Users users = (Users)this.redisTemplate.opsForValue().get("users_json");
  51. System.out.println(users);
  52. }
  53. }

在这里插入图片描述

发表评论

表情:
评论列表 (有 0 条评论,348人围观)

还没有评论,来说两句吧...

相关阅读

    相关 SpringDataRedis介绍

      实际项目中我们一般都会使用Redis来作为我们的缓存组件,往往又会和Spring一块使用,虽然Redis官方提供的有Jedis等客户端工具,但是使用的时候还是有些不方便,这