当前位置: 首页 > 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.采集卡说明...

GraceTheme定义“优雅大气”的WordPress主题新标准

网站不仅是信息的载体&#xff0c;更是品牌气质的延伸。无论是企业官网、个人博客还是作品集展示&#xff0c;如何在茫茫网海中脱颖而出&#xff0c;给用户留下深刻的第一印象?答案往往就藏在网站的“气质”之中。如果你正在寻找一款能够完美平衡美学设计与功能实用性的WordPr…...

5分钟快速了解回归测试

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 1、什么是回归测试 &#xff08;Regression Testing&#xff09; 回归测试是一个系统的质量控制过程&#xff0c;用于验证最近对软件的更改或更新是否无意中引入…...

实战指南:基于快马AI构建可部署的z-library全栈应用

实战指南&#xff1a;基于快马AI构建可部署的z-library全栈应用 最近在尝试搭建一个电子图书馆应用&#xff0c;类似z-library的功能。这个项目涉及用户系统、支付、推荐等多个模块&#xff0c;对于个人开发者来说确实有点复杂。不过我发现使用InsCode(快马)平台可以大大简化开…...

BiliTools AI视频总结功能:革新B站内容消费体验的智能解决方案

BiliTools AI视频总结功能&#xff1a;革新B站内容消费体验的智能解决方案 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱&#xff0c;支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTool…...

Unity网格变形系统深度解析:从基础架构到高级应用实践

Unity网格变形系统深度解析&#xff1a;从基础架构到高级应用实践 【免费下载链接】Deform A fully-featured deformer system for Unity that lets you stack effects to animate models in real-time 项目地址: https://gitcode.com/gh_mirrors/de/Deform Deform是一个…...

避开这3个坑!用Llama-7B低成本部署InteRecAgent的完整指南

低成本部署InteRecAgent的三大误区与实战解决方案 1. 从开源小模型到商业级应用的鸿沟 许多技术团队在尝试构建交互式推荐系统时&#xff0c;往往陷入"拿来即用"的思维陷阱。面对Llama-7B这类开源小模型&#xff0c;最常见的三个认知误区包括&#xff1a;认为预训练模…...

深入浅出理解注意力机制:原理、实战、应用及训练与推理阶段差异

深入浅出理解注意力机制&#xff1a;原理、实战、应用及训练与推理阶段差异 摘要&#xff1a;注意力机制是深度学习领域的核心创新&#xff0c;更是Transformer架构的灵魂&#xff0c;其灵感源自人类的“选择性关注”能力&#xff0c;解决了传统模型长距离依赖捕捉不足、并行计…...

通义千问模型效果实测:辅助计算机组成原理课程教学与习题解答

通义千问模型效果实测&#xff1a;辅助计算机组成原理课程教学与习题解答 最近在准备《计算机组成原理》这门硬核课程的教案和习题讲解&#xff0c;说实话&#xff0c;每次讲到CPU流水线冲突、Cache映射这些抽象概念&#xff0c;看着台下学生似懂非懂的眼神&#xff0c;我就琢…...

如何快速使用网络性能测试工具:面向初学者的完整指南

如何快速使用网络性能测试工具&#xff1a;面向初学者的完整指南 【免费下载链接】iperf3-win-builds iperf3 binaries for Windows. Benchmark your network limits. 项目地址: https://gitcode.com/gh_mirrors/ip/iperf3-win-builds 想要准确测量网络带宽、排查网速问…...

Z-Image Turbo本地化部署:数据安全与隐私保护方案

Z-Image Turbo本地化部署&#xff1a;数据安全与隐私保护方案 1. 项目概述与核心价值 Z-Image Turbo是一个基于Gradio和Diffusers构建的高性能AI绘图Web界面&#xff0c;专门为Z-Image-Turbo模型优化设计。在当今数据安全意识日益增强的环境下&#xff0c;本地化部署成为保护…...