1. 程式人生 > 資訊 >應對車芯荒,英飛凌計劃將印尼封測產能翻倍

應對車芯荒,英飛凌計劃將印尼封測產能翻倍

Springboot整合Redis簡介

redis的埠是6379

springboot新增redis的依賴:
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.6.0</version>
        </dependency>

Spring Data Redis提供了兩個模板類來進行資料的操作:
    RedisTemplate
    StringRedisTemplate只針對鍵值都是字串的進行操作。

RedisTemplate,StringRedisTemplate主要資料訪問方法:
    opsForValue();操作只有簡單屬性的資料
    opsForList();操作含有list的資料
    opsForSet();操作含有set的資料
    opsForZSet();操作含有有序set的資料
    opsForHash();操作含有hash的資料

Serializer:
    當資料儲存到spring的時候,鍵和值都是通過Spring提供的Serializer序列化到資料庫的,RedisTemplate預設使用JdkSerializationRedisSerializer序列化,
    StringRedisTemplate預設使用StringRedisSerializer進行序列化。

springboot的支援:
    在RedisAutoConfiguration配置類中,預設配置了RedisTemplate,StringRedisTemplate可以直接使用Redis儲存資料庫。

application.properties檔案配置

# 資料庫名稱db0
spring.redis.database=0
#伺服器地址
spring.redis.host=192.168.101.60
#連線埠
spring.redis.port=6379
#連線池最大連線數
spring.redis.max-idle=8
#連線池最小連線數
spring.redis.min-idle=0
#在給定時間內連線池能分配的最大連線數
spring.redis.max-active=8
#當資源耗盡時,丟擲異常的等待時間,負值為無限期的阻止
spring.redis.max-wait=-1

實體類

public class Student implements Serializable {
    private static final Long serialVersionUID=1L;

    private String sno;
    private String sname;
    private String sage;

    public Student() {
    }

    public Student(String sno, String sname, String sage) {
        this.sno = sno;
        this.sname = sname;
        this.sage = sage;
    }
    setting,getting,toString方法
}

訪問資料庫類

@Repository
public class StudentDB {

    @SuppressWarnings("unused")
    @Autowired
    private StringRedisTemplate stringRedisTemplate;

    @SuppressWarnings("unused")
    @Autowired
    private RedisTemplate<String,String> redisTemplate;

    @Resource(name = "stringRedisTemplate")
    ValueOperations<String,String> valueOpsStr;

    @Resource(name = "redisTemplate")
    ValueOperations<Object,Object> valueOpsObject;

    public void saveString(String key, String value) {
        valueOpsStr.set(key, value);
    }

    public void saveStudent(Student student) {
        valueOpsObject.set(student.getSno(), student);
    }

    public void saveStudentS(Object key, List<Student> students) {
        valueOpsObject.set(key, students);
    }

    public String getString(String key) {
        return valueOpsStr.get(key);
    }

    public Object getObj(String key) {
        return valueOpsObject.get(key);
    }
}

控制器類

@Controller
@RequestMapping("/stu")
public class StudentController {

    @Autowired
    private StudentDB studentDB;

    @RequestMapping("/save")
    public void save(){
        Student student = new Student();
        studentDB.saveString("uname", "haha");

        Student student1 = new Student("111", "張三1", "77");
        studentDB.saveStudent(student1);

        Student student2 = new Student("222", "張三2", "77");
        Student student3 = new Student("333", "張三3", "77");
        ArrayList<Student> students = new ArrayList<>();
        students.add(student2);
        students.add(student2);
        studentDB.saveStudentS("aa", students);
        System.out.println("儲存成功");
    }

    @GetMapping("/name")
    public void getUname() {

        String uname = studentDB.getString("uname");
        System.out.println(uname);
    }
    @GetMapping("/student")
    public void getStudent() {
        Object obj = studentDB.getObj("111");
        System.out.println(obj);
    }
    @GetMapping("/students")
    public void getStudents() {
        Object aa = studentDB.getObj("aa");
        System.out.println(aa);
    }
}