学习笔记039——SpringBoot整合Redis

文章目录

1、Redis 基本操作

Redis 默认有 16 个数据库,使用的是第 0 个,切换数据库

复制代码
select 0

添加数据/修改数据

复制代码
set key value

查询数据

复制代码
get key

批量添加

复制代码
mset k1 v1 k2 v2...

批量查询

复制代码
mget k1 k2 

删除数据

复制代码
del key

查询所有的 key

复制代码
keys *

清除当前数据库

复制代码
flushdb

清除所有数据库

复制代码
flushall

查看 key 是否存在

复制代码
exists key

设置有效期

复制代码
expire key 10

查看有效期

复制代码
ttl key

2、Redis 数据类型

String

追加字符串

复制代码
append key value

查看字符串长度

复制代码
strlen key

自增

复制代码
incr key

递减

复制代码
decr key

指定递增长度

复制代码
incrby k v

指定递减长度

复制代码
decrby k v

字符串截取

复制代码
getrange k start end

修改局部字段

复制代码
setrange k start v

List

从左侧添加

复制代码
lpush k v...

从右侧添加

复制代码
rpush k v...

取值

复制代码
lrange k start end

删除,左侧移除

复制代码
lpop k

右侧移除

复制代码
rpop k

通过下标获取值

复制代码
lindex k index

删除集合中指定的值,count 是删除的个数

复制代码
lrem k count v

通过下标修改集合中的值

复制代码
lset k index v

获取长度

复制代码
llen k

截取list

复制代码
ltrim k start end

查看集合是否存在

复制代码
exists k

Set

添加数据

复制代码
sadd k v

查询数据

复制代码
smembers k

判断集合中是否存在某个值

复制代码
sismember k v

获取集合长度

复制代码
scard k

删除元素

复制代码
srem k v1 v2...

随机取值

复制代码
srandmember k

Hash

存值

复制代码
hset hash k1 v1 k2 v2

取值

复制代码
hget hash k1

存多个值

复制代码
hmset hash k1 a k2 b k3 c

取多个值

复制代码
hmget hash k1 k2 k3

取所有值

复制代码
hgetall hash

删除数据

复制代码
hdel hash k1 k2

获取长度

复制代码
hlen k

判断集合中是否存在某个值

复制代码
hexists hahs k

获取集合中所有 key

复制代码
hkeys hash

获取集合中所有 value

复制代码
hvals hash

Zset

添加数据

复制代码
zadd set index v

查询数据

复制代码
zrange set 0 -1

升序查询

复制代码
zrangebyscore score -inf +inf withscores

降序查询

复制代码
zrevrange score 0 -1 withscores

删除数据

复制代码
zrem score jack

3、Spring Boot 整合 Redis

Spring Data Redis

xml 复制代码
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-web</artifactId>
</dependency>

<dependency>
    <groupId>org.projectlombok</groupId>
    <artifactId>lombok</artifactId>
    <optional>true</optional>
</dependency>
<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-test</artifactId>
    <scope>test</scope>
</dependency>

<!-- Swagger -->
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger2</artifactId>
    <version>2.9.2</version>
</dependency>
<dependency>
    <groupId>io.springfox</groupId>
    <artifactId>springfox-swagger-ui</artifactId>
    <version>2.9.2</version>
</dependency>
yaml 复制代码
spring:
  redis:
    database: 0
    host: 192.168.248.138
    port: 6379
java 复制代码
package com.southwind.entity;

import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.io.Serializable;
import java.util.Date;

@Data
@AllArgsConstructor
@NoArgsConstructor
public class Student implements Serializable {
    private Integer id;
    private String name;
    private Double score;
    private Date birthday;
}
java 复制代码
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 StudentController {

    @Autowired
    private RedisTemplate redisTemplate;

    @PostMapping("/set")
    public void set(@RequestBody Student student){
        this.redisTemplate.opsForValue().set("stu", student);
    }

    @GetMapping("/get/{key}")
    public Student get(@PathVariable("key") String key){
        return (Student) this.redisTemplate.opsForValue().get(key);
    }

    @PutMapping("/put")
    public void update(@RequestBody Student student){
        this.redisTemplate.opsForValue().set("stu", student);
    }

    @DeleteMapping("/delete/{key}")
    public Boolean delete(@PathVariable("key") String key){
        this.redisTemplate.delete(key);
        return this.redisTemplate.hasKey(key);
    }
}
java 复制代码
package com.southwind.configuration;

import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import springfox.documentation.builders.ApiInfoBuilder;
import springfox.documentation.builders.RequestHandlerSelectors;
import springfox.documentation.spi.DocumentationType;
import springfox.documentation.spring.web.plugins.Docket;
import springfox.documentation.swagger2.annotations.EnableSwagger2;

@Configuration
@EnableSwagger2
public class SwaggerConfiguration {
    @Bean
    public Docket createRestApi() {
        return new Docket(DocumentationType.SWAGGER_2)
                .select()
                .apis(RequestHandlerSelectors.basePackage("com.southwind"))
                .build().apiInfo(new ApiInfoBuilder()
                        .title("Redis测试")
                        .description("测试")
                        .version("V1.0")
                        .build());
    }
}

字符串

java 复制代码
@PostMapping("/string")
public String string(){
    String str = "Hello World";
    this.redisTemplate.opsForValue().set("str", str);
    return (String) this.redisTemplate.opsForValue().get("str");
}

List

java 复制代码
@PostMapping("/list")
public void list(){
    ListOperations<String,String> list = redisTemplate.opsForList();
    list.leftPush("list", "Hello");
    list.leftPush("list", "World");
    list.leftPush("list","Java");
    list.rightPush("list", "1");
    list.rightPush("list", "2");
    list.rightPush("list", "3");
}

Set

java 复制代码
@PostMapping("/setadd")
public void setadd(){
    SetOperations<String,String> set = this.redisTemplate.opsForSet();
    set.add("set", "Hello");
    set.add("set", "World");
    set.add("set", "Java");
}

Zset

java 复制代码
@PostMapping("/zset")
public void zset(){
    ZSetOperations<String,String> set = this.redisTemplate.opsForZSet();
    set.add("zset", "Hello",1);
    set.add("zset", "World",2);
    set.add("zset", "Java",3);
}

Hash

java 复制代码
@PostMapping("/hash")
public void hash(){
    HashOperations<String,String,String> hash = this.redisTemplate.opsForHash();
    hash.put("hash", "id", "1");
    hash.put("hash", "name", "tom");
    hash.put("hash", "age","22" );
}
相关推荐
用户35218024547511 小时前
当 Prompt 学会"热更新":Spring Boot × Nacos3 AI 实战
java·spring boot·ai编程
昵称为空C14 小时前
手撸一个动态 SQL 执行引擎:不重启服务,在线增删改查任意数据库
spring boot·后端
霸道流氓气质1 天前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
于先生吖2 天前
SpringBoot对接大模型开发AI命理测算系统:八字排盘与AI解析接口源码全解
人工智能·spring boot·后端
小小工匠2 天前
Redis - 事务机制:能实现 ACID 属性吗
数据结构·redis·性能优化·并发·持久化
Flittly2 天前
【AgentScope Java新手村系列】(10)实战-多Agent天气助手
java·spring boot·spring
星落zx2 天前
Spring Boot 多模型集成:优雅调用全球主流大模型
人工智能·spring boot·chatgpt
一杯奶茶¥2 天前
水果销售网站 CRM客户信息管理系统 超市管理系 酒店管理系统 健身房管理系统 在线音乐网站 校园招聘系统
java·vue.js·spring boot·mysql·spring·java项目
进阶的小名2 天前
Spring Boot SSE + Nginx 配置:解决 EventSource 不实时返回、连接超时、流式响应被缓冲问题
spring boot·后端·nginx