栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Springboot整合RedisTemplate

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Springboot整合RedisTemplate

RedisTemplate是在Jedis的基础上进行了封装

依赖

        
            org.springframework.boot
            spring-boot-starter-data-redis
        

        
            org.apache.commons
            commons-pool2
        
                
            org.springframework.boot
            spring-boot-starter-test
            test
        

配置文件:
application.yml

server:
  port: 8080
spring:
  application:
    name: redisdemo02
  redis:
    host: 192.168.145.128
    password: 123456
    port: 6379
    database: 0


测试链接:

@SpringBootTest
class Redisdemo02ApplicationTests {
    @Resource
    private RedisTemplate redisTemplate;
    @Test
    void contextLoads() {
        System.out.println(redisTemplate);
        //向Redis存入键值对
        redisTemplate.opsForValue().set("javasss","helloworld");
        //从Redis中获取键值对
        System.out.println(redisTemplate.opsForValue().get("javasss"));
    }

}



查看数据库 数据之前还有一些东西
以上存在一些问题:
1.redis的key都是string类型,在模板的泛型中使用Object不太好 string类型value无法存对象
2.redis模板进行存取时:使用客户端窗口常看时 会发现数据之前还会多一些字符,这会导致无法删除
解决方案:
创建RedisConfig类,添加以下代码:

@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate template = new RedisTemplate();
        template.setConnectionFactory(redisConnectionFactory);
        StringRedisSerializer stringRedisSerializer=new StringRedisSerializer();
        template.setKeySerializer(stringRedisSerializer);
        template.setValueSerializer(stringRedisSerializer);
        return template;
    }
}
RedisTemplate操作String类型和Hash类型

UserServiceImpl:

@Service
@Slf4j
public class UserServiceImpl {
    @Autowired
    private RedisTemplate redisTemplate;
    
    
    public String getUserName(String id){
       //1.生成Redis key
        String key="user:name:"+id;
        if(redisTemplate.hasKey(key)){
            log.info("查询的是redis");
            Object o = redisTemplate.opsForValue().get(key);
            return (String)o;
        }else {
            log.info("查询mysql");
            String result="cxk";
            redisTemplate.opsForValue().set(key,result);
            return result;
        }
    }
    
      public User selectUserById(String id){
          String key="user:"+id;
          if(!redisTemplate.opsForHash().hasKey("user",id)){
              log.info("mysql");
              User user=new User();
              user.setId(id);
              user.setName("cxk");
              user.setRemark(" like basketball");
              redisTemplate.opsForHash().put("user",id,user);
              return user;
          }else{
              log.info("redis");
              User user =(User) redisTemplate.opsForHash().get("user", id);
              return user;
          }
      }
}

测试:

  @Autowired
    private UserServiceImpl userService;
    @Test
    public void userservice(){
        System.out.println(userService.getUserName("1001"));
        System.out.println(userService.selectUserById("1001"));
    }


查看Redis 发现Hash类型的数据前又出现没必要的东西

在Config中添加内容,修改Serializer配置

@Configuration
public class RedisConfig {
    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        RedisTemplate template = new RedisTemplate();
        template.setConnectionFactory(redisConnectionFactory);
        StringRedisSerializer stringRedisSerializer=new StringRedisSerializer();
        template.setKeySerializer(stringRedisSerializer);
        template.setValueSerializer(stringRedisSerializer);

//        --------------------添加的内容
        GenericJackson2JsonRedisSerializer genericJackson2JsonRedisSerializer=new GenericJackson2JsonRedisSerializer();
        template.setHashKeySerializer(stringRedisSerializer);
        //此处的value是对象 不应是string 而是json格式
        template.setHashValueSerializer(genericJackson2JsonRedisSerializer);
//     ---------------------------------------
     
     
        return template;
    }
}

再次执行Hash的方法 数据正常

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1040734.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号