Redis-使用java代码操作Redis

                                                   🎬 艳艳耶✌️:个人主页

                                                  🔥 个人专栏 :《Spring与Mybatis集成整合》《Vue.js使用》

                                                    ⛺️ 越努力 ,越幸运。

 

1、Java连接Redis

Redis与MySQL都是数据库,java操作redis其实跟操作mysql的过程是一样的。

1.1 导入依赖

打开IDEA,进入Java项目,导入pom依赖,代码如下:

<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>2.9.0</version>
</dependency>

1.2 Redis服务器准备

导入依赖后,找到redis.bat双击启动redis(时常忘记文件位置的可以新开快捷方式置于桌面),如下:

1.3 建立连接

在java项目包下,新建一个名为redis的Package用来存放建立链接的java代码,如下:

 在redis包下,新建java类,并添加以下代码,如下:

package redis;import redis.clients.jedis.Jedis;/*** @author 谌艳* @site www.shenyan.com* @create 2023-11-05 21:21*/
public class Demo1 {public static void main(String[] args) {
//      建立链接Jedis jedis = new Jedis("localhost",6379);//IP地址+端口号
//      设置密码jedis.auth("123456");
//      测试链接是否成功System.out.println(jedis.ping());
//        ok}
}

然后启动Demo1方法,进行测试链接是否成功,效果如下:

2.Java操作Redis的常见类型数据存储

在进行存储数据前,我们先需要将Java链接上Redis,参考第一模块,如上。

链接上Redis之后,才可进行数据存储。

2.1 String(字符串)存取值操作

2.1.1 指定存储数据的数据库与存储入库操作

代码如下:

package redis;
import redis.clients.jedis.Jedis;/*** @author 谌艳* @site www.shenyan.com* @create 2023-11-05 21:56*/
public class Demo2 {public static void main(String[] args) {
//      建立链接Jedis jedis = new Jedis("localhost",6379);//IP地址+端口号
//      设置密码jedis.auth("123456");//      String的操作jedis.select(1);//指定数据库jedis.set("yanyan","是个大美女");//往指定的数据库中添加数据}}

效果如下:

2.1.2 存储数据的修改与查询

添加以下代码:

jedis.set("yanyan","yanyan将原有数据修改了");//将原先存储的数据修改System.out.println(jedis.get("yanyan"));//查询

修改效果如下:

2.1.3 数据临时存储

在Demo2中加入以下代码:

jedis.setex("time",20,"设置过期时间为52秒");//为"time"键设置过期时间
System.out.println(jedis.ttl("time"));//获取键的剩余生存时间并且打印返回

效果展示:

过期就没有了

2.2 哈希数据结构存取值操作

案例:

  • 创建一个名为 "user" 的哈希表,并向其中添加三个字段:"name"、"hobby" 和 "age",并分别设置它们的值。
2.2.1 存值(新增与修改)
1. Jedis存值

新建Demo3

package redis;
import redis.clients.jedis.Jedis;import java.util.HashMap;
import java.util.Map;
import java.util.Set;/*** @author 谌艳* @site www.shenyan.com* @create 2023-11-05 22:13*/
public class Demo3 {public static void main(String[] args) {
//      建立链接Jedis jedis = new Jedis("localhost",6379);//IP地址+端口号
//      设置密码jedis.auth("123456");//      哈希数据结构的操作
//      哈希表是 Redis 中的一种数据结构,它允许你在一个键下存储多个字段和与这些字段相关联的值。jedis.select(1);//指定数据库
//      创建一个名为 "user" 的哈希表,并向其中添加三个字段:"name"、"hobby" 和 "age",并分别设置它们的值jedis.hset("user","name","艳艳耶");//姓名,将 "name" 字段设置为 "Kissship"jedis.hset("user","hobby","超级大美女");//爱好设置jedis.hset("user","age","18");//年龄设置}}

效果图:

2. 通过Map对象存值

以下是具体实现代码与逻辑详解:

Demo3:

   Map map = new HashMap();//创建一个名为map的HashMap对象,用于存储键值对数据map.put("name","炸鸡");//名字map.put("hobby","喜欢吃炸鸡");//爱好map.put("age","17");//年龄RedisUtils.setHashMap(jedis,"user",map);//调用自定义的工具类方法setHashMap,并传递

RedisUtils:

package redis;
import redis.clients.jedis.Jedis;import java.util.HashMap;
import java.util.Map;import java.util.Set;public class RedisUtils {//通过Java中的Map对象进行数据存储public static void setHashMap(Jedis jedis, String Key, Map<String,String> map) {//空值检查//首先检查传入的map对象是否为非空且包含至少一个键值对。如果map为空或不包含键值对,方法不会执行任何操作,直接返回。if (map != null && map.size() > 0) {//遍历Map并存储数据Set<String> keys = map.keySet();//如果map不为空且包含键值对,方法会通过map.keySet()获取所有的键(字段名)。for (String k : keys) {//在循环中,对于每个键k,map.get(k)获取到对应的值(字段值)。jedis.hset(Key,k,map.get(k));//将当前键值对存储到Redis}}}}

效果展示:

2.2.2 取值(查询)
1. 获取哈希表中特定字段的值(单个查询)
  System.out.println(jedis.hget("user", "hobby"));//从名为"user"的哈希表中获取键为"hobby"的字段的值,并将其打印到控制台
2. 获取整个哈希表的内容(查询所有)
  System.out.println(jedis.hgetAll("user"));//获取名为"user"的哈希表中的所有字段和它们的值,然后将它们打印到控制台

2.2.3 删除
1. 删除特定字段(单个属性删除)
Long hdel = jedis.hdel("user","age");//删除名为"user"的哈希表中的特定字段"age"及其中的值

单个删除代码执行效果如下:

2. 删除哈希表(删除所有)
jedis.del("user");//删除名为"user"的键以及与之相关的哈希表

删除所有代码执行效果如下:

user的哈希表已经删除成功了

3.Redis中项目的应用


Redis(Remote Dictionary Server)是一个开源的内存数据库系统,它以键值对的形式存储数据,具有高效的读写速度,特别适合于缓存和实时数据处理等场景。以下是 Redis 在不同项目中的一些常见应用:

缓存系统:

Redis 最常见的用途之一是作为缓存系统。它可以存储热门或频繁访问的数据,从而加快读取速度,减轻后端数据库的负担。这对于网站、应用程序和服务的性能优化非常重要。
会话存储:

Redis 可以用于存储会话信息,特别是在分布式系统中。通过将会话数据存储在 Redis 中,可以实现负载均衡、容错和扩展性,同时保证会话数据的快速访问。
消息队列:

Redis 的列表数据结构非常适合作为消息队列的基础。发布者可以将消息推送到列表中,而订阅者可以从列表中获取消息,从而实现异步通信、任务队列等功能。
实时分析和计数:

Redis 提供了各种数据结构(如 HyperLogLog、Bitmaps 等)和操作,可以用于实时分析和计数,例如统计网站的访问次数、用户在线状态等。
地理信息系统(Geospatial):

Redis 支持地理信息数据结构,可以用于存储位置坐标和距离计算。这使得 Redis 在构建位置服务和地理信息系统方面非常有用。
推荐系统:

Redis 可以用于构建推荐系统,通过存储用户喜好和商品信息,以及实时计算相似度等信息,从而为用户提供个性化的推荐。
实时分布式锁:

Redis 提供了基于 SETNX(set if not exists)命令和 Lua 脚本等方法,可以实现分布式系统中的实时锁定机制,用于协调多个节点的操作。
实时排行榜:

利用 Redis 的有序集合(Sorted Sets)结构,可以实现实时排行榜功能,例如游戏中的积分排名、热门商品排名等。
持久化和数据备份:

Redis 支持数据的持久化,可以将内存中的数据定期保存到磁盘上,以保证数据的安全性。这对于关键业务数据非常重要。
分布式锁与分布式限流:

Redis 提供了基于 Lua 脚本的原子操作,可以实现分布式锁和限流,保证在分布式环境下的数据一致性和流量控制。
请注意,虽然 Redis 提供了强大的功能,但也需要谨慎使用。例如,需要考虑数据的一致性、持久化策略、内存消耗等方面的问题。同时,Redis 是一个基于内存的数据库,因此需要足够的内存资源来支持。

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

开源 Wiki 软件 wiki.js

wiki.js简介 最强大、 可扩展的开源Wiki 软件。使用 Wiki.js 美观直观的界面让编写文档成为一种乐趣&#xff01;根据 AGPL-v3 许可证发布。 官方网站&#xff1a;https://js.wiki/ 项目地址&#xff1a;https://github.com/requarks/wiki 主要特性&#xff1a; 随处安装&a…

CodeWhisperer 的安装及体验

文章作者&#xff1a;Pony CodeWhisperer 是亚马逊出品的一款基于机器学习的通用代码生成器&#xff0c;可实时提供代码建议。类似 Cursor 和 Github Copilot 编码工具。 官网&#xff1a;https://aws.amazon.com/cn/codewhisperer/?trkcndc-detail 在编写代码时&#xff0c…

【NI-DAQmx入门】NI-DAQmx之Python

NI-DAQmx Python GitHub资源&#xff1a; NI-DAQmx Python 文档说明&#xff1a;NI-DAQmx Python Documentation — NI-DAQmx Python API 0.9 documentation nidaqmx支持 CPython 3.7和 PyPy3&#xff0c;需要注意的是多支持USB DAQ和PCI DAQ&#xff0c;cDAQ需要指定…

利用maven的dependency插件分析工程的依赖

dependency:analyze https://maven.apache.org/plugins/maven-dependency-plugin/analyze-mojo.html 分析项目的依赖&#xff0c;确定哪些&#xff1a;用了并且声明了、用了但没有声明、没有使用但声明了。 dependency:analyze可以单独使用&#xff0c;所以它总是会执行test-…

【漏洞复现】weblogic-10.3.6-‘wls-wsat‘-XMLDecoder反序列化(CVE-2017-10271)

感谢互联网提供分享知识与智慧&#xff0c;在法治的社会里&#xff0c;请遵守有关法律法规 文章目录 1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描nacsweblogicScanner3、漏洞验证 说明内容漏洞编号CVE-2017-10271漏洞名称Weblogic < 10.3.…

js获取url截取文件名或后缀名

示例图 var url "http://localhost:5613/static/挽风.jpg"var lastOf url.lastIndexOf(/) // /所在的最后位置var str url.substr(lastOf 1) //截取文件名称和后缀 输出&#xff1a;挽风.jpgvar strUrl url.substr(0, lastOf) //截取路径字符串 输出&…

Redis原理到常用语法基础图文讲解

在初期&#xff0c;已经讲述了Redis安装问题。现在正式进入Redis的入门阶段 系统架构的演进 传统单机架构 一台机器运行应用程序、数据库服务器 现在大部分公司的产品都是这种单机架构。因为现在计算机硬件发展速度很快&#xff0c;哪怕只有一台主机&#xff0c;性能也很高…

11.4-GPT4AllTools版本已开始对小部分GPT3.5用户内测推送

OpenAI已经开始小规模推送GPT4 AllTools功能&#xff0c;部分GPT博主已经第一时间体验了此功能&#xff0c;此功能特色是整合目前的多模态功能以及文件上传和联网模块&#xff0c;无需切换&#xff0c;更要全面综合 可上传包括 PDF、数据文件在内的任意文档&#xff0c;并进行分…

单片机温湿度-光照-DHT11-烟雾气体检测控制系统-proteus仿真-源程序

一、系统方案 本设计采用52单片机作为主控器&#xff0c;液晶1602显示&#xff0c;DHT11温湿度&#xff0c;光照、烟雾气体检测&#xff0c;按键设置报警阀值&#xff0c;蜂鸣器报警。 二、硬件设计 原理图如下&#xff1a; 三、单片机软件设计 1、首先是系统初始化 // // …

【ARMv8 SIMD和浮点指令编程】浮点加减乘除指令——四则运算

浮点指令有专门的加减乘除四则运算指令,比如 FADD、FSUB、FMUL、FDIV 等。 1 FADD (scalar) 浮点加法(标量)。该指令将两个源 SIMD&FP 寄存器的浮点值相加,并将结果写入目标 SIMD&FP 寄存器。 该指令可以产生浮点异常。根据 FPCR 中的设置,异常会导致在 FPSR 中…

计讯物联高精度GNSS接收机:担当小型水库大坝安全监测解决方案的“护航者”

应用背景 水库大坝作为水利工程建筑物&#xff0c;承担着灌溉、发电、供水、生态等重任。一旦水库大坝发生安全事故&#xff0c;后果将不堪设想。因此&#xff0c;水库大坝的安全监测对保障水利工程顺利运行具有重要意义。 计讯物联作为水利行业专家型企业&#xff0c;多年来…

SQL数据库使用方法

首先打开sqlite3.exe所在文件夹&#xff0c;如图1 图1 在文件夹路径中将路径改为cmd&#xff0c;如图2所示 图2 在弹出的cmd窗口中输入如图3所示。 图3 sqlite3 tichiceliang.db 其中tichiceliang是数据库名称。然后按enter&#xff0c;再在cmd中输入.table,可以看到文件夹目…