Java 中操作 Redis

news2024/11/19 21:22:14

文章目录

    • 一、Redis 常用数据类型
    • 二、Redis 常用操作命令
      • 1. 字符串命令
      • 2. 哈希命令
      • 3. 列表命令
      • 4. 集合命令
      • 5. 有序集合命令
      • 6. 通用命令
    • 三、在 Java 中操作 Redis
      • 1. 导入 maven 坐标
      • 2. 配置 Redis 数据源
      • 3. 编写配置类
    • 四、在代码中的具体使用

一、Redis 常用数据类型

Redis 存储的是键值对结构的数据,其中 key 是字符串类型,value 有5种常用的数据类型:字符串 string、哈希 hash、列表 list、集合 set 以及有序集合 sorted set / zset。

二、Redis 常用操作命令

1. 字符串命令

在这里插入图片描述

① 设置 key 的过期时间:短信验证码一分钟后自动过期;
② key 不存在时设置 key 的值:分布式锁。

在这里插入图片描述

在这里插入图片描述

2. 哈希命令

在这里插入图片描述

哈希特别适合存储对象!

在这里插入图片描述
在这里插入图片描述

3. 列表命令

在这里插入图片描述

取出跟存入的顺序一致!

在这里插入图片描述

4. 集合命令

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

5. 有序集合命令

在这里插入图片描述

Redis 有序集合是 string 类型元素的集合,且不允许有重复成员,每个元素都会关联一个 double 类型的分数,通过这个分数对集合进行排序!

在这里插入图片描述
在这里插入图片描述

6. 通用命令

在这里插入图片描述

三、在 Java 中操作 Redis

1. 导入 maven 坐标

<dependency>
    <groupId>org.springframework.boot</groupId>
    <artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>

2. 配置 Redis 数据源

在这里插入图片描述

3. 编写配置类


import lombok.extern.slf4j.Slf4j;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.data.redis.connection.RedisConnectionFactory;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.data.redis.serializer.StringRedisSerializer;

@Configuration
@Slf4j
public class RedisConfiguration {

    @Bean
    public RedisTemplate redisTemplate(RedisConnectionFactory redisConnectionFactory) {
        log.info("开始创建redis模板对象...");
        RedisTemplate redisTemplate = new RedisTemplate();
        //设置redis的连接工厂对象
        redisTemplate.setConnectionFactory(redisConnectionFactory);
        //设置redis key的序列化器
        redisTemplate.setKeySerializer(new StringRedisSerializer());
        return redisTemplate;
    }

}

四、在代码中的具体使用


import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.redis.connection.DataType;
import org.springframework.data.redis.core.*;

import java.util.List;
import java.util.Set;
import java.util.concurrent.TimeUnit;

@SpringBootTest
public class SpringDataRedisTest {
    @Autowired
    private RedisTemplate redisTemplate;


    /**
     * 通过valueOperations对象就可以操作字符串类型的数据
     */
    @Test
    public void testRedisTemplate1() {

        ValueOperations valueOperations = redisTemplate.opsForValue();
        //插入数据
        valueOperations.set("name", "栈老师不回家");
        //读取数据
        String name = (String) valueOperations.get("name");
        //设置数据一分钟后过期,自动被清理,这里与redis原命令不同
        valueOperations.set("code", "1234", 1, TimeUnit.MINUTES);
        //只有当key不存在时设置其value值,这里也与redis命令不同
        valueOperations.setIfAbsent("lock", "1");

    }


    /**
     * 操作哈希类型
     */
    @Test
    public void testRedisTemplate2() {

        HashOperations hashOperations = redisTemplate.opsForHash();
        //插入数据
        hashOperations.put("001", "age", "20");
        //读取数据
        String age = (String) hashOperations.get("001", "age");
        //获得所有的key
        Set keys = hashOperations.keys("001");
        //获得所有的value
        List values = hashOperations.values("001");
        //删除一条数据
//        hashOperations.delete("001", "age");

    }


    /**
     * 通用命令操作
     */
    @Test
    public void testRedisTemplate3() {

        //查找所有的key
        Set keys = redisTemplate.keys("*");
        //检查给定key是否存在
        Boolean name = redisTemplate.hasKey("name");
        //返回key所存储值的数据类型
        DataType type = redisTemplate.type("name");
        //删除key
//        redisTemplate.delete("name");
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/886069.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

6.4 恶意代码

数据参考&#xff1a;CISP官方 目录 恶意代码概念及发展历程恶意代码的传播方式恶意代码防护 一、恶意代码概念及发展历程 1、什么是恶意代码 什么是恶意代码 《中华人民共和国计算机信息系统安全保护条例》第二十八条&#xff1a;“计算机病毒&#xff0c;是指编制或者…

VMware虚拟机下载与安装

VMware虚拟机下载与安装 目录 VMware虚拟机下载与安装[TOC](目录) 概述 1. 下载虚拟机1.1 访问官网1.2 点击产品菜单&#xff0c;然后选择产品 VMware Workstation Pro1.3 选择试用版下载 2.安装虚拟机2.1 右键点击安装包&#xff0c;选择以管理员身份运行2.2 按照说明进行安装…

玩转VS code 之 C/C++ 环境配置篇

PS&#xff1a;俺是菜鸟&#xff0c;整理和踩坑试错花了不少时间&#xff0c;如果这篇文章对您有用的话&#xff0c;请麻烦您留下免费的赞赞&#xff0c;赠人玫瑰&#xff0c;手留余香&#xff0c;码字踩坑不易&#xff0c;望三连支持 上一篇&#xff1a;玩转 VS code 之下载篇…

数字人如何赋能汽车品牌营销线下实时交互?

为了进一步巩固和拓展消费群体&#xff0c;扩大品牌影响力&#xff0c;别克汽车在线下开展了新品体验日活动&#xff0c;在品鉴会现场数字人影萱作为神秘嘉宾惊喜亮相&#xff0c;与现场嘉宾和众多媒体同屏实时互动&#xff0c;这虚拟与现实的碰撞互动形式&#xff0c;让现场嘉…

复合 类型

字符串和切片 切片 切片的作用是允许你引用集合中部分连续的元素序列&#xff0c;而不是引用整个集合。 例如&#xff1a; let s String::from("hello world");let hello &s[0..5]; // 切片 [0,5) 等效于&s[..5] let world &s[6..11]; // 切片…

Puppeteer vs Selenium的主要区别

Puppeteer vs. Selenium&#xff1a;他们来自哪里&#xff1f; Google Puppeteer是一个 Node.js 库和浏览器测试框架。该技术旨在提供高级应用程序编程接口&#xff0c;以通过 DevTools 协议控制无头 Chrome。Selenium 支持多种浏览器和语言&#xff0c;而 Puppeteer 只专注于 …

Leetcode-每日一题【剑指 Offer 32 - III. 从上到下打印二叉树 III】

题目 请实现一个函数按照之字形顺序打印二叉树&#xff0c;即第一行按照从左到右的顺序打印&#xff0c;第二层按照从右到左的顺序打印&#xff0c;第三行再按照从左到右的顺序打印&#xff0c;其他行以此类推。 例如: 给定二叉树: [3,9,20,null,null,15,7], 3 / \ 9 20…

清风数学建模——拟合算法

拟合算法 文章目录 拟合算法概念 确定拟合曲线最小二乘法的几何解释求解最小二乘法matlab求解最小二乘法如何评价拟合的好坏计算拟合优度的代码 概念 在前面的篇幅中提到可以使用插值算法&#xff0c;通过给定的样本点推算出一定的曲线从而推算出一些想要的值。但存在一些问题…

设计模式之原型模式详解

前言 在设计模式的系列文章中&#xff0c;我们前面已经写了工厂模式、单列模式、建造者模式&#xff0c;在针对创建型模式中&#xff0c;今天想跟大家分享的是原型模式&#xff0c;我觉的这种模式叫克隆模式会更佳恰当。原型模式的目的就是通过复制一个现有的对象来生成一个新…

vite4+vue3+electron23.3+ts桌面应用bs端开发 打包windows、linux、max三个系统的安装包

vite4vue3electron23.3ts桌面应用bs端开发 打包windows、linux、max三个系统的安装包 主要包依赖 "electron-store": "^8.1.0", //全局数据状态管理&#xff0c;可选择性安装"electron": "23.3.8","electron-builder": &q…

驱动控制LED灯

编写驱动代码&#xff0c;初步实现串口输入逻辑控制开发板的LED灯的亮灭 代码示例 head.h #ifndef __HEAD_H__ #define __HEAD_H__typedef struct {unsigned int MODER;unsigned int OTYPER;unsigned int OSPEEDR;unsigned int PUPD;unsigned int IDR;unsigned int ODR; }gp…

PDManer元数建模

学习文档 PDManer元数建模-v4-操作手册 (yuque.com)https://www.yuque.com/pdmaner/docs/pdmaner-manual#goEFW 建表 -- 创建用户表2 -- 创建用户表2 √ create table USER_TEST_WXX2 ( -- 主键自增generated by default as identity primary keyUSER_ID NUMBER g…

JAVA基础知识(一)——Java语言描述、变量和运算符

TOC(Java语言描述、变量和运算符) 一、JAVA语言描述 1.1 java语言描述 JDK、JRE、jVM三者之间的关系&#xff0c;以及JDK、JRE包含的主要结构有哪些&#xff1f; JDKJre java的开发工具&#xff08;javac.exe java.exe javadoc.exe&#xff09; jre jvmjava的核心类库 为什…

【Linux】【驱动】应用层和驱动层传输数据

【Linux】【驱动】应用层和驱动层传输数据 绪论1.如果我在应用层使用系统0 对设备节点进行打开&#xff0c;关闭&#xff0c;读写等操作会发生什么呢? 2 我们的应用层和内核层是不能直接进行数据传输的3 驱动部分的代码4 应用代码5 编译以及运行代码 绪论 Linux一切皆文件! 文…

Matplotlib学习挑战第五关--绘制多图subplot() 和 subplots()

Matplotlib 绘制多图 我们可以使用 pyplot 中的 subplot() 和 subplots() 方法来绘制多个子图。 subplot() 方法在绘图时需要指定位置&#xff0c;subplots() 方法可以一次生成多个&#xff0c;在调用时只需要调用生成对象的 ax 即可。 1、subplot subplot(nrows, ncols, in…

2.阿里云对象存储OSS

1.对象存储概述 文件上传&#xff0c;是指将本地图片、视频、音频等文件上传到服务器上&#xff0c;可以供其他用户浏览或下载的过程。文件上传在项目中应用非常广泛&#xff0c;我们经常发抖音、发朋友圈都用到了文件上传功能。 实现文件上传服务&#xff0c;需要有存储的支持…

驱动DAY3 控制三盏灯亮灭

1.头文件 #ifndef __HEAD_H__ #define __HEAD_H__ //LED1 PE10 和 LED3 PE8 #define PHY_LED1_MODER 0X50006000 #define PHY_LED1_ODR 0X50006014 #define PHY_LED1_RCC 0X50000A28 //LED2 PF10 #define PHY_LED2_MODER 0X50007000 #define PHY_LED2_ODR 0X50007014#endif 2…

Scractch3.0_Arduino_ESP32_图形化编程学习_Blynk一键配网点灯(七)

IO中断 目的器材程序联系我们 目的 使用自动配网连接Blynk 自动配网 Blynk 器材 硬件: 齐护机器人C02 购买地址 软件: scratch3.0 下载地址:官网下载 程序 程序上传后&#xff0c;在一定时间内联不上网会自动进入智能配网状态&#xff0c;如下图所示。 打开手机搜索名为…

AI芯片暴涨!沙特、阿联酋等国加入抢货行列 | 百能云芯

在全球半导体市场中&#xff0c;一场异常激烈的竞争正在酝酿&#xff0c;引发了各国科技巨头和企业的争相购买英伟达AI芯片的浪潮。除了美国科技大厂之外&#xff0c;包括百度、字节跳动、阿里等中国企业在内&#xff0c;沙特阿拉伯与阿拉伯联合酋长国也纷纷加入了这场角逐&…

【路由协议】使用按需路由协议和数据包注入的即时网络模拟传递率(PDR)、总消耗能量和节点消耗能量以及延迟研究(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…