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

Redis-使用java代码操作Redis->java连接上redis,java操作redis的常见类型数据存储,redis中的项目应用

  • java连接上redis
  • java操作redis的常见类型数据存储
  • redis中的项目应用

1.java连接上redis

package com.zlj.ssm.redis;import redis.clients.jedis.Jedis;/*** @author zlj* @create 2023-11-03 19:27*/
public class Demo1 {public static void main(String[] args) {
//        建立连接Jedis jedis=new Jedis("localhost",6379);
//        设置密码 ./src/redis-cli -h -p -ajedis.auth("123456");
//        测试连上与否 pingSystem.out.println(jedis.ping());}
}

2.java操作redis的常见类型数据存储

package com.zlj.ssm.redis;import redis.clients.jedis.Jedis;/*** @author zlj* @create 2023-11-03 19:27*/
public class Demo2 {public static void main(String[] args) {
//        建立连接Jedis jedis=new Jedis("localhost",6379);
//        设置密码 ./src/redis-cli -h -p -ajedis.auth("123456");
//        测试连上与否 pingSystem.out.println(jedis.ping());//        String的操作
//        set get del setex ttljedis.select(3);jedis.set("test","牛逼");System.out.println(jedis.get("test"));jedis.setex("time",15,"运行需要花多少时间");System.out.println(jedis.ttl("time"));}
}
package com.zlj.ssm.redis;import redis.clients.jedis.Jedis;import java.util.HashMap;
import java.util.Map;/*** @author zlj* @create 2023-11-03 19:27*/
public class Demo3 {public static void main(String[] args) {
//        建立连接Jedis jedis=new Jedis("localhost",6379);
//        设置密码 ./src/redis-cli -h -p -ajedis.auth("123456");
//        测试连上与否 pingSystem.out.println(jedis.ping());//        hset key attr1 val1 attr2 val2
//jedis.hset("user","name","liubing");
//jedis.hset("user","hobby","spa");
//jedis.hset("user","age","20");Map map=new HashMap();
map.put("name","liuwen");
map.put("hobby","liuzhi");
map.put("age","28");
redisUtils.setHashMap(jedis,"user",map);System.out.println(jedis.hget("user", "hobby"));
System.out.println(jedis.hgetAll("user"));
//删除
//long hdel=jedis.hdel("user","sex");
//jedis.del("user");}
}

package com.zlj.ssm.redis;import redis.clients.jedis.Jedis;/*** @author zlj* @create 2023-11-04 17:54*/
public class Demo4 {public static void main(String[] args) {
//        建立连接Jedis jedis=new Jedis("localhost",6379);
//        设置密码 ./src/redis-cli -h -p -ajedis.auth("123456");
//        测试连上与否 pingSystem.out.println(jedis.ping());jedis.lpush("hobby","篮球","羽毛球","乒乓球","依优库","唱歌");System.out.println(jedis.lindex("hobby", 1));System.out.println(jedis.lrange("hobby", 0, 3));}
}
package com.zlj.ssm.redis;import redis.clients.jedis.Jedis;import java.util.Map;
import java.util.Set;/*** @author zlj* @create 2023-11-04 17:09*/
public class redisUtils {public static 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){
//                 key =name,hobby,age
//                 value map.get(name);jedis.hset(key,k,map.get(k));}}}
}

3.redis中的项目应用

redis一般用在哪?

存储基本不会变化的数据,然后这些数据又被多个地方使用

redix怎么用 用String

将存储的数据转换成json串,进行存储

在 Java 中使用 Redis 存储 JSON 对象,可以使用 Redis 的 String 类型来保存 JSON 字符串。以下是一个示例代码,演示了如何使用 Jedis 客户端在 Redis 中存储和获取 JSON 对象:

import redis.clients.jedis.Jedis;public class RedisExample {public static void main(String[] args) {// 连接 Redis 服务器Jedis jedis = new Jedis("localhost");// 创建一个 JSON 对象String jsonString = "{\"name\":\"John\", \"age\":30, \"city\":\"New York\"}";// 存储 JSON 对象到 Redisjedis.set("person", jsonString);// 从 Redis 获取 JSON 对象String storedJsonString = jedis.get("person");System.out.println("Stored JSON: " + storedJsonString);// 关闭 Redis 连接jedis.close();}
}

 在上述示例中,我们首先使用 Jedis 的构造函数连接到 Redis 服务器。然后,我们创建一个 JSON 字符串并将其存储在 Redis 中,使用 set 方法将 JSON 字符串作为值存储在名为 "person" 的键中。接下来,我们使用 get 方法从 Redis 中获取存储的 JSON 字符串,并打印出获取到的值。
请注意,Redis 存储的是 JSON 字符串,而不是 JSON 对象。如果你需要在 Java 中处理 JSON 对象,你可以使用 JSON 解析库,如 Jackson、Gson 等,将 JSON 字符串转换为 Java 对象进行操作。
确保你已经将 Jedis 客户端库添加到你的 Java 项目中。你可以通过 Maven 或 Gradle 等构建工具来添加依赖,并在代码中导入 redis.clients.jedis.Jedis 类。

使用 Jackson 库将 JSON 字符串转换为 Java 对象:

import com.fasterxml.jackson.databind.ObjectMapper; // import jackson package  String jsonString = "{\"name\":\"John\", \"age\":30}"; // JSON string  
ObjectMapper mapper = new ObjectMapper(); // create an instance of ObjectMapper  
Person person = mapper.readValue(jsonString, Person.class); // convert json string to java object

在实际应用中广泛使用 Redis 作为数据缓存、分布式锁、消息队列等的解决方案。下面是一些常见的 Java Redis 项目应用示例:
数据缓存:使用 Redis 作为缓存,将热门或频繁访问的数据存储在 Redis 中,减少对底层数据存储系统(如数据库)的访问压力,提高系统的读取性能。
分布式锁:使用 Redis 的原子操作和过期时间特性,实现分布式锁功能,保证在分布式系统中的临界资源互斥访问,避免并发问题。
会话管理:使用 Redis 存储用户登录信息、会话数据等,实现分布式用户会话管理,便于多个应用服务间共享用户状态。
计数器和限流:使用 Redis 的计数器功能统计页面访问次数、API 调用次数等,还可以结合 Redis 的过期时间和持久化特性实现限流功能,控制请求的频率和并发量。
消息队列:使用 Redis 的发布订阅功能和列表数据结构,实现简单的消息队列,支持异步消息传递,解耦系统各个组件。
地理位置服务:使用 Redis 的地理位置(Geo)功能,记录位置信息,实现地理位置的查询和附近信息的搜索。
分布式缓存穿透和雪崩保护:使用 Redis 做分布式缓存,结合布隆过滤器、热点数据预热和设置适当的过期时间,保护系统免受无效查询和大规模缓存失效的影响。

相关文章:

Redis-使用java代码操作Redis->java连接上redis,java操作redis的常见类型数据存储,redis中的项目应用

java连接上redisjava操作redis的常见类型数据存储redis中的项目应用 1.java连接上redis package com.zlj.ssm.redis;import redis.clients.jedis.Jedis;/*** author zlj* create 2023-11-03 19:27*/ public class Demo1 {public static void main(String[] args) { // …...

react 使用笔记

1.学习&#xff1a;https://reactjs.bootcss.com/learn 2.项目启动报错&#xff1a;Delete ␍ prettier/prettier 解决&#xff1a;https://blog.csdn.net/qq_30272167/article/details/133280165 3.访问地址配置 文件&#xff1a;config-overrides.js devServer: functio…...

Ubuntu下启动Apache对.htaccess 的支持步骤, 利用.htaccess绑定域名到子目录

Ubuntu下启动Apache对.htaccess 的支持步骤 1. 终端运行 sudo a2enmod 程序提示可供激活的模块名称&#xff0c;输入&#xff1a; rewrite 2. 修改/etc/apache2/sites-enabled/000-default (该链接指向的是站点配置文件) 把&#xff08;默认的www目录、或者需要应用.htacc…...

C++常用格式化输出

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

QCC TX 音频输入切换+提示声音

QCC TX 音频输入切换提示声音 QCC蓝牙芯片&#xff08;QCC3040 QCC3056 等等&#xff09;&#xff0c;AUX、I2S、USB输入 蓝牙音频输入&#xff0c;模拟输出是最常见的方式。 也可以再此基础上动态切换输入方式。 针对TX切换EQ,调节音量不能出提示声音问题&#xff0c;可以增…...

【Java】封装、继承、多态

面向对象的重要特征&#xff1a;封装、继承、多态&#xff1b; 面向对象的语言的语言并不止Java&#xff0c;C也是面向对象的语言&#xff1b; 访问限定符 public&#xff1a;在哪里都可以使用&#xff08;公开的&#xff09;&#xff1b;private&#xff1a;仅在当前类可以使用…...

第九章 异常处理

系列文章目录 第一章 Python 基础知识 第二章 python 字符串处理 第三章 python 数据类型 第四章 python 运算符与流程控制 第五章 python 文件操作 第六章 python 函数 第七章 python 常用内建函数 第八章 python 类(面向对象编程) 第九章 python 异常处理 第十章 python 自定…...

(四) Python Pandas入门

一、介绍 Pandas是Python中一个强大的数据处理库&#xff0c;它提供了许多功能强大的数据结构和数据分析工具。在本文中&#xff0c;我们将介绍Pandas的基本概念和如何使用它生成一个包含今天到未来20个工作日的日期列表的Excel文件。 Pandas提供了大量的数据结构和数据分析工…...

软件测试面试最经典的5个问题

软件测试面试灵魂五问&#xff01; 请做一下自我介绍&#xff1f;你为什么从上家公司离职&#xff1f;为什么转行做测试? 你对测试行业的认识&#xff1f;你的期望薪资是多少&#xff1f;最后&#xff0c;你要问我什么&#xff1f; 一、请做一下自我介绍 简历上有的可以一两…...

从公共业务提取来看架构演进——功能设置篇

1.引言 上一篇文章我们以帐号权限的提取为例&#xff0c;介绍了当架构跟不上业务发展时及时调整架构的一种思路。这篇文章我们以功能设置为例&#xff0c;进一步讨论公共业务提取这个话题。 功能设置在本文中是指产品开放给企业和用户的一些功能设置项&#xff0c;以视频会议…...

Java基础-015-System.java常用类

Java基础-015-System.java常用类 1、标准输入输出2、获取属性3、System.java初始化4、设置标准输出System.out java/lang/System.java 1、标准输入输出 System.in、System.out public class Test {public static void main(String[] args) {String charsetName String.valueOf…...

Flutter笔记:发布一个模块 scale_design - (移动端)设计师尺寸适配工具

Flutter笔记 发布一个模块scale_design设计师尺寸适配工具与常用组件库 作者&#xff1a;李俊才 &#xff08;jcLee95&#xff09;&#xff1a;https://blog.csdn.net/qq_28550263 邮箱 &#xff1a;291148484163.com 本文地址&#xff1a;https://blog.csdn.net/qq_28550263/a…...

torch增加维度操作

使用none作为占位符 在Python中&#xff0c;None 表示空值或占位符。 在masked_pos[:, :, None]这个切片操作中&#xff0c;None 被用作一个占位符&#xff0c;以改变张量的维度。这通常用于将一维张量变为二维张量&#xff0c;或者改变张量的形状。 具体来说&#xff0c;ma…...

软件测试面试题及答案2024

1、你们的缺陷等级如何划分的&#xff1f;☆☆☆☆☆ 我们的缺陷一般分为四个等级&#xff0c;致命级&#xff0c;严重级&#xff0c;一般级和轻微级。致命级指能够导致软件程序无法使用的缺陷&#xff0c;比如宕机&#xff0c;崩溃&#xff0c;手机APP的闪退&#xff0c;数据…...

C现代方法(第18章)笔记——声明

文章目录 第18章 声明18.1 声明的语法18.2 存储类型18.2.1 变量的性质18.2.2 auto存储类型18.2.3 static存储类型18.2.4 extern存储类型18.2.5 register存储类型18.2.6 函数的存储类型18.2.7 小结 18.3 类型限定符18.4 声明符18.4.1 解释复杂声明18.4.2 使用类型定义来简化声明…...

Spring Data Redis + RabbitMQ - 基于 string + hash 实现缓存,计数(高内聚)

目录 一、Spring Data Redis 1.1、缓存功能(分析) 1.2、案例实现 一、Spring Data Redis 1.1、缓存功能(分析) hash 类型存储缓存相比于 string 类型就有更多的更合适的使用场景. 例如,我有以下这样一个 UserInfo 信息 假设这样一个场景就是:万一只想获取其中某一个…...

【四、http】go的http的文件下载

一、日常下载图片到本地 //下载文件func downloadfile(url, filename string) {r, err : http.Get(url)if err ! nil {fmt.Println("err", err.Error())}defer r.Body.Close()f, err : os.Create(filename)if err ! nil {fmt.Println("err", err.Error())…...

Java web(六):FilterListenerAJAX

文章目录 一、Filter1.1 基本介绍1.2 过滤器的执行流程1.3 拦截路径配置1.4 过滤器链1.5 案例 二、Listener三、AJAX3.1 快速入门3.2 Axios异步框架 四、 JSON4.1 JSON基础语法4.2 Fastjson 五、 案例JSONAxiosServlet Java web的三大组件&#xff1a;Servlet、Filter、Listene…...

初识jQuery

文章目录 一、jQuery介绍二、Jquery优势三、jQuery版本四、jQuery对象jQuery的引用js代码与jQuery代码对比标签对象与jQuery对象 五、jQuery查找标签1.基本选择器2.组合选择器3.层次选择器4.属性选择器5.基本筛选器6.表单筛选器 六、筛选器方法七、操作标签1.class操作2.文本操…...

MATLAB算法实战应用案例精讲-【图像处理】计算机视觉(最终篇)

目录 知识储备 线阵相机调试 1.相机型号参数 2.相机软件安装 3.编码器连接方式 4.采集卡说明...

浏览器访问 AWS ECS 上部署的 Docker 容器(监听 80 端口)

✅ 一、ECS 服务配置 Dockerfile 确保监听 80 端口 EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]或 EXPOSE 80 CMD ["python3", "-m", "http.server", "80"]任务定义&#xff08;Task Definition&…...

关于nvm与node.js

1 安装nvm 安装过程中手动修改 nvm的安装路径&#xff0c; 以及修改 通过nvm安装node后正在使用的node的存放目录【这句话可能难以理解&#xff0c;但接着往下看你就了然了】 2 修改nvm中settings.txt文件配置 nvm安装成功后&#xff0c;通常在该文件中会出现以下配置&…...

什么是库存周转?如何用进销存系统提高库存周转率?

你可能听说过这样一句话&#xff1a; “利润不是赚出来的&#xff0c;是管出来的。” 尤其是在制造业、批发零售、电商这类“货堆成山”的行业&#xff0c;很多企业看着销售不错&#xff0c;账上却没钱、利润也不见了&#xff0c;一翻库存才发现&#xff1a; 一堆卖不动的旧货…...

【SQL学习笔记1】增删改查+多表连接全解析(内附SQL免费在线练习工具)

可以使用Sqliteviz这个网站免费编写sql语句&#xff0c;它能够让用户直接在浏览器内练习SQL的语法&#xff0c;不需要安装任何软件。 链接如下&#xff1a; sqliteviz 注意&#xff1a; 在转写SQL语法时&#xff0c;关键字之间有一个特定的顺序&#xff0c;这个顺序会影响到…...

华为OD机试-食堂供餐-二分法

import java.util.Arrays; import java.util.Scanner;public class DemoTest3 {public static void main(String[] args) {Scanner in new Scanner(System.in);// 注意 hasNext 和 hasNextLine 的区别while (in.hasNextLine()) { // 注意 while 处理多个 caseint a in.nextIn…...

MODBUS TCP转CANopen 技术赋能高效协同作业

在现代工业自动化领域&#xff0c;MODBUS TCP和CANopen两种通讯协议因其稳定性和高效性被广泛应用于各种设备和系统中。而随着科技的不断进步&#xff0c;这两种通讯协议也正在被逐步融合&#xff0c;形成了一种新型的通讯方式——开疆智能MODBUS TCP转CANopen网关KJ-TCPC-CANP…...

CMake 从 GitHub 下载第三方库并使用

有时我们希望直接使用 GitHub 上的开源库,而不想手动下载、编译和安装。 可以利用 CMake 提供的 FetchContent 模块来实现自动下载、构建和链接第三方库。 FetchContent 命令官方文档✅ 示例代码 我们将以 fmt 这个流行的格式化库为例,演示如何: 使用 FetchContent 从 GitH…...

Map相关知识

数据结构 二叉树 二叉树&#xff0c;顾名思义&#xff0c;每个节点最多有两个“叉”&#xff0c;也就是两个子节点&#xff0c;分别是左子 节点和右子节点。不过&#xff0c;二叉树并不要求每个节点都有两个子节点&#xff0c;有的节点只 有左子节点&#xff0c;有的节点只有…...

Web 架构之 CDN 加速原理与落地实践

文章目录 一、思维导图二、正文内容&#xff08;一&#xff09;CDN 基础概念1. 定义2. 组成部分 &#xff08;二&#xff09;CDN 加速原理1. 请求路由2. 内容缓存3. 内容更新 &#xff08;三&#xff09;CDN 落地实践1. 选择 CDN 服务商2. 配置 CDN3. 集成到 Web 架构 &#xf…...

处理vxe-table 表尾数据是单独一个接口,表格tableData数据更新后,需要点击两下,表尾才是正确的

修改bug思路&#xff1a; 分别把 tabledata 和 表尾相关数据 console.log() 发现 更新数据先后顺序不对 settimeout延迟查询表格接口 ——测试可行 升级↑&#xff1a;async await 等接口返回后再开始下一个接口查询 ________________________________________________________…...