Sping boot系列--redis之2 -- RedisKeyValueTemplate处理Model对象

本文介绍了Spring Data Redis提供的RedisKeyValueTemplate类,该类用于处理Model对象的set/get操作,并使用Jackson2JsonRedisSerializer进行序列化处理。文章展示了如何通过简单的代码实现对Redis服务器的配置及数据读写。

简介

在sping-data-redis中,还提供了RedisKeyValueTemplate类,用来处理Model对象的set/get等处理。

查看实现

package org.springframework.data.redis.core;

/**
 * Redis specific implementation of {@link KeyValueTemplate}.
 * 
 * @author Christoph Strobl
 * @since 1.7
 */
public class RedisKeyValueTemplate extends KeyValueTemplate {
    ......
}




/**
 * Basic implementation of {@link KeyValueOperations}.
 * 
 * @author Christoph Strobl
 * @author Oliver Gierke
 * @author Thomas Darimont
 */
public class KeyValueTemplate implements KeyValueOperations, ApplicationEventPublisherAware {
    ......

}

在RedisKeyValueTemplate类中,缺省使用Jackson2JsonRedisSerializer作为序列号的处理类。
检查一下运行时的RedisKeyValueTemplate实例对象:
这里写图片描述

可以看到其中redisOps对象为StringRedisTemple,而其valueSerializer对象为Jackson2JsonRedisSerializer。

使用

使用起来一贯的简单。
处理redis的服务器配置,无需其他的Serializer配置,直接使用

@Autowired
private RedisKeyValueTemplate redisKeyValueTemplate;


@RequestMapping("/kvuser/{id}")
@ResponseBody
public String getKVUser(@PathVariable("id") long id) {
    log.info("---- getUser");
    //
    User user = new User(id, "kv-"+id+"@126.com", "kv-name-"+id, "pwd"+id, "address"+id, "phone"+id);
    String strKey = "com.dcloud.kvuser";

    User ret = redisKeyValueTemplate.findById(id, User.class);
    if (null == ret) {
        //
        String strInfo = "try to set because not find "+strKey;
        log.warn(strInfo);
        //
        redisKeyValueTemplate.insert(id, user);
        return strInfo;
    } else {
        log.info("find by kvTemple");
        log.info(user.toString());
        return user.toString();
    }
}

检查

访问2次后,在redis中可以看到对应的数据。

keys:
这里写图片描述

index:

这里写图片描述

model data:
这里写图片描述

缺少expire

因为使用RedisKeyValueTemplate时,spring 还会生成类似index的数据。所有这里没有expire的设置操作。

更多

查看javadoc,可以看到更丰富的功能和api。

<think>我们正在解决用户关于`spring-boot-maven-plugin`在Maven配置中出现标红(错误提示)的问题。 根据引用[1]:原来的配置报红,配置如下: <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> 出现标红的原因通常有几个: 1. 插件版本未指定,且未继承父项目(如spring-boot-starter-parent)来管理版本。 2. Maven仓库中无法找到该插件(可能是网络问题或仓库配置问题)。 3. 项目的JDK版本与插件要求的版本不兼容。 根据引用[2]:该插件会严格遵循Maven的编译规则,如果存在不兼容的依赖,会在打包阶段暴露问题。因此,配置阶段的标红可能是由于配置问题导致的。 根据引用[3]:在配置插件时,可以通过指定`<version>`或通过父项目继承版本。 解决方案: 1. 指定插件版本:在插件声明中添加`<version>`标签,版本号应与使用的Spring Boot版本一致。 例如:<version>2.7.5</version> (根据实际使用的Spring Boot版本) 2. 继承Spring Boot父项目:在pom.xml中设置父项目为spring-boot-starter-parent,这样就不需要为每个插件指定版本。 <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.7.5</version> <!-- 使用你的Spring Boot版本 --> <relativePath/> <!-- lookup parent from repository --> </parent> 3. 检查Maven仓库配置:确保你的Maven settings.xml配置了正确的镜像仓库,并且网络通畅。 4. 检查JDK版本:确保项目使用的JDK版本与插件兼容。Spring Boot 2.x通常需要JDK 8或以上,Spring Boot 3.x需要JDK 17或以上。 5. 如果是在多模块项目中,确保插件配置在需要打包为Spring Boot应用的模块中,而不是父模块(除非父模块也是可运行的应用)。 修改后的配置示例(指定版本): <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring-boot.version}</version> <!-- 推荐在properties中定义spring-boot.version --> </plugin> </plugins> </build> 或者在properties中定义版本: <properties> <spring-boot.version>2.7.5</spring-boot.version> </properties> 然后使用`${spring-boot.version}`引用。 如果问题仍然存在,可以尝试清理Maven本地仓库(删除.m2/repository/org/springframework/boot目录)并重新下载。 另外,在IDE中(如IntelliJ IDEA)有时会出现误报,可以尝试重新导入Maven项目(Reimport All Maven Projects)。 总结:标红的最常见原因是插件版本缺失。通过显式指定版本或继承父项目可以解决。 </think>### Spring Boot Maven 插件标红原因分析与解决方案 `spring-boot-maven-plugin` 在 Maven 配置中出现标红(错误提示)通常由以下原因导致: #### 一、主要原因 1. **插件版本缺失** **核心问题**:未明确指定插件版本号,导致 Maven 无法解析 **触发场景**:未继承 Spring Boot 父 POM 且未声明版本时发生 ```xml <!-- 错误示例:缺少版本声明 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> ``` 2. **依赖冲突** - Spring Boot 版本与插件版本不兼容 - 项目中存在多个冲突的插件声明 3. **仓库访问问题** - Maven 仓库未配置镜像源 - 插件 JAR 下载失败或损坏 4. **JDK 版本不兼容** - JDK 版本低于插件要求(如 Spring Boot 3.x 要求 JDK 17+) #### 二、解决方案 1. **显式声明版本号**(推荐) 在插件配置中添加与 Boot 版本一致的版本号: ```xml <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>3.2.0</version> <!-- 与项目Boot版本一致 --> </plugin> ``` 2. **继承父 POM**(最佳实践) 继承 Spring Boot 父项目自动管理版本: ```xml <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>3.2.0</version> </parent> ``` 3. **检查依赖树** 执行命令排查冲突: ```bash mvn dependency:tree -Dincludes=org.springframework.boot ``` 4. **清理本地仓库** 删除损坏的依赖缓存: ```bash # 删除插件本地缓存 rm -rf ~/.m2/repository/org/springframework/boot/spring-boot-maven-plugin ``` #### 三、验证配置 正确配置示例: ```xml <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>${spring-boot.version}</version> <!-- 在properties中定义 --> <executions> <execution> <goals> <goal>repackage</goal> <!-- 关键执行目标 --> </goals> </execution> </executions> </plugin> </plugins> </build> ``` #### 四、调试步骤 1. 执行 `mvn clean install -U` 强制更新依赖 2. 检查 IDE 是否启用正确的 Maven 配置 3. 查看错误详情: ```bash mvn help:describe -Dplugin=org.springframework.boot:spring-boot-maven-plugin ``` > **注意**:Spring Boot 3.x 开始强制要求使用 JDK 17+,JDK 8 环境必然导致插件解析失败[^1][^2]。 ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值