当前位置: 首页 > news >正文

学习笔记039——SpringBoot整合Redis

文章目录

  • 1、Redis 基本操作
    • Redis 默认有 16 个数据库,使用的是第 0 个,切换数据库
    • 添加数据/修改数据
    • 查询数据
    • 批量添加
    • 批量查询
    • 删除数据
    • 查询所有的 key
    • 清除当前数据库
    • 清除所有数据库
    • 查看 key 是否存在
    • 设置有效期
    • 查看有效期
  • 2、Redis 数据类型
    • String
      • 追加字符串
      • 查看字符串长度
      • 自增
      • 递减
      • 指定递增长度
      • 指定递减长度
      • 字符串截取
      • 修改局部字段
    • List
      • 从左侧添加
      • 从右侧添加
      • 取值
      • 删除,左侧移除
      • 右侧移除
      • 通过下标获取值
      • 删除集合中指定的值,count 是删除的个数
      • 通过下标修改集合中的值
      • 获取长度
      • 截取list
      • 查看集合是否存在
    • Set
      • 添加数据
      • 查询数据
      • 判断集合中是否存在某个值
      • 获取集合长度
      • 删除元素
      • 随机取值
    • Hash
      • 存值
      • 取值
      • 存多个值
      • 取多个值
      • 取所有值
      • 删除数据
      • 获取长度
      • 判断集合中是否存在某个值
      • 获取集合中所有 key
      • 获取集合中所有 value
    • Zset
      • 添加数据
      • 查询数据
      • 升序查询
      • 降序查询
      • 删除数据
  • 3、Spring Boot 整合 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

<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>
spring:redis:database: 0host: 192.168.248.138port: 6379
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;
}
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 {@Autowiredprivate 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);}
}
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 {@Beanpublic 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());}
}

字符串

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

List

@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

@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

@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

@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" );
}
http://www.lryc.cn/news/493053.html

相关文章:

  • (笔记)简单了解ZYNQ
  • 大众点评小程序mtgsig1.2算法
  • 七牛云AIGC内容安全方案助力企业合规创新
  • .net的winfrom程序 窗体透明打开窗体时出现在屏幕右上角
  • 基于YOLOv8深度学习的智慧课堂教师上课行为检测系统研究与实现(PyQt5界面+数据集+训练代码)
  • 使用 Tkinter 创建一个简单的 GUI 应用程序来合并视频和音频文件
  • 【C++笔记】模板进阶
  • Soul App创始人张璐团队亮相GITEX GLOBAL 2024,展示多模态AI的交互创新
  • ffmpeg.wasm 在浏览器运行ffmpeg操作视频
  • 用Python爬虫“偷窥”1688商品详情:一场数据的奇妙冒险
  • CentOS上如何离线批量自动化部署zabbix 7.0版本客户端
  • 【开源项目】ChinaAddressCrawler 中国行政区划数据(1980-2023年)采集及转换(Java版),含SQL格式及JSON格式
  • React中事件处理和合成事件:理解与使用
  • Local Changes不展示,DevEco Studio的git窗口中没有Local Changes
  • 大数据笔记
  • 【Linux网络编程】TCP套接字
  • 在Manjaro Gnome桌面的基础上安装Budgie桌面环境
  • vscode可以编译通过c++项目,但头文件有红色波浪线的问题
  • 前后端中Json数据的简单处理
  • Java爬虫:深入解析商品详情的利器
  • 新型大语言模型的预训练与后训练范式,阿里Qwen
  • 深入理解 Dubbo 如何动态感知服务下线
  • VSCode 下载 安装
  • 局域网的网络安全
  • VMware ubuntu创建共享文件夹与Windows互传文件
  • TCP/IP网络编程-C++(上)
  • React Hooks中use的细节
  • 通信网络安全分层及关键技术解决
  • C++ 面向对象包含哪些设计原则
  • 微信小程序首页搜索框的实现教程