springboot框架学习 service层使用redis缓存实现查询与插入

昨天实现了springboot框架集成redis并实现redis数据库的基本操作:

Linux黑窗口使用的部分redis基础命令:

get key    获取key的值
set key v    设置key的值
del key    删除key(应用于所有类型)
incr key    将储存的值加上1
decr key    将储存的值减去1
incrby key amout    加上整数amount
decrby key amout    减去整数amount
append key v    将值追加到key当前储存值的末尾

而我们借助Redistemplate模板提供的opsForValue()里的方法实现对redis键值对的增删改查操作,昨天已经把源码追溯给小伙伴们看了,今天的主要内容是在springboot正常开发的MVC架构里将redis操作的方法添加到service层的接口中,为了达到快速测试的目的我们并不配置dao层的mysql数据库操作。其次由于昨天实现的测试中我们get到的keyvalue的格式不是json数据导致出现不认识的硬编码,我们还要自定义RedisTemplate类并用@Bean以供springboot实现它的自动注入装配。昨天的文章地址如下:http://t.csdn.cn/JVXxZ

跟着昨天的配置来:

一、User实体

package com.hlc.pojo;
import lombok.Data;
import java.io.Serializable;

@Data
/*这个serializable是将对象的各个数据序列化*/
public class User implements Serializable {
    private Integer userId;
    private String username;
    private String address;
}

二、UserService与它的实现类

public interface UserService {
    void save(String key,String keyValue);
    Object queryKey(String key);
}


@Service("userService")
public class UserServiceImpl implements UserService {
    @Autowired
    private RedisTemplate redisTemplate;
    /*插入新的键值对*/
    @Override
    public void save(String key, String keyValue) {
        redisTemplate.opsForValue().set(key,keyValue);
    }

    @Override
    public Object queryKey(String key) {
       return redisTemplate.opsForValue().get(key);
    }

}

三、UserController

@RestController
public class UserController {
    @Autowired
    private UserService userService;

    @GetMapping("saveKey")
    public ModelAndView save(){
        return new ModelAndView("saveKey");
    }
    @RequestMapping("insertKey")
    public ModelAndView insert(String key, String keyValue){
        userService.save(key,keyValue);
        return new ModelAndView("success");
    }

    @GetMapping("query")
    public ModelAndView query(){
        return new ModelAndView("query");
    }
    @RequestMapping("queryKey")
    @ResponseBody
    /*这里返回的是一条json数据没有具体的页面*/
    public Object  queryKey(String key) {
        return userService.queryKey(key);
    }
}

四、测试controller映射路由用的前端页面(采用thymeleaf模板引擎实现跳转)

saveKey页面




    
    提交新键值对页面



    
    

请输入你要保存的key值对

Enterkey:
keyValue:

success页面就是出一条插入新键值对成功的语句。

五、redis_config配置类

/*自定义的RedisTemplate模板配置实现键值的json数据序列化*/
@Configuration
public class redis_config {

    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory factory){

        /*定义方法的返回值,泛型自动匹配,后面的可以省略*/
        RedisTemplate template = new RedisTemplate<>();
        template.setConnectionFactory(factory);

        /*1.创建Jackson工具对象*/
        Jackson2JsonRedisSerializer jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer(Object.class);
        ObjectMapper om = new ObjectMapper();
        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);
        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);
        /*2.为创建的工具对象设置Object映射*/
        jackson2JsonRedisSerializer.setObjectMapper(om);

        template.setValueSerializer(jackson2JsonRedisSerializer);
        template.setHashValueSerializer(jackson2JsonRedisSerializer);

        /*将key与hashKey设置为String的序列化方式*/
        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();

        template.setKeySerializer(stringRedisSerializer);
        template.setHashKeySerializer(stringRedisSerializer);

        template.afterPropertiesSet();
        return template;
    }
}

query页面




    
    查询key键值对




queryKey:

查询成功就会弹出一条相关的json数据

redis数据库键值对:
springboot框架学习 service层使用redis缓存实现查询与插入_第1张图片

 插入页面:

springboot框架学习 service层使用redis缓存实现查询与插入_第2张图片

 查询页面:

springboot框架学习 service层使用redis缓存实现查询与插入_第3张图片

 查询user结果:

springboot框架学习 service层使用redis缓存实现查询与插入_第4张图片

 yml相关配置:

#redis的配置
spring:
  redis:
    host: 192.168.20.150
# redis服务器连接端口默认6379
    port: 6379
# 数据库索引默认为0号数据库这里选取1号数据库
    database: 1
    lettuce:
      pool:
        max-active: 50
        max-wait: 3000
        max-idle: 20
        min-idle: 2
# 连接超时时间
    timeout: 5000
    password: hlc

  thymeleaf:
    mode: HTML5
    cache: false

server:
  port: 81

 拜拜了兄弟们!明天开始学习怎么用spring cache 直接将redis与mysql实现同步更改持久化。

你可能感兴趣的:(web学习,springboot,java,redis,spring,boot)