一、Redis工程
目标:抽取项目中所有的Redis操作
1. 依赖
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<!--redis starter-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<!--springboot 测试-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
<scope>test</scope>
</dependency>
<!--作为客户端访问 eureka注册中心 -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!--对外暴漏服务-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--为了能使用到工具类-->
<dependency>
<groupId>com.yixuexi</groupId>
<artifactId>atcrowdfunding05-common-util</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<!--为了能使用到实体类-->
<dependency>
<groupId>com.yixuexi</groupId>
<artifactId>atcrowdfunding09_member_entity</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
2. yaml配置文件
spring:
redis:
host: 192.168.10.10
application:
name: yixuexi-crowd-redis
eureka:
client:
serviceUrl:
defaultZone: http://localhost:1000/eureka/
server:
port: 3000
3. 启动类
/**
* @date: 2021/3/12 23:24
* @author: 易学习
*/
@SpringBootApplication
public class CrowdMainClass {
public static void main(String[] args) {
SpringApplication.run(CrowdMainClass.class,args);
}
}
4. 测试类
@RunWith(SpringRunner.class)
@SpringBootTest(classes = CrowdMainClass.class)
public class RedisTest {
@Autowired
private StringRedisTemplate redisTemplate;
@Test
public void test(){
ValueOperations<String, String> valueOperations = redisTemplate.opsForValue();
valueOperations.set("name","zhangsan");
}
}
二、暴露接口 创建接口
1.api工程依赖
<!--声明时远程调用-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
<dependency>
<groupId>com.yixuexi</groupId>
<artifactId>atcrowdfunding05-common-util</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
<dependency>
<groupId>com.yixuexi</groupId>
<artifactId>atcrowdfunding09_member_entity</artifactId>
<version>1.0-SNAPSHOT</version>
</dependency>
2. 创建Redis远程调用接口
/**
* @date: 2021/3/12 23:53
* @author: 易学习
*/
@FeignClient("yixuexi-crowd-redis")
public interface RedisRemoteService {
/**
* 设置key 和 vlaue
* @param key 键
* @param value 值
* @return
*/
@RequestMapping("/set/redis/key/value")
public ResultEntity<String> setRedisKeyValueRemote(
@RequestParam("key") String key,
@RequestParam("value") String value
);
/**
* 设置 key 和value 带时间
* @param key 键
* @param value 值
* @param time 时间
* @param timeUnit 时间单位
* @return
*/
@RequestMapping("set/redis/key/value/with/time/out")
public ResultEntity<String> setRedisKeyValueWithTimeOut(
@RequestParam("key") String key,
@RequestParam("value") String value,
@RequestParam("time") long time,
@RequestParam("timeUnit")TimeUnit timeUnit
);
/**
* 通过key 删除
* @param key 键
* @return
*/
@RequestMapping("remove/redis/value/by/key/remote")
public ResultEntity<String> removeRedisValueByKeyRemote(
@RequestParam("key") String key);
/**
* 通过key 得到value
* @param key 键
* @return
*/
@RequestMapping("get/redis/value/by/key/remote")
public ResultEntity<String> getRedisValueByKeyRemote(
@RequestParam("key")String key);
}
3. redis工程对其进行实现
@RestController
public class RedisController {
@Autowired
private StringRedisTemplate stringRedisTemplate;
/**
* 设置key 和 vlaue
* @param key 键
* @param value 值
* @return
*/
@RequestMapping("/set/redis/key/value")
public ResultEntity<String> setRedisKeyValueRemote(
@RequestParam("key") String key,
@RequestParam("value") String value
){
ValueOperations<String, String> valueOperations =
stringRedisTemplate.opsForValue();
valueOperations.set(key, value);
return ResultEntity.successWithoutData();
}
/**
* 设置 key 和value 带时间
* @param key 键
* @param value 值
* @param time 时间
* @param timeUnit 时间单位
* @return
*/
@RequestMapping("set/redis/key/value/with/time/out")
public ResultEntity<String> setRedisKeyValueWithTimeOut(
@RequestParam("key") String key,
@RequestParam("value") String value,
@RequestParam("time") long time,
@RequestParam("timeUnit") TimeUnit timeUnit
){
ValueOperations<String, String> valueOperations =
stringRedisTemplate.opsForValue();
valueOperations.set(key, value,time, timeUnit);
return ResultEntity.successWithoutData();
}
/**
* 通过key 删除
* @param key 键
* @return
*/
@RequestMapping("remove/redis/value/by/key/remote")
public ResultEntity<String> removeRedisValueByKeyRemote(
@RequestParam("key") String key){
stringRedisTemplate.delete(key);
return ResultEntity.successWithoutData();
}
/**
* 通过key 得到value
* @param key 键
* @return
*/
@RequestMapping("get/redis/value/by/key/remote")
public ResultEntity<String> getRedisValueByKeyRemote(
@RequestParam("key")String key){
ValueOperations<String, String> valueOperations =
stringRedisTemplate.opsForValue();
String value = valueOperations.get(key);
return ResultEntity.successWithData(value);
}
}