Redis在SpringBoot中使用

2024-08-26

搭建Redis环境

Redis的基本概念

  • 基于内存进行存储,支持 key-value 的存储形式,底层采用C语言编写
  • 基于 key-value 形式的数据字典,结构简单,没有数据表的概念,直接用键值对的形式完成数据的管理
  • 支持5种数据类型:
    • 字符串
    • 列表
    • 集合
    • 有序集合
    • 哈希

安装与启动Redis

window下的教程:Window下Redis的安装和部署详细图文教程(Redis的安装和可视化工具的使用)_redis安装-CSDN博客

Spring Boot 整合 Redis

  • 创建Spring Boot工程
  • 导入Redis依赖
  • 如果想要将实体类(POJO类)存到Redis里面,那么POJO类就要实现序列化接口(serializable)
  • SpringBoot配置文件中配置Redis数据库基本信息

Redis的增删改查

@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);
    }
}

操作字符串

@GetMapping("/string")
public String stringTest() {
    redisTemplate.opsForValue().set("str", "Hello World");
    String str = (String) redisTemplate.opsForValue().get("str");
    return str; // Hello World
}

操作列表

@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;  // Java World Hello
}

操作集合

@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;  // Java World Hello
}

操作有序集合

@GetMapping("/zset")
public Set<String> zsetTest() {
   zSetOperations<String, String> zSetOperations = redisTemplate.opsForZSet();
   zSetOperations.add("Set", "Hello", 1);
   zSetOperations.add("Set", "World", 2);
   zSetOperations.add("Set", "Java", 3);
   Set<String> set = zSetOperations.members("zset", 0, 2);
   return set;  // Java World Hello
}

操作哈希

HashMap key value

HashOperations key hashkey value

key 是每一组数据的ID, hashkeyvalue 是一组完整的 ` 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);
sout(hashOperations.get(hashMap1, key1);

相关教程

SpringBoot 操作 Redis 详解_maxredirects-CSDN博客

Redis的介绍和使用(超详细)-CSDN博客