文章目录
一. redis集成到springboot
1. 创建项目
或者直接引入依赖:
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
2. 配置redis服务地址
3. 创建controller
@RestController
public class MyController {
@Autowired
private StringRedisTemplate redisTemplate;
}
前面使用jedis, 是通过jedis对象里的方法操作redis的
spring中则是通过StringRedisTemplate 来操作redis
StringRedisTemplate是RedisTemplate的子类, 专门用来处理文本数据的
4. 使用
此处的redisTemplate是把操作的Redis方法, 分成了几个类别来组织的
redisTemplate并没有封装flushAll或flushdb等方法, 可以通过execute方法来直接使用redis方法
RedisCallback是一个函数式接口, 相当于一个回调函数, 可以在回调里, 写redis命令, 这个回调就会被RedisTemplate内部进行执行
这里RedisConnection就代表Redis连接
execute要求回调方法中必须写return语句, 返回什么, 就会作为execute的返回值
二. 使用string
@GetMapping("/testString")
@ResponseBody
public String testString() {
redisTemplate.opsForValue().set("key1", "111");
redisTemplate.opsForValue().set("key2", "222");
redisTemplate.opsForValue().set("key3", "333");
String value = redisTemplate.opsForValue().get("key1");
System.out.println(value);
return "ok";
}
三. 使用list
@GetMapping("/testList")
@ResponseBody
public String testList(){
redisTemplate.execute((RedisConnection connection) -> {
connection.flushAll();
return null;
});
redisTemplate.opsForList().leftPush("key", "111");
redisTemplate.opsForList().leftPush("key2", "222");
redisTemplate.opsForList().leftPush("key3", "333");
String value = redisTemplate.opsForList().rightPop("key");
System.out.println(value);
value = redisTemplate.opsForList().rightPop("key2");
System.out.println(value);
value = redisTemplate.opsForList().rightPop("key3");
System.out.println(value);
return "ok";
}
四. 使用Hash
@GetMapping("/testHash")
@ResponseBody
public String TestHash(){
redisTemplate.execute((RedisConnection connection) -> {
connection.flushAll();
return null;
});
redisTemplate.opsForHash().put("key", "field1", "111");
redisTemplate.opsForHash().put("key", "field2", "222");
redisTemplate.opsForHash().put("key", "field3", "333");
String value = (String) redisTemplate.opsForHash().get("key", "field1");
System.out.println(value);
Boolean exists = redisTemplate.opsForHash().hasKey("key", "field1");
System.out.println(exists);
redisTemplate.opsForHash().delete("key", "field1", "field2");
Long size = redisTemplate.opsForHash().size("key");
System.out.println(size);
return "ok";
}
五. 使用Set
@GetMapping("/testSet")
@ResponseBody
public String TestSet(){
redisTemplate.execute((RedisConnection connection) -> {
connection.flushAll();
return null;
});
redisTemplate.opsForSet().add("key", "111", "222","333");
Set<String> result = redisTemplate.opsForSet().members("key");
System.out.println(result);
Boolean exists = redisTemplate.opsForSet().isMember("key", "111");
System.out.println(exists);
Long count = redisTemplate.opsForSet().size("key");
System.out.println(count);
redisTemplate.opsForSet().remove("key", "111", "222");
result = redisTemplate.opsForSet().members("key");
System.out.println(result);
return "ok";
}
六. 使用ZSet
@GetMapping("testZSet")
@ResponseBody
public String TestZSet(){
redisTemplate.execute((RedisConnection connection) -> {
connection.flushAll();
return null;
});
redisTemplate.opsForZSet().add("key", "zhangsan", 10);
redisTemplate.opsForZSet().add("key", "lisi", 20);
redisTemplate.opsForZSet().add("key", "wangwu", 30);
Set<String> members = redisTemplate.opsForZSet().range("key", 0, -1);
System.out.println(members);
Set<ZSetOperations.TypedTuple<String>> membersWithScore = redisTemplate.opsForZSet().rangeWithScores("key", 0, -1);
System.out.println(membersWithScore);
Double score = redisTemplate.opsForZSet().score("key", "zhangsan");
System.out.println(score);
redisTemplate.opsForZSet().remove("key", "zhangsan");
Long size = redisTemplate.opsForZSet().size("key");
System.out.println(size);
Long rank = redisTemplate.opsForZSet().rank("key", "lisi");
System.out.println(rank);
return "ok";
}