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

news2024/11/24 1:51:34
  • 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 -a
        jedis.auth("123456");
//        测试连上与否 ping
        System.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 -a
        jedis.auth("123456");
//        测试连上与否 ping
        System.out.println(jedis.ping());

//        String的操作
//        set get del setex ttl
        jedis.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 -a
        jedis.auth("123456");
//        测试连上与否 ping
        System.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 -a
        jedis.auth("123456");
//        测试连上与否 ping
        System.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 对象到 Redis
        jedis.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 做分布式缓存,结合布隆过滤器、热点数据预热和设置适当的过期时间,保护系统免受无效查询和大规模缓存失效的影响。

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

语言的新启程之Solidity

官方网站 WTF-Solidity官网 编译器 区块链的基础 Gas 一经创建&#xff0c;每笔交易都收取一定数量的 gas&#xff0c;目的是限制执行交易所需要的工作量和为交易支付手续费。EVM 执行交易时&#xff0c;gas 将按特定规则逐渐耗尽。 gas price 是交易发送者设置的一个值&…

深入理解计算机系统CS213 - Lecture 02

Bits, Bytes, and Integer 1.位运算与条件运算 &&#xff0c;|&#xff0c;^&#xff0c;~ 是做位运算。诸位01运算。 &&&#xff0c;||&#xff0c;&#xff01;是判断条件真假&#xff0c;而后返回0或1。 2. 位移 x << y&#xff1a;左移y位&#xff…

Excel·VBA工作表导出为图片

《Excel转图片别再截图啦&#xff01;用这4个方法&#xff0c;高清且无损&#xff01;》&#xff0c;excel转为图片一般方法较为简单&#xff0c;那么能否使用vba将excel转为图片 选中区域导出为图片 zoom设置为2&#xff0c;导出图片较为清晰 Sub 选中区域导出为图片()Dim …

【iOS】——知乎日报第三周总结

文章目录 一、获取新闻额外信息二、工具栏按钮的布局三、评论区文字高度四、评论区长评论和短评论的数目显示五、评论区的cell布局问题和评论消息的判断 一、获取新闻额外信息 新闻额外信息的URL需要通过当前新闻的id来获取&#xff0c;所以我将所有的新闻放到一个数组中&…

MySQL基础『数据库基础』

✨个人主页&#xff1a; 北 海 &#x1f389;所属专栏&#xff1a; MySQL 学习 &#x1f383;操作环境&#xff1a; CentOS 7.6 阿里云远程服务器 &#x1f381;软件版本&#xff1a; MySQL 5.7.44 文章目录 1.数据库概念1.1.什么是数据库1.2.数据库存储介质1.3.常见数据库 2.数…

【带头学C++】----- 三、指针章 ---- 3.5 字符串与指针

在 C 中&#xff0c;字符串可以通过指针来表示和操作。C 的字符串是由字符组成的字符数组&#xff0c;而指针则用于引用和操作内存中的数据。 1. 字符数组 1. 字符数组: 字符数组是最基本的字符串表示方式。可以使用字符数组来存储字符串&#xff0c;并使用指针来引用它。字符…

嵌入式中利用VS Code 远程开发原理

VS Code几乎是所有的程序员必备的工具之一&#xff0c;据说全球一般的开发者都使用过VS Code这款工具。 今天分享一篇 VS Code 实现远程办公相关的文章。 1、概 述 通常&#xff0c;我们都是每天到工作的办公室进行办公&#xff0c;但是&#xff0c;如果下班回家&#x…

Linux学习第32天:Linux INPUT 子系统实验(一):接纳

Linux版本号4.1.15 芯片I.MX6ULL 大叔学Linux 品人间百味 思文短情长 题目中用了“接纳”俩字。其实学习就是一个接纳的过程。接纳新的知识&#xff0c;从而转化为自己知识宝库的一部分。那今天学习的input子系统和今天的主题接纳有…

0基础2小时搭建自己的网站

​作者主页 &#x1f4da;lovewold少个r博客主页 ⚠️本文重点&#xff1a;0基础2小时搭建个人网站 &#x1f449;【C-C入门系列专栏】&#xff1a;博客文章专栏传送门 &#x1f604;每日一言&#xff1a;宁静是一片强大而治愈的神奇海洋&#xff01; 目录 前言 第一步 环境…

DETR 论文精读【论文精读】End-to-End Object Detection with Transformers

DETR 这篇论文&#xff0c;大家为什么喜欢它&#xff1f;为什么大家说它是一个目标检测里的里程碑式的工作&#xff1f;而且为什么说它是一个全新的架构&#xff1f; 大家好&#xff0c;今天我们来讲一篇 ECC V20 的关于目标检测的论文。它的名字想必大家都不陌生&#xff0c;也…

系列十二、过滤器 vs 拦截器

一、过滤器 vs 拦截器 1.1、区别 &#xff08;1&#xff09;触发时机不一样&#xff0c;过滤器是在请求进入容器后Servlet之前进行预处理的&#xff0c;请求结束返回也是&#xff0c;是在Servlet处理完后&#xff0c;返回给前端之前&#xff1b; &#xff08;2&#xff09;过滤…

5.3有效的括号(LC20-E)

算法&#xff1a; 题目中&#xff1a;左括号必须以正确的顺序闭合。意思是&#xff0c;最后出现的左括号&#xff08;对应着栈中的最后一个元素&#xff09;&#xff0c;应该先找到对应的闭合符号&#xff08;右括号&#xff09; 比如:s"( [ ) ]"就是False&#xf…

个人服务器到期,项目下线,新的开始

告别旧服务器 2023.11.06服务器到期&#xff0c;所有项目正式下线 时间真的过的很快&#xff0c;从开始踏入编程的大门&#xff0c;到现在不知不觉已经陆续经手了两台服务器了&#xff0c;目前这台服务器是一年前的阿里云活动白嫖的嘿嘿嘿&#xff0c;该服务器上目前运行的项…

Docker与微服务实战——基础篇

Docker与微服务实战——基础篇 第一章 Docker 简介1.1 docker 理念1.2 容器与虚拟机比较 第二章 Docker 安装2.1 前提说明2.2 Docker的基本组成2.2.1 镜像&#xff08;image&#xff09;2.2.2 容器&#xff08;container&#xff09;2.2.3 仓库&#xff08;repository&#xff…

[MICROSAR Adaptive] --- Hello Adaptive World

Automotive E/E Architecture and AUTOSAR Adaptive Platform Vector Solution: MICROSAR Adaptive First project: Hello Adaptive World Summary 1 引言 1.1 AP诞生的历史背景 新一代电子电器架构通常将车内的节点分为三类。计算平台,预控制器和传感器执行器相关的节点,…

深度学习框架TensorFlow.NET之数据类型及张量2(C#)

环境搭建参考&#xff1a; 深度学习框架TensorFlow.NET环境搭建1&#xff08;C#&#xff09;-CSDN博客 由于本文作者水平有限&#xff0c;如有写得不对的地方&#xff0c;往指出 声明变量&#xff1a;tf.Variable 声明常量&#xff1a;tf.constant 下面通过代码的方式进行学…

用python写一个爆破网站管理员密码脚本

文章目录 拉取环境寻找登录界面寻找参数编写脚本试验效果 拉取环境 靶场环境是docker环境&#xff0c;把docker靶场映射到本机的7777端口&#xff0c;以便访问 docker pull docker.io/zksmile/vul docker run -d -p 7777:80 --name shop zksmile/vul:secshop_v2首页&#xff…

【嵌入式开发工具】TI+IAR建立工程与在线调试

IAR于1983 年在瑞典乌普萨拉由工程师Anders Rundgren创立&#xff0c;“IAR”是 Ingenjrsfirman Anders Rundgren 的缩写&#xff0c;意思是Anders Rundgren工程公司。笔者接触到这个开发工具主要是因为其对早期Ti的芯片支持很好&#xff0c;开发起来比较方便。不过现在TI公司官…

嵌入式中如何将BootLoader与APP合并成一个固件

1、前言 嵌入式固件一般分为BootLoader和App&#xff0c;BootLoader用于启动校验、App升级、App版本回滚等功能&#xff0c;BootLoader在cpu上电第一阶段中运行&#xff0c;之后跳转至App地址执行应用程序。 因此&#xff0c;在发布固件的时候&#xff0c;会存在BootLoader固件…

Redis02-持久化策略

目录 RDB&#xff08;Redis DataBase Backup file&#xff09; RDB执行原理 AOF&#xff08;Append-Only File&#xff09; RDB和AOF对比 Redis支持多种持久化方式&#xff0c;以确保数据在内存中持久存储&#xff0c;以便在Redis服务器重启时数据不会丢失。Redis中持久化的…