学习笔记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" );
}
相关推荐
光依旧2 小时前
MCP实战手记系列(十):MCP Server高可用实战
spring boot·高可用·nginx负载均衡·redis哨兵·mcp·微服务容错·resilience4j熔断
禾小西4 小时前
Redis:从两大维度和三大主线建立知识体系
数据库·redis·缓存
禾小西5 小时前
Redis 数据结构:快速的 Redis 有哪些慢操作?
数据结构·数据库·redis
省钱兄--zs5 小时前
西安24小时自助健身房解决方案实战:系统开发与部署全流程指南
java·spring boot·系统架构·intellij-idea·需求分析
ly76897 小时前
Spring Boot 集成 Elasticsearch 的生产实践:客户端选型、索引生命周期与批量写入容错
spring boot·elasticsearch·索引生命周期·java api client·批量写入
程序猿_极客7 小时前
【免费】分享一套优质的基于SpringBoot的服装商城管理系统的设计与实现(带可视化图表、协同过滤功能),源码+文档+视频详解(讲解)
java·spring boot·后端·服装商城管理系统
bug菌8 小时前
🤔同事突然问我:Spring的注解 @Component 和 @Service 有何不同?
java·spring boot·后端
行百里er8 小时前
Redis 事务与 Pipeline:批量操作的正确姿势
redis
Lonely丶墨轩9 小时前
用 Vue + Spring Boot + Python 做一个 AI 双人海龟汤游戏:从出题、联机到自动审稿等核心技术设计与实现
spring boot·后端·游戏
fengkai45459 小时前
十二、Redis -1
运维·数据库·redis