实际上使用Spring Data Redis操作Redis
1、创建maven工程,导入以下配置
<parent>
<artifactId>spring-boot-starter-parent</artifactId>
<groupId>org.springframework.boot</groupId>
<version>2.5.2</version>
</parent>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
<version>2.5.2</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
<version>2.5.2</version>
</dependency>
<!--连接池-->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-pool2</artifactId>
<version>2.10.0</version>
</dependency>
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.20</version>
</dependency>
</dependencies>
2、创建实体类,实现序列化接口,否则无法存入redis。
package com.chen.entity;
import lombok.Data;
import java.io.Serializable;
import java.util.Date;
@Data
//实现序列化接口,否则无法存入redis
public class Student implements Serializable {
private Integer id;
private String name;
private Double score;
private Date birthday;
}
3、创建控制器
@RestController
public class StudentHandler {
@Autowired
private RedisTemplate redisTemplate;
@PostMapping("/set")
//Request将json数据转换成java对象
public void set(@RequestBody Student student){
redisTemplate.opsForValue().set("student",student);
}
}
4、创建配置文件appliacation.yml
spring:
redis:
database: 0
host: localhost
port: 6379
5、创建启动类
package com.chen;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class Application {
public static void main(String[] args) {
SpringApplication.run(Application.class,args);
}
}
6、CRUD
@RestController
public class StudentHandler {
@Autowired
private RedisTemplate redisTemplate;
@PostMapping("/set")
//Request将json数据转换成java对象
public void set(@RequestBody Student student){
redisTemplate.opsForValue().set("student",student);
}
@GetMapping("/get/{key}")
public Student get(@PathVariable("key") String key) {
return (Student) redisTemplate.opsForValue().get(key);
}
@DeleteMapping("/delete/{key}")
public boolean delete(@PathVariable("key") String key) {
redisTemplate.delete(key);
return redisTemplate.hasKey(key);
}
}
Redis 5种数据类型
- 字符串
@GetMapping("/string")
public String stringTest(){
redisTemplate.opsForValue().set("str","Hello world");
String str = (String) redisTemplate.opsForValue().get("str");
return str;
}
- 列表
@GetMapping("list")
public List<String> listTest(){
ListOperations<String,String> listOperations = redisTemplate.opsForList();
listOperations.leftPush("list","hello");
listOperations.leftPush("list","world");
listOperations.rightPush("list","redis");
List<String> list = listOperations.range("list",0,2);
return list;
}
- 集合(set)
@GetMapping("/set")
public Set<String> setTest(){
SetOperations<String,String> setOperations = redisTemplate.opsForSet();
setOperations.add("set","Hello");
setOperations.add("set","Hello");
setOperations.add("set","world");
setOperations.add("set","world");
setOperations.add("set","redis");
setOperations.add("set","redis");
Set<String> set = setOperations.members("set");
return set;
}
- 有序集合
@GetMapping("/zset")
public Set<String> zsetTest(){
ZSetOperations<String,String> zSetOperations = redisTemplate.opsForZSet();
zSetOperations.add("zset","Hello",1);
zSetOperations.add("zset","world",2);
zSetOperations.add("zset","redis",3);
Set<String> set = zSetOperations.range("zset",0,2);
return set;
}
-
哈希
Hash:key value
HashOperations:key hashkey value
key是每一组数据的ID,hashkey和value是一组完整的HashMap数据,通过key来区分不同的HashMap
如下所示:
HashMap hashMap1 = new HashMap();
hashMap1.put(key1,value1);
HashMap hashMap2 = new HashMap();
hashMap2.put(key2,value2);
HashMap hashMap3 = new HashMap();
hashMap3.put(key3,value3);
HashOperations<String,String,String> hashOperation = redisTemplate.opsForHash();
hashOperation.put(hashMap1,key1,value1);
hashOperation.put(hashMap2,key2,value2);
hashOperation.put(hashMap3,key3,value3);
@GetMapping("/hash")
public void hashTest(){
HashOperations<String,String,String> hashOperations = redisTemplate.opsForHash();
hashOperations.put("key","hashKey","Hello");
System.out.println(hashOperations.get("key","hashKey"));
}