Redis之Java操作连接操作Redis

news/2025/3/14 23:37:31/

前言

Java是一种强大的编程语言,而Redis是一个快速且具有高可扩展性的开源键值数据存储系统。使用Java操作Redis可以提高效率和性能,并且能够满足大规模数据存储和处理的需求。在本篇文章中,我们将介绍如何使用Java连接Redis,以及如何在Java中使用Redis的API来进行数据操作。 

一.Java连接Redis

1.导入依赖

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

2.启动Redis服务

win+r打开命令行窗口,输入以下代码

cd redis安装的路径
redis-server.exe redis.windows.conf

3.Java创建连接 

public static void main(String[] args) {//建立连接Jedis jedis = new Jedis("localhost", 6379);//设置密码jedis.auth("123456");//测试连接(ping)System.out.println(jedis.ping());}

4.运行测试结果

 

二.Java代码操作Redis常见数据类型

1.String类型

1.1 存储数据

//存储数据
jedis.set("test","YU");

1.2 切换数据库

jedis.select(2);

1.3 存储数据时同时设置过期时间

//设置key过期时间
jedis.setex("time",15,"过期时间");

2.Hash类型

2.1 存储数据

jedis.hset("user","name","YU");
jedis.hset("user","hobby","Java");
jedis.hset("user","age","18");

2.2 利用工具类以map的形式存储数据

(1)RedisUtils工具类

package com.zking.ssm.util;import redis.clients.jedis.Jedis;import java.util.Map;
import java.util.Set;/*** @author YU* @create 2023-11-06 10:35*/
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){jedis.hset(key,k,map.get(k));}}}
}

(2)应用

Map map = new HashMap();map.put("name","YU");map.put("hobby","Java");map.put("age","18");RedisUtils.setHashMap(jedis,"user",map);

我们通过将map集合及键以参数的形式传递到工具类方法中,并遍历依次进行存储

 2.3 查询数据

(1)查询单个

System.out.println(jedis.hget("user","hobby"));

(2)查询所有

System.out.println(jedis.hgetAll("user"));

2.4 删除数据

(1)删除单个

Long hdel = jedis.hdel("user", "sex");

(2)删除所有

jedis.del("user");

3.列表

3.1 存储

//指定数据库        
jedis.select(2);
//插入多项值
jedis.lpush("List_hobby", "KK", "run", "cash", "LL");

3.2 获取长度

// 获取列表的长度   
System.out.println(jedis.llen("List_hobby"));

3.3 查找元素

 //根据索引获取列表中的元素  
System.out.println(jedis.lindex("List_hobby", 2));
//查看指定范围内的元素   
System.out.println(jedis.lrange("List_hobby", 0, 3));

三.应用场景

  1. 缓存:Redis常用作缓存存储,可以帮助加速应用程序的响应时间。Java应用程序可以使用Redis来缓存经常访问的数据,如数据库查询结果、计算结果或其他资源,从而减轻数据库服务器的负载并提高性能。

  2. 会话管理:Java Web应用程序可以使用Redis来存储会话数据。这可以提供分布式会话支持,允许多个应用服务器之间共享会话信息,从而增加应用程序的可伸缩性和可用性。

  3. 消息队列:Redis的发布/订阅机制和列表数据结构可用于实现消息队列。Java应用程序可以使用Redis来进行异步通信,处理任务队列、事件通知等。

  4. 计数器和排行榜:Redis提供了原子操作,可以用于实现计数器和排行榜功能。Java应用程序可以使用Redis来跟踪用户行为、计算分数和排名,如社交媒体的点赞、转发、评论等。

  5. 数据缓存:Java应用程序可以使用Redis作为数据缓存层,存储热门数据,以减少对数据库的频繁访问,提高性能。

  6. 分布式锁:Redis可以用于实现分布式锁,Java应用程序可以使用这些锁来协调多个实例的并发操作,确保数据的一致性和可靠性。

  7. 实时分析和监控:Redis的数据结构和快速读写能力使其成为实时分析和监控数据的理想存储引擎。Java应用程序可以将关键指标和日志数据存储在Redis中,以进行实时分析和监控。

  8. 地理位置服务:Redis的地理位置数据类型(Geospatial)可用于构建地理位置服务,如查找附近的商店、用户位置跟踪等。

  9. 缓存清理和过期策略:Redis支持设置数据的过期时间,Java应用程序可以使用这一特性来管理缓存数据的自动清理。

  10. 队列管理:Java应用程序可以使用Redis来管理任务队列,处理后台任务,如图像处理、数据导入、邮件发送等


http://www.ppmy.cn/news/1199903.html

相关文章

每日一题 318. 最大单词长度乘积(中等)

暴力求解没超时&#xff0c;那就这样吧 class Solution:def maxProduct(self, words: List[str]) -> int:ans 0for i in range(len(words)):for j in range(i 1, len(words)):if len(words[i]) * len(words[j]) < ans:continuet 0for k in range(26):ch chr(k ord(…

css-inpu边框

效果图&#xff1a; input {width: 225px;height: 25px;background-color: #1469bd00;border: #aca9a97d solid 1px;color: white;font-size: 15pt;box-sizing: conte-box; }input:focus {border-style: solid;border-color: #03a9f4;box-shadow: 0 0 15px #03a9f4;outline: …

微服务注册中心之安装+实例搭建zookeeper

1.下载安装包并上传到Linux服务器 Apache ZooKeeper 可以使用wget或者curl命令 wget http://mirror.bit.edu.cn/apache/zookeeper/zookeeper-3.7.1/apache-zookeeper-3.7.1-bin.tar.gz连接失败也可以本地下载之后上传到服务器 scp /本地/文件的/路径 用户名远程服务器IP或主…

2023年11月5日网规考试备忘

早上题目回忆&#xff1a; pki体系 ipsec&#xff0c;交换安全&#xff08;流量抑制&#xff09; aohdlc bob metclaf —ethernet pon tcp三次握手 OSPF lsa&#xff1f;交换机组ospf配置问题&#xff0c;ping网关可通&#xff0c;AB不通 raid6 300G*8 网络利用率 停等协议10…

asp.net docker-compose添加kafka和redis和zookeeper

docker-compose.yml添加 redis:image: redis:alpinekafka:image: "bitnami/kafka:3.1.1"depends_on:- zookeeperzookeeper:image: "bitnami/zookeeper:3.5.10" docker-compose.override.yml添加 redis:ports:- "6379"kafka:links: - zookeepere…

什么是进程?什么的线程?

进程 操作系统中最核心的概念就是进程&#xff0c;进程是对正在运行中的程序的一个抽象&#xff0c;是系统进行资源分配和调度的基本单位 操作系统的其他所有内容都是围绕着进程展开的&#xff0c;负责执行这些任务的是 CPU 进程是一种抽象的概念&#xff0c;从来没有统一的…

ClickHouse开发系列

一、 ClickHouse详解、安装教程_clickhouse源码安装 二、ClickHouse 语法详解_clickhouse讲解 三、ClickHouse SQL 操作语句详解 四、ClickHouse 高级教程—官方原版 五、ClickHouse主键索引最佳实践 六、MySQL与ClickHouse集成 七、ClickHouse 集成MongoDB、Re…

C#学习 - 委托

委托 委托&#xff08;delegate&#xff09;是函数指针的升级版 委托是一种类&#xff08;Class&#xff09;&#xff0c;类是数据类型&#xff0c;所以委托也是一种数据类型 static void Main(string[] args) {Type t typeof(Action);Console.WriteLine(t.IsClass);//输出T…