【服务器】Java连接redis及使用Java操作redis、使用场景
一、Java连接redis-No-SQL
1、导入依赖
在你的项目里面导入redis的pom依赖
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version> </dependency>
2、连接redis
连接redis
//参数一:要连接redis的IP地址//参数二:端口号Jedis jedis = new Jedis("localhost", 6379);//登陆密码jedis.auth("123456");//测试是否连接成功System.out.println(jedis.ping());System.out.println(jedis.select(1));
二、操作redis
以下数据类型基本上涵盖了各种常见的数据存储需求,而且 Redis 的数据类型支持多种高级操作,因此特别适用于快速、可靠、实时的数据访问场景。
字符串(String):最基本的数据类型,可以包含任何数据,包括二进制数据。在 Redis 中字符串是二进制安全的,这意味着 Redis 的字符串可以包含任何数据,比如压缩数据、序列化对象等。
哈希(Hash):哈希数据类型用于存储一组键值对,即一个对象(Object)。哈希类型适合存储对象类型的数据,比如用户信息、文章信息等,每个对象可以包含多个键值对。由于 Redis 的哈希类型支持嵌套,因此可以存储多维数据对象,比如由用户组成的用户列表。
列表(List):列表类型类似于数组,它包含多个字符串元素,并按照插入顺序排序。可以在列表两端(左端和右端)执行添加和删除操作。
集合(Set):集合类型是字符串的无序集合。它类似于列表,但是每个元素是唯一的,不能重复。因此,可以用集合类型处理唯一性的数据,比如点赞用户 ID 等。
有序集合(Sorted Set):有序集合与集合类型类似,但是每个元素都带有一个分数值(score),元素按照分数值排序,默认升序。因此,它可以用于实现类似排行榜的功能。
后面就是根据这些类型在Java中进行操作
1、Redis字符串(String)
//string set get del sexex ttljedis.select(3);//指定数据库//添加数据jedis.set("string_name", "傻鸟");
// get key //获取System.out.println(jedis.get("string_name"));
// type key //查看类型System.out.println(jedis.type("string_name"));
// keys * 或keys key 查看所有或者指定的keySystem.out.println(jedis.keys("*"));
// SETEX KEY_NAME TIMEOUT VALUE 给键值对设置过期时间jedis.setex("string_test", 100, "活着");
// ttl key 获取键值对剩余的存活时间System.out.println(jedis.ttl("string_test"));
2、Redis哈希(Hash)
//Hashjedis.select(4);//指定数据库// hset key field1 value1 [field2 value2] 同时将多个field-value设置到哈希表key中jedis.hset("hash_user", "name", "嘿嘿嘿");jedis.hset("hash_user", "sex", "男");jedis.hset("hash_user", "age", "20");// hget key field 获取指定的字段值System.out.println(jedis.hget("hash_user", "sex"));// hdel key field 删除指定的字段值jedis.hdel("hash_user", "sex");// hgetall key 查询指定key的所有字段Map<String, String> hash_user_map = jedis.hgetAll("hash_user");System.out.println(hash_user_map);// hexists key field 查询指定key中的字段是否存在Boolean hash_user = jedis.hexists("hash_user", "sex");System.out.println(hash_user);// hlen key 获取指定key中的长度Long hash_user_len = jedis.hlen("hash_user");System.out.println(hash_user_len);
封装成方法,优化代码
public void setHashMap(Jedis jedis, String key, Map<String, String> map) {if (map != null && map.size() > 0) {Set<String> keys = map.keySet();for (String k : keys) {jedis.hset(key, k, map.get(k));}}}
Map map = new HashMap<>();map.put("name", "嘿嘿嘿");map.put("sex", "男");map.put("age", "20");setHashMap(jedis, "user", map);
3、Redis列表(List)
// lpush key value1 value2 value3 将一个或多个值插入到列表头部jedis.lpush("List_hobby", "唱", "跳", "rap", "篮球"); // llen key 获取列表的长度System.out.println(jedis.llen("List_hobby")); // lindex key index 根据索引获取列表中的元素System.out.println(jedis.lindex("List_hobby", 0)); // lrange key start sop 查看指定范围内的元素System.out.println(jedis.lrange("List_hobby", 0, 2));
4、Redis集合(Set)
// sadd key value1 [value2] 向集合添加一个或多个元素jedis.sadd("set_user", "张三", "李四", "王五", "张三丰");
// scard key 获取集合中的元素数量System.out.println(jedis.scard("set_user"));
// exists key 是否存在System.out.println(jedis.exists("set_user"));
5、Redis有序集合(Sorted Set)
// -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。jedis.zadd("mysort", 1.0, "三国演义");jedis.zadd("mysort", 2.0, "西游记");jedis.zadd("mysort", 3.0, "水浒传");jedis.zadd("mysort", 4.0, "红楼梦");Map<String, Double> map = new HashMap<>();map.put("mutouliu", 5.0);jedis.zadd("mysort", map);//正序排列Set<String> mysort = jedis.zrange("mysort", 0, -1);System.out.println(mysort);//倒序排列Set<String> mysort1 = jedis.zrange("mysort", -1, 0);System.out.println(mysort1);// 命令用于计算集合中元素的数量System.out.println(jedis.zcard("mysort"));
// 命令用于计算有序集合中指定分数区间的成员数量System.out.println(jedis.zcount("mysort", 0, 4));
// 命令在计算有序集合中指定字典区间内成员数量。System.out.println(jedis.zlexcount("mysort", "-", "+"));
三、redis的应用场景
1、常用的应用场景
Redis(Remote Dictionary Server)是一种开源的基于内存的高性能键值存储系统,它常用于以下几个应用场景,除了这几个主要应用场景外;Redis还可用于分布式锁、任务调度、延时队列等一些高级用途。总之,Redis因为其高效的内存操作和丰富的数据结构,非常适用于那些需要快速、可靠、实时的数据访问场景。
缓存:Redis的主要应用场景之一是作为缓存层,将热点数据存储在内存中,提供高速的读写访问,并且可以通过设置过期时间自动失效,减轻数据库负载。
用户会话管理:在一些需要跟踪用户登录状态或会话的应用中,Redis可以用来存储用户的会话数据,提供快速的读写操作和可靠的持久化。
队列系统:Redis的List数据结构可以用来实现队列和任务队列。生产者可以将任务放入队列的一端,消费者从另一端逐个取出任务进行处理,实现简单高效的任务分发与处理机制。
发布/订阅系统:Redis支持订阅与发布模式,可以用来搭建实时通信、实时消息传递、实时更新等场景,广泛应用于聊天室、消息队列、实时推送等。
排行榜/计数器:利用Redis的有序集合(Sorted Set)数据结构,可以很方便地实现排行榜、计数器等功能,比如按照用户的积分进行排名。
地理位置服务:Redis的地理位置(Geo)功能可以存储经纬度信息,并提供快速的地理位置计算,可以用于构建附近的人、附近的店铺、地理围栏等应用。
相关文章:

【服务器】Java连接redis及使用Java操作redis、使用场景
一、Java连接redis-No-SQL 1、导入依赖 在你的项目里面导入redis的pom依赖 <dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version> </dependency> 2、连接redis 连接redis …...

Spark 基础知识点
Spark 基础 本文来自 B站 黑马程序员 - Spark教程 :原地址 什么是Spark 什么是Spark 1.1 定义:Apache Spark是用于大规模数据(large-scala data)处理的统一(unified)分析引擎 Spark最早源于一篇论文 Re…...

动作捕捉系统通过SDK与LabVIEW通信
运动分析、VR、机器人等应用中常使用LabVIEW对动作捕捉数据进行实时解算。NOKOV度量动作捕捉系统支持通过SDK与LabVIEW进行通信,将动作数据传入LabVIEW。 一、软件设置 1、形影软件设置 1、将模式切换到后处理模式 2、加载一个刚体数据 3、打开软件设置 4、选择网…...
【PTE-day02 sqlmap操作】
1、sqlmap简介 🍇sqlmap是一个自动化的SQL注入工具,其主要功能是扫描,发现并利用给定的URL进行SQL注入。目前支持的数据库有MySql、Oracle、Access、PostageSQL、SQL Server、IBM DB2、SQLite、Firebird、Sybase和SAP MaxDB等. Sqlmap采用了以下5种独特的SQL注入技术 (1)…...

2021年03月 Python(四级)真题解析#中国电子学会#全国青少年软件编程等级考试
Python等级考试(1~6级)全部真题・点这里 一、单选题(共25题,每题2分,共50分) 第1题 不超过100个元素的有序数列,使用二分查找能找到指定的元素,可能的查找次数不包括? …...
2023.10.18 信息学日志
1. CF1689D Lena and Matrix 题目描述 n ⋅ m n \cdot m n⋅m 的矩阵,求矩阵上任意一点坐标使得到矩阵上的关键点曼哈顿距离最大值最小。数据范围: ∑ n ⋅ m ≤ 1 0 6 \sum n \cdot m \leq 10^6 ∑n⋅m≤106 题目概况 来源:Codeforces …...
Modbus封装库(Com,tcp,udp一应俱全)
自行封装在用的Modbus通迅库,集成了com,tcp,udp, 做个笔记吧, 以下头文件, #pragma once #include <functional> #include <vector> #include <string> #include <memory> #ifdef LIBMODBUS_EXPORTS #define LIBMODBUS_EXPORT_…...

专访HuggingFace CTO:开源崛起、创业故事和AI民主化丨智源独家
导读 HuggingFace CTO Julien Chaumond认为,在大模型时代,AI民主化至关重要。随着大语言模型和复杂人工智能系统的崛起,持续提升AI技术的可及性有助于确保这些技术的获取和控制不集中在少数强大实体手中。技术民主化促进了机会均等࿰…...

C++常用格式化输出转换
在C语言中可以用printf以一定的格式打印字符,C当然也可以。 输入输出及命名空间还不太了解的小伙伴可以看一看C入门讲解第一篇。 在C中,可以用流操作符(stream manipulators)控制数据的输出格式,这些流操作符定义在2…...

如何使用 Loadgen 来简化 HTTP API 请求的集成测试
引言 在编写 HTTP 服务的过程中,集成测试 1 是保证程序正确性的重要一环,如下图所示,其基本的流程就是不断向服务发起请求然后校验响应的状态和数据等: 为大量的 API 和用例编写测试是一件繁琐的工作,而 Loadgen 2 正…...

软件测试面试大家是不是一问到项目就不会了?
软件测试面试中,介绍做过的项目,可以说是必不可少的一道面试题了,对于面试的同学来说,该自己发挥呢? 把项目的所有功能噼里啪啦说一遍就完事了?当然不是,我们要搞清楚,面试官问这个…...

伐木猪小游戏
欢迎来到程序小院 伐木猪 玩法:控制小猪点击屏幕左右砍树,不能碰到树枝,考验手速与眼力,记录分数,快去挑战伐木吧^^。开始游戏https://www.ormcc.com/play/gameStart/199 html <script type"text/javascript…...

0007Java安卓程序设计-ssm基于Android的校园新闻管理系统
文章目录 **摘** **要**目 录开发环境 编程技术交流、源码分享、模板分享、网课教程 🐧裙:776871563 摘 要 网络的广泛应用给生活带来了十分的便利。所以把校园新闻管理与现在网络相结合,利用java技术建设校园新闻管理系统app,实…...

git增加右键菜单
有次不小心清理系统垃圾,把git右击菜单搞没了,下面是恢复方法 将下面代码存为.reg文件,双击后导出生效,注意,你安装的git必须是默认C盘的,如果换了地方要改下面注册表文件中相关的位置 Windows Registry …...

openGauss学习笔记-117 openGauss 数据库管理-设置数据库审计-查看审计结果
文章目录 openGauss学习笔记-117 openGauss 数据库管理-设置数据库审计-查看审计结果117.1 前提条件117.2 背景信息117.3 操作步骤 openGauss学习笔记-117 openGauss 数据库管理-设置数据库审计-查看审计结果 117.1 前提条件 审计功能总开关已开启。需要审计的审计项开关已开…...
学习代码20231106
解释代码:os.environ[“OMP_NUM_THREADS“] “1“ 这行代码涉及到 Python 的 os 模块和环境变量。它的作用是设置名为 “OMPNUMTHREADS” 的环境变量的值为 “1”。让我解释一下各部分的含义: 1.os.environ: 这是 Python 中的一个字典,包含…...

turtle绘制分形树-第10届蓝桥杯省赛Python真题精选
[导读]:超平老师的Scratch蓝桥杯真题解读系列在推出之后,受到了广大老师和家长的好评,非常感谢各位的认可和厚爱。作为回馈,超平老师计划推出《Python蓝桥杯真题解析100讲》,这是解读系列的第5讲。 turtle绘制分形树&…...
【大厂招聘试题】__硬件工程师_2021年“美团”校招
目录 匹配职位:硬件工程师 1.(多选题)单处理系统中,进程P1,P2,P3处于就绪队列,进程P4,P6处于等待队列,P5正占用处理器运行,以下对接下来的运行合理的分析是( ÿ…...
算法通关村第七关|黄金挑战|迭代实现二叉树的前、中、后序遍历
1.迭代实现前序遍历 public List<Integer> preOrderTraversal(TreeNode root) {List<Integer> res new ArrayList<Integer>();if (root null) {return res;}Deque<TreeNode> stack new LinkedList<TreeNode>();TreeNode node root;while (!…...

了解高防服务器的工作原理
在当今互联网时代,网络安全问题日益突出,各种网络攻击层出不穷。为了保护企业的网络安全,高防服务器应运而生。那么,你是否了解高防服务器的工作原理呢?下面就让我们一起来探索一下。 高防服务器是一种能够有效抵御各种网络攻击的…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...

【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...

华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
谷歌浏览器插件
项目中有时候会用到插件 sync-cookie-extension1.0.0:开发环境同步测试 cookie 至 localhost,便于本地请求服务携带 cookie 参考地址:https://juejin.cn/post/7139354571712757767 里面有源码下载下来,加在到扩展即可使用FeHelp…...
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする
日语学习-日语知识点小记-构建基础-JLPT-N4阶段(33):にする 1、前言(1)情况说明(2)工程师的信仰2、知识点(1) にする1,接续:名词+にする2,接续:疑问词+にする3,(A)は(B)にする。(2)復習:(1)复习句子(2)ために & ように(3)そう(4)にする3、…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
Auto-Coder使用GPT-4o完成:在用TabPFN这个模型构建一个预测未来3天涨跌的分类任务
通过akshare库,获取股票数据,并生成TabPFN这个模型 可以识别、处理的格式,写一个完整的预处理示例,并构建一个预测未来 3 天股价涨跌的分类任务 用TabPFN这个模型构建一个预测未来 3 天股价涨跌的分类任务,进行预测并输…...

《通信之道——从微积分到 5G》读书总结
第1章 绪 论 1.1 这是一本什么样的书 通信技术,说到底就是数学。 那些最基础、最本质的部分。 1.2 什么是通信 通信 发送方 接收方 承载信息的信号 解调出其中承载的信息 信息在发送方那里被加工成信号(调制) 把信息从信号中抽取出来&am…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...

EtherNet/IP转DeviceNet协议网关详解
一,设备主要功能 疆鸿智能JH-DVN-EIP本产品是自主研发的一款EtherNet/IP从站功能的通讯网关。该产品主要功能是连接DeviceNet总线和EtherNet/IP网络,本网关连接到EtherNet/IP总线中做为从站使用,连接到DeviceNet总线中做为从站使用。 在自动…...