【Redis】在Java中以及Spring环境下操作Redis
Java环境下:
1.创建maven 项目
2.导入依赖
<!-- redis --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.3.2</version></dependency>
此处使用的是Jedis(提供的api和redis命令高度一致)
3.配置端口转发
防止Redis的端口被黑客攻击 将云服务器的redis端口映射到本地主机中
在xshell中配置:

此时, 访问本地的 8888, 就相当于访问对应服务器的 6379

此时连接成功
一.基本命令:
public static void test(Jedis jedis) {System.out.println("set 和 get 使用");//清空数据库jedis.flushAll();jedis.set("key","k1");jedis.set("key2","k2");jedis.set("key3","k3");String key = jedis.get("key");String key2 = jedis.get("key2");String key3 = jedis.get("key3");System.out.println("key: " + key);System.out.println("key2: " + key2);System.out.println("key3: " + key3);System.out.println("exists 和 del 使用");boolean result = jedis.exists("key");System.out.println("result:" + result);result = jedis.exists("key1111");System.out.println("result:" + result);long del = jedis.del("key", "key2");result = jedis.exists("key");System.out.println("result:" + result);System.out.println("keys 使用");jedis.set("key","k1");jedis.set("key2","k2");Set<String> keys = jedis.keys("*");System.out.println("keys: " + keys);System.out.println("expire 和 ttl 使用");jedis.set("key4","k4");jedis.expire("key4",10);//休眠5stry {Thread.sleep(5000);} catch (InterruptedException e) {throw new RuntimeException(e);}long ttl = jedis.ttl("key4");System.out.println("ttl: " + ttl );System.out.println("type 使用");jedis.flushAll();jedis.set("String", "1");String type = jedis.type("String");System.out.println("type: "+type);jedis.lpush("list","111","222","333");type = jedis.type("list");System.out.println("type: "+type);jedis.sadd("set","a","b","c");type = jedis.type("set");System.out.println("type: "+type);jedis.zadd("zset",1.0,"zhangsan");type = jedis.type("zset");System.out.println("type: "+type);jedis.hset("hash","f1 ","v1");type = jedis.type("hash");System.out.println("type: "+type);}

String :
public static void test(Jedis jedis) {//清空数据库jedis.flushAll();System.out.println("mset 和 mget 使用");jedis.mset("k1","111","k2","222","k3","333");List<String> mget = jedis.mget("k1", "k2", "k3","k4");System.out.println("mget: " +mget);System.out.println("getrange 和 setrange 使用");jedis.set("k4","abcdefgh");String k4 = jedis.getrange("k4", 0, 4);System.out.println("result: " +k4);jedis.setrange("k4",0,"eeee");System.out.println("k4: " +jedis.get("k4"));System.out.println("append 使用");jedis.append("k4","aaaaaa");System.out.println("k4: " + jedis.get("k4"));System.out.println("incr 和 decr 使用");jedis.set("k5","111");System.out.println( "k5: " + jedis.incr("k5"));System.out.println( "k5: " + jedis.decr("k5"));}

list使用:
public static void test(Jedis jedis) {jedis.flushAll();System.out.println("lpush 和 lrange 使用");jedis.lpush("key","1","2","3","4","5");System.out.println("key:" + jedis.lrange("key",0,-1));System.out.println("rpuhs ,rpop, lpop 使用 ");jedis.rpush("key2","1","2","3","4","5");System.out.println("key2 :" + jedis.lrange("key2",0,-1));System.out.println("lpop key2:" + jedis.lpop("key2"));System.out.println("rpop key2:" + jedis.rpop("key2"));System.out.println("llen 使用");System.out.println("len key2: " + jedis.llen("key2"));}

hash的使用:
private static void test(Jedis jedis) {jedis.flushAll();System.out.println("hset 和 hget 使用");HashMap<String,String> hash = new HashMap<>();hash.put("f2","v2");hash.put("f3","v3");hash.put("f4","v4");jedis.hset("key",hash);jedis.hset("key","f1","v1");System.out.println("key f1: " +jedis.hget("key", "f1"));System.out.println("key f5: " +jedis.hget("key", "f5"));System.out.println("hexists 使用");Boolean result = jedis.hexists("key","f1");System.out.println("key f1 result: " + result);result = jedis.hexists("key","f5");System.out.println("key f5 result: " + result);System.out.println("hkeys 和 hvals 使用");Set<String> hkeys = jedis.hkeys("key");System.out.println("hkeys: " + hkeys);List<String> hvals = jedis.hvals("key");System.out.println("hvals: " +hvals);System.out.println("hdel 使用");jedis.hdel("key","f1");result = jedis.hexists("key","f1");System.out.println("key f1 result: " + result);System.out.println("hmset 和 hmget 使用");List<String> hmget = jedis.hmget("key", "f1", "f2", "f3");System.out.println("hmget key: " + hmget);}

set的使用:
public static void test(Jedis jedis) {jedis.flushAll();System.out.println("sadd 和 smembers 使用");jedis.sadd("key","a","b","c","d");Set<String> smembers = jedis.smembers("key");System.out.println("key: " +smembers);System.out.println("sismember , scard , spop 使用");boolean result = jedis.sismember("key", "a");System.out.println("result: " + result);long len = jedis.scard("key");System.out.println("key len: " +len);jedis.spop("key");System.out.println("key len: " +jedis.scard("key"));System.out.println("sinter 和 sinterstore");jedis.sadd("key2","1","2","3","4","5");jedis.sadd("key3","3","4","5","6","7");System.out.println("[key2 key3]sinter: "+ jedis.sinter("key2","key3"));long sinterstore = jedis.sinterstore("key4", "key2", "key3");System.out.println("sinterstore: " + sinterstore);System.out.println("key4: " + jedis.smembers("key4"));}

zset的使用:
public static void test(Jedis jedis) {jedis.flushAll();System.out.println("zadd 和 zrange 使用");jedis.zadd("key",10.0,"zhangsan");Map<String ,Double> hash = new HashMap<>();hash.put("lisi",20.0);hash.put("wangwu",30.0);jedis.zadd("key",hash);List<String> members = jedis.zrange("key", 0, -1);System.out.println("members: "+members);List<Tuple> key = jedis.zrangeWithScores("key", 0, -1);System.out.println("key: " + key);System.out.println("zcard , zscore 使用");long len = jedis.zcard("key");System.out.println("len key: " +len);Double score = jedis.zscore("key","zhangsan");System.out.println("score: " + score);System.out.println("zrem , zrank 使用");Long zrank = jedis.zrank("key", "lisi");System.out.println("lisi rank: " + zrank);jedis.zrem("key","zhangsan");System.out.println("lisi rank: " + jedis.zrank("key", "lisi"));}

都是一些基本操作,跟在redis操作基本一致,
Spring环境:
创建项目时勾选即可


通过注入的方法拿到StringRedisTemplate操作Redis 相当于刚才的Jedis

将操作Redis的方法分成几个类别,好进一步更好的组织


大体命令基本一致
相关文章:
【Redis】在Java中以及Spring环境下操作Redis
Java环境下: 1.创建maven 项目 2.导入依赖 <!-- redis --><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.3.2</version></dependency> 此处使用的是Jedis&…...
MFC—加法器
1.需要为编辑框添加变量 2.在cpp文件中的按钮中添加代码 void CMFCAddtionDlg::OnBnClickedButton1() {// TODO: 在此添加控件通知处理程序代码UpdateData(true);//把控件里的值更新给变量m_add m_add1 m_add2;//加法UpdateData(false);//把控件相加的值赋值给控件 }...
SpringBoot五:Web开发
精心整理了最新的面试资料,有需要的可以自行获取 点击前往百度网盘获取 点击前往夸克网盘获取 要解决的问题 导入静态资源首页jsp,模板引擎Thymeleaf装配扩展SpringMVC增删改查拦截器国际化(非重点) 可以使用以下方式处理静态…...
电机控制的空间矢量调制 (SVPWM)
目录 概述 1 电机控制的空间矢量调制 (SVPWM)介绍 2 实现原理 2.1 设计要求 2.2 SVPWM 的实现 3 SVPWM的C语言 3.1 代码文件 3.2 STM32G4平台上验证 4 源代码文件 概述 本文主要介绍电机控制的空间矢量调制 (SVPWM),空间矢量调制 (SVPWM) 是感应电机和永磁…...
jupyterhub on k8s 配置用户名密码 简单版
如果只是小组内使用 不想共用密码 也不想搞复杂认证方案 那么就直接通过map(用户名,密码md5值)来制定密码 config.yaml部分内容 hub:config:JupyterHub:shutdown_on_logout: true # 用户logout 自动stop jupyter pod,家目录下所有文件会被保存到pvc 即启动后之前家目录下…...
c++笔试准备
一、 输入输出 1.多组数据【while】 cin #include <iostream> using namespace std;int main() {int a, b;while (cin >> a >> b) { // 当读取到EOF时,循环自动终止cout << a b << endl;}return 0; }getline #include <iostrea…...
【Docker】如何在Linux、Windows、MacOS中安装Docker
Linux安装Docker 在终端中执行一键安装脚本命令安装dockersudo curl -fsSL https://gitee.com/tech-shrimp/docker_installer/releases/download/latest/linux.sh | bash -s docker --mirror Aliyun1.1 配置docker镜像源 在终端执行 一行命令,编辑配置文件sudo tee /etc/docke…...
欧拉回路与哈密尔顿回路: Fleury算法与Hierholzer 算法(C++)
图论中的回路是指一个路径, 它从某个顶点开始, 经过所有边恰好一次, 并回到起始顶点. 定义 欧拉回路: 从一个顶点出发, 经过每条边恰好一次, 并且最终回到起始顶点. 哈密尔顿回路: 从一个顶点出发, 经过每个顶点恰好一次, 并且最终回到起始顶点. 欧拉路径: 从一个顶点出发, …...
JavaSE学习笔记26-集合(Collection)
集合 Java 中的集合(Collection)是 Java 标准库中非常重要的一部分,用于存储和操作一组对象。Java 集合框架(Java Collections Framework)提供了一套丰富的接口和类,用于处理各种数据结构,如列…...
本地开发用ASP.NET Core Web API项目创建及测试
1. 服务端代码(C#) 1.1 创建ASP.NET Core Web API项目 打开Visual Studio 2022。 选择“创建新项目”。 选择“ASP.NET Core Web API”模板,点击“下一步”。 输入项目名称(如OracleApi),选择项目位置&…...
Redis——用户签到BitMap,UV统计
目录 BitMap 使用场景 1. 用户签到系统 2. 用户行为标记 3. 布隆过滤器(Bloom Filter) BitMap介绍 Redis中的使用 Redis功能示例 添加: 获取: 批量获取: java中实现 统计本月连续签到次数 UV统计 UV 统计…...
一文详解U盘启动UEFI/Legacy方式以及GPT/MBR关系
对于装系统的老手而说一直想研究一下装系统的原理,以及面对一些问题时的解决思路,故对以前的方法进行原理上的解释,主要想理解其底层原理。 引导模式 MBR分区可以同时支持UEFI和Legacy引导,我们可以看一下微pe制作的启动盘&#…...
Unity Shader 学习13:屏幕后处理 - 使用高斯模糊的Bloom辉光效果
目录 一、基本的后处理流程 - 以将画面转化为灰度图为例 1. C#调用shader 2. Shader实现效果 二、Bloom辉光效果 1. 主要变量 2. Shader效果 (1)提取较亮区域 - pass1 (2)高斯模糊 - pass2&3 (3ÿ…...
小迪安全-24天-文件管理,显示上传,黑白名单,访问控制
上节课回顾,token问题 没有更新token值,造成了复用 加上这段代码就好了,就不会复用了 文件管理-文件上传 upload.html文件,找ai生成就行 uoload.php接受文件上传的信息 这里在写个临时文件存储换个地方 因为上面临时文件存在c盘…...
java23种设计模式-建造者模式
建造者模式(Builder Pattern)学习笔记 1. 模式定义 建造者模式是一种创建型设计模式,通过分步构建复杂对象的方式,将对象的构建过程与表示分离。允许使用相同的构建过程创建不同的对象表示。 2. 适用场景 ✅ 需要创建包含多个…...
JMeter 中实现 100 个用户在 3 秒内并发登录
在 JMeter 中实现 100 个用户在 3 秒内并发登录,需要合理配置线程组、定时器和测试逻辑。以下是具体步骤: 1. 创建测试计划 打开 JMeter。右键点击“Test Plan”,选择 Add > Threads (Users) > Thread Group。 : 设置为 100(模拟 100 个用户)。 : 设置为 3...
SOME/IP-SD -- 协议英文原文讲解2
前言 SOME/IP协议越来越多的用于汽车电子行业中,关于协议详细完全的中文资料却没有,所以我将结合工作经验并对照英文原版协议做一系列的文章。基本分三大块: 1. SOME/IP协议讲解 2. SOME/IP-SD协议讲解 3. python/C举例调试讲解 5.1.2.2 S…...
IntelliJ IDEA中Maven配置全指南
一、环境准备与基础配置 1.1 Windows 环境下载并配置 Maven 见此篇博文:环境配置 1.2 IDEA配置步骤 打开设置面板:File → Settings → Build → Build Tools → Maven 关键配置项: Maven home path E:\apache-maven-3.9.9 (…...
第438场周赛:判断操作后字符串中的数字是否相等、提取至多 K 个元素的最大总和、判断操作后字符串中的数字是否相等 Ⅱ、正方形上的点之间的最大距离
Q1、判断操作后字符串中的数字是否相等 1、题目描述 给你一个由数字组成的字符串 s 。重复执行以下操作,直到字符串恰好包含 两个 数字: 从第一个数字开始,对于 s 中的每一对连续数字,计算这两个数字的和 模 10。用计算得到的新…...
20-R 绘图 - 饼图
R 绘图 - 饼图 R 语言提供来大量的库来实现绘图功能。 饼图,或称饼状图,是一个划分为几个扇形的圆形统计图表,用于描述量、频率或百分比之间的相对关系。 R 语言使用 pie() 函数来实现饼图,语法格式如下: pie(x, l…...
多模态2025:技术路线“神仙打架”,视频生成冲上云霄
文|魏琳华 编|王一粟 一场大会,聚集了中国多模态大模型的“半壁江山”。 智源大会2025为期两天的论坛中,汇集了学界、创业公司和大厂等三方的热门选手,关于多模态的集中讨论达到了前所未有的热度。其中,…...
QMC5883L的驱动
简介 本篇文章的代码已经上传到了github上面,开源代码 作为一个电子罗盘模块,我们可以通过I2C从中获取偏航角yaw,相对于六轴陀螺仪的yaw,qmc5883l几乎不会零飘并且成本较低。 参考资料 QMC5883L磁场传感器驱动 QMC5883L磁力计…...
Golang dig框架与GraphQL的完美结合
将 Go 的 Dig 依赖注入框架与 GraphQL 结合使用,可以显著提升应用程序的可维护性、可测试性以及灵活性。 Dig 是一个强大的依赖注入容器,能够帮助开发者更好地管理复杂的依赖关系,而 GraphQL 则是一种用于 API 的查询语言,能够提…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
成都鼎讯硬核科技!雷达目标与干扰模拟器,以卓越性能制胜电磁频谱战
在现代战争中,电磁频谱已成为继陆、海、空、天之后的 “第五维战场”,雷达作为电磁频谱领域的关键装备,其干扰与抗干扰能力的较量,直接影响着战争的胜负走向。由成都鼎讯科技匠心打造的雷达目标与干扰模拟器,凭借数字射…...
代理篇12|深入理解 Vite中的Proxy接口代理配置
在前端开发中,常常会遇到 跨域请求接口 的情况。为了解决这个问题,Vite 和 Webpack 都提供了 proxy 代理功能,用于将本地开发请求转发到后端服务器。 什么是代理(proxy)? 代理是在开发过程中,前端项目通过开发服务器,将指定的请求“转发”到真实的后端服务器,从而绕…...
Java编程之桥接模式
定义 桥接模式(Bridge Pattern)属于结构型设计模式,它的核心意图是将抽象部分与实现部分分离,使它们可以独立地变化。这种模式通过组合关系来替代继承关系,从而降低了抽象和实现这两个可变维度之间的耦合度。 用例子…...
libfmt: 现代C++的格式化工具库介绍与酷炫功能
libfmt: 现代C的格式化工具库介绍与酷炫功能 libfmt 是一个开源的C格式化库,提供了高效、安全的文本格式化功能,是C20中引入的std::format的基础实现。它比传统的printf和iostream更安全、更灵活、性能更好。 基本介绍 主要特点 类型安全:…...
基于开源AI智能名片链动2 + 1模式S2B2C商城小程序的沉浸式体验营销研究
摘要:在消费市场竞争日益激烈的当下,传统体验营销方式存在诸多局限。本文聚焦开源AI智能名片链动2 1模式S2B2C商城小程序,探讨其在沉浸式体验营销中的应用。通过对比传统品鉴、工厂参观等初级体验方式,分析沉浸式体验的优势与价值…...
Java数组Arrays操作全攻略
Arrays类的概述 Java中的Arrays类位于java.util包中,提供了一系列静态方法用于操作数组(如排序、搜索、填充、比较等)。这些方法适用于基本类型数组和对象数组。 常用成员方法及代码示例 排序(sort) 对数组进行升序…...
