学习笔记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" );
}
相关推荐
一路向北⁢20 分钟前
Spring Boot 3 整合 SSE (Server-Sent Events) 企业级最佳实践(二)
java·数据库·spring boot·sse·通信
好好研究1 小时前
SpringBoot使用外置Tomcat
spring boot·后端·tomcat
lynnlovemin1 小时前
云原生提速秘籍:Spring Boot转Spring Native实战指南
spring boot·spring·云原生·spring native
1candobetter1 小时前
JAVA后端开发——Spring Boot 组件化自动配置机制
java·开发语言·spring boot
索荣荣1 小时前
Spring Boot 实现DOCX转PDF(基于docx4j的轻量级开源方案)
spring boot·后端·pdf
没有bug.的程序员1 小时前
Spring Boot 与 Sleuth:分布式链路追踪的集成、原理与线上故障排查实战
java·spring boot·分布式·后端·分布式链路追踪·sleuth·线上故障排查
笨蛋不要掉眼泪1 小时前
Redis主从复制:原理、配置与实战演示
前端·redis·bootstrap·html
晓13131 小时前
第七章:Redis高级最佳实践详解
redis·分布式·缓存
Hx_Ma162 小时前
SpringBoot注册格式化器
java·spring boot·后端
jiunian_cn3 小时前
【Redis】list数据类型相关指令
数据库·redis·list