Spring Boot第三章 Spring Boot整合Redis

Redis

基于内存进⾏存储,⽀持 key-value 的存储形式,底层是⽤ C 语⾔编写的。
基于 key-value 形式的数据字典,结构⾮常简单,没有数据表的概念,直接⽤键值对的形式完成数据的
管理,Redis ⽀持 5 种数据类型:

  • 字符串
  • 列表
  • 集合
  • 有序集合
  • 哈希

安装 Redis

  1. 下载 Redis
    下载地址
    在这里插入图片描述
  2. 解压,并在本地硬盘任意位置创建⽂件夹,在其中创建 3 个⼦⽂件夹
    • bin:放置启动 Redis 的可执⾏⽂件
    • db:放置数据⽂件
    • etc:放置配置⽂件,设置 Redis 服务的端⼝、⽇志⽂件位置、数据⽂件位置…

启动 Redis 服务

  1. 进⼊ redis ⽬录,启动 redis-server。
    sudo ./bin/redis-server ./etc/redis.conf
    
  2. 进⼊ redis ⽬录,启动 redis-cli,启动 Redis 的客户端管理窗⼝,在此窗⼝中即可操作 Redis 数据库。
    ./bin/redis-cli
    
  3. 对数据进⾏操作。
    set key value
    get key
    
  4. 关闭 Redis 服务。
    shutdown
    
  5. 退出客户端,control+c。

Spring Boot 整合 Redis

Spring Data Redis 操作 Redis。

  1. 创建 Maven ⼯程。

    <parent>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-parent</artifactId>
     <version>2.1.5.RELEASE</version>
    </parent> <dependencies>
     <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-web</artifactId>
     </dependency>
     <dependency>
     <groupId>org.springframework.boot</groupId>
     <artifactId>spring-boot-starter-data-redis</artifactId>
     </dependency>
     <dependency>
     <groupId>org.apache.commons</groupId>
     <artifactId>commons-pool2</artifactId>
     </dependency>
     <dependency>
     <groupId>org.projectlombok</groupId>
     <artifactId>lombok</artifactId>
     </dependency>
    </dependencies>
    
  2. 创建实体类,实现序列化接⼝,否则⽆法存⼊ Redis 数据库。

    package com.southwind.entity;
    import lombok.Data;
    import java.io.Serializable;
    import java.util.Date;
    @Data
    public class Student implements Serializable {
    	 private Integer id;
    	 private String name;
    	 private Double score;
    	 private Date birthday; 
     } 
    
  3. 创建控制器。

    package com.southwind.controller;
    import com.southwind.entity.Student;
    import org.springframework.beans.factory.annotation.Autowired;
    import org.springframework.data.redis.core.RedisTemplate;
    import org.springframework.web.bind.annotation.*;
    @RestController
    public class StudentHandler {
    	 @Autowired
    	 private RedisTemplate redisTemplate;
    	 @PostMapping("/set")
    	 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);
     }
    }
    
  4. 创建配置⽂件 application.yml

    spring:
     redis:
     database: 0
     host: localhost
     port: 6379
    
  5. 创建启动类

    package com.southwind;
    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);
     }
    }
    

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.leftPush("list","Java");
	 List<String> list = listOperations.range("list",0,2);
	 return list; 
 }

集合

@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","Java");
	 setOperations.add("set","Java");
	 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","Java",3);
	 Set<String> set = zSetOperations.range("zset",0,2);
	 return set; 
 }

哈希

HashMap 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> hashOperations =
redisTemplate.opsForHash();
hashOperations.put(hashMap1,key1,value1);
hashOperations.put(hashMap2,key2,value2);
hashOperations.put(hashMap3,key3,value3);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值