【Redis】Java连接Redis及Java操作Redis常用数据类型

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
云数据库 Tair(兼容Redis),内存型 2GB
简介: 【Redis】Java连接Redis及Java操作Redis常用数据类型

一,Java连接Redis

1.1 连接前端服务器

打开RedisDesktopManager并连接Redis

不知道可看我上一篇文章:

【Redis】安装(Linux&window)及Redis的常用命令-CSDN博客

1.2 后端依赖

导入相关的jedis依赖

注意:要在dependencies标签中导入

pom.xml:

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

1.3 Java连接

创建一个类,里面写连接Redis的相关代码

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

如果运行显示PONG即可表明连接成功

二,Java操作Redis常用类型数据

2.1 Redis字符串(String)

package com.zking.ssm.common;
import redis.clients.jedis.Jedis;
/**
 * @Name BingBing
 * @company zking cy
 * @create 2023-11-03-18:04
 */
public class Redis_ml {
    public static void main(String[] args) {
        //建立与数据库连接
        Jedis jedis = new Jedis("localhost", 6379);
        //设置密码
        jedis.auth("123456");
        //测试是否连接上
        System.out.println(jedis.ping());
        //String的相关操作
        //连接第七个数据库
        jedis.select(3);
         //        存值
        jedis.set("uname","帅哥");
         //        取值
        System.out.println(jedis.get("uname"));
         //        设置该hobby多久后自动删除
        jedis.setex("hobby",25,"game");
        //        查看剩余时间
        System.out.println(jedis.ttl("hobby"));
        //        修改值
        jedis.set("uname","美男子");
        System.out.println(jedis.get("uname"));
        //        删除值
       //  System.out.println(jedis.del("uname"));
    }
}

2.2 Redis哈希(Hash)

package com.zking.ssm.common;
import redis.clients.jedis.Jedis;
/**
 * @Name BingBing
 * @company zking cy
 * @create 2023-11-03-18:04
 */
public class Redis_ml {
    public static void main(String[] args) {
        //建立与数据库连接
        Jedis jedis = new Jedis("localhost", 6379);
        //设置密码
        jedis.auth("123456");
        //测试是否连接上
        System.out.println(jedis.ping());
        //String的相关操作
        //连接第七个数据库
        jedis.select(3);
//      存值
//      jedis.hset("man","sname","帅哥");
//      jedis.hset("man","sage","18");
//      jedis.hset("man","sex","男");
//      取指定的字段值
//      System.out.println(jedis.hget("man", "sname"));
//      删除值
//      System.out.println(jedis.hdel("man","sage"));
//      查询指定的key的所有字段
//      System.out.println(jedis.hgetAll("man"));
//      查询指定的key是否存在
//      System.out.println(jedis.hexists("man", "sname"));
//      System.out.println(jedis.hexists("man", "sage"));
//      获取指定key的长度
//        System.out.println(jedis.hlen("man"));
    }
}

2.3 Redis列表(List)

package com.zking.ssm.common;
import redis.clients.jedis.Jedis;
/**
 * @Name BingBing
 * @company zking cy
 * @create 2023-11-03-18:04
 */
public class Redis_ml {
    public static void main(String[] args) {
        //建立与数据库连接
        Jedis jedis = new Jedis("localhost", 6379);
        //设置密码
        jedis.auth("123456");
        //测试是否连接上
        System.out.println(jedis.ping());
        //String的相关操作
        //连接第七个数据库
        jedis.select(3);
//        lpush key value1 value2 value3          将一个或多个值插入到列表头部
        jedis.lpush("List_hobby", "唱", "跳", "rap", "篮球");
//        llen key                                获取列表的长度
        System.out.println(jedis.llen("List_hobby"));
//        lindex key index                        根据索引获取列表中的元素
        System.out.println(jedis.lindex("List_hobby", 0));
//        lrange key start sop                    查看指定范围内的元素
        System.out.println(jedis.lrange("List_hobby", 0, 2));
    }
}

2.4 Redis集合(Set)

package com.zking.ssm.common;
import redis.clients.jedis.Jedis;
import java.util.Set;
/**
 * @Name BingBing
 * @company zking cy
 * @create 2023-11-03-18:04
 */
public class Redis_ml {
    public static void main(String[] args) {
        //建立与数据库连接
        Jedis jedis = new Jedis("localhost", 6379);
        //设置密码
        jedis.auth("123456");
        //测试是否连接上
        System.out.println(jedis.ping());
        //String的相关操作
        //连接第七个数据库
        jedis.select(3);
//        Redis集合(Set)
        //       sadd key value1 [value2]                向集合添加一个或多个元素
        jedis.sadd("set_user", "哈巴狗", "花猪", "牛马", "joker");
//        scard key                               获取集合中的元素数量
        System.out.println(jedis.scard("set_user"));
//        exists key                              是否存在
        System.out.println(jedis.exists("set_user"));
    }
}

2.5 Redis有序集合(Sorted Set)

package com.zking.ssm.common;
import redis.clients.jedis.Jedis;
import java.util.HashMap;
import java.util.Map;
import java.util.Set;
/**
 * @Name BingBing
 * @company zking cy
 * @create 2023-11-03-18:04
 */
public class Redis_ml {
    public static void main(String[] args) {
        //建立与数据库连接
        Jedis jedis = new Jedis("localhost", 6379);
        //设置密码
        jedis.auth("123456");
        //测试是否连接上
        System.out.println(jedis.ping());
        //String的相关操作
        //连接第七个数据库
        jedis.select(3);
//        5、Redis有序集合(Sorted Set)
// -1 表示最后一个成员, -2 表示倒数第二个成员,以此类推。
        jedis.zadd("mysort", 1.0, "三国演义");
        jedis.zadd("mysort", 2.0, "西游记");
        jedis.zadd("mysort", 3.0, "水浒传");
        jedis.zadd("mysort", 4.0, "红楼梦");
        Map<String, Double> map = new HashMap<>();
        map.put("mutouliu", 5.0);
        jedis.zadd("mysort", map);
        //正序排列
        Set<String> mysort = jedis.zrange("mysort", 0, -1);
        System.out.println(mysort);
        //倒序排列
        Set<String> mysort1 = jedis.zrange("mysort", -1, 0);
        System.out.println(mysort1);
//        命令用于计算集合中元素的数量
        System.out.println(jedis.zcard("mysort"));
//        命令用于计算有序集合中指定分数区间的成员数量
        System.out.println(jedis.zcount("mysort", 0, 4));
//        命令在计算有序集合中指定字典区间内成员数量。
        System.out.println(jedis.zlexcount("mysort", "-", "+"));
    }
}

三,Redis在项目应用

  1. 缓存:Redis作为一种内存数据库,常用于缓存常用数据,如数据库查询结果、API响应等。通过将数据存储在Redis中,可以快速获取数据,提高系统的性能和响应速度。
  2. 会话管理:Redis可用于存储会话数据,特别是在分布式系统中,可以将用户的会话数据存储在Redis中,以实现多个服务节点之间的会话共享。
  3. 发布/订阅系统:Redis具有发布/订阅功能,可以用于构建实时消息系统。通过发布/订阅功能,可以将消息发送到频道,并由订阅者实时接收并处理消息。
  4. 排行榜/计数器:Redis提供了有序集合、计数器等功能,可以用于实现排行榜、计数器等应用场景。比如实时热门文章排行榜、用户关注数计数器等应用。
  5. 分布式锁:Redis提供了原子操作的能力,可以用于实现分布式锁。在分布式系统中,可以使用Redis的原子操作实现互斥锁,保证在同一时间只有一个进程能够访问共享资源,确保数据的一致性和并发安全性。
  6. 消息队列:Redis的列表结构非常适合用作消息队列。可以将待处理的任务作为消息发布到Redis的列表中,然后通过消费者逐一处理这些任务。
  7. 地理位置的存储与查询:Redis提供了地理位置相关的API,可以将地理信息与特定对象关联起来,并进行查询

   总的来说,Redis在项目中的主要应用包括缓存、会话管理、发布/订阅系统、排行榜/计数器、分布式锁、消息队列以及地理位置的存储与查询等方面。这些应用可以提高系统性能、实现实时消息传递和数据共享等功能。

相关实践学习
基于Redis实现在线游戏积分排行榜
本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
云数据库 Redis 版使用教程
云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore &nbsp; &nbsp; ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库&nbsp;ECS 实例和一台目标数据库&nbsp;RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&amp;RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
目录
相关文章
|
18天前
|
存储 Java 关系型数据库
高效连接之道:Java连接池原理与最佳实践
在Java开发中,数据库连接是应用与数据交互的关键环节。频繁创建和关闭连接会消耗大量资源,导致性能瓶颈。为此,Java连接池技术通过复用连接,实现高效、稳定的数据库连接管理。本文通过案例分析,深入探讨Java连接池的原理与最佳实践,包括连接池的基本操作、配置和使用方法,以及在电商应用中的具体应用示例。
37 5
|
9天前
|
存储 缓存 Java
大厂面试必看!Java基本数据类型和包装类的那些坑
本文介绍了Java中的基本数据类型和包装类,包括整数类型、浮点数类型、字符类型和布尔类型。详细讲解了每种类型的特性和应用场景,并探讨了包装类的引入原因、装箱与拆箱机制以及缓存机制。最后总结了面试中常见的相关考点,帮助读者更好地理解和应对面试中的问题。
33 4
|
7天前
|
存储 消息中间件 NoSQL
使用Java操作Redis数据类型的详解指南
通过使用Jedis库,可以在Java中方便地操作Redis的各种数据类型。本文详细介绍了字符串、哈希、列表、集合和有序集合的基本操作及其对应的Java实现。这些示例展示了如何使用Java与Redis进行交互,为开发高效的Redis客户端应用程序提供了基础。希望本文的指南能帮助您更好地理解和使用Redis,提升应用程序的性能和可靠性。
21 1
|
16天前
|
SQL Java 数据库连接
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率
在Java应用中,数据库访问常成为性能瓶颈。连接池技术通过预建立并复用数据库连接,有效减少连接开销,提升访问效率。本文介绍了连接池的工作原理、优势及实现方法,并提供了HikariCP的示例代码。
30 3
|
16天前
|
Java 数据库连接 数据库
深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能
在Java应用开发中,数据库操作常成为性能瓶颈。本文通过问题解答形式,深入探讨Java连接池技术如何通过复用数据库连接、减少连接建立和断开的开销,从而显著提升系统性能。文章介绍了连接池的优势、选择和使用方法,以及优化配置的技巧。
16 1
|
16天前
|
Java 数据库连接 数据库
Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销
本文深入探讨了Java连接池在数据库性能优化中的重要作用。连接池通过预先创建和管理数据库连接,避免了频繁创建和关闭连接的开销,显著提升了系统的响应速度和吞吐量。文章介绍了连接池的工作原理,并以HikariCP为例,展示了如何在Java应用中使用连接池。通过合理配置和优化,连接池技术能够有效提升应用性能。
32 1
|
21天前
|
SQL Java 关系型数据库
java连接mysql查询数据(基础版,无框架)
【10月更文挑战第12天】该示例展示了如何使用Java通过JDBC连接MySQL数据库并查询数据。首先在项目中引入`mysql-connector-java`依赖,然后通过`JdbcUtil`类中的`main`方法实现数据库连接、执行SQL查询及结果处理,最后关闭相关资源。
|
21天前
|
NoSQL 网络协议 算法
Redis 客户端连接
10月更文挑战第21天
25 1
|
20天前
|
存储 NoSQL Java
Java 使用 Redis
10月更文挑战第22天
25 0
|
3月前
|
缓存 监控 NoSQL
【Azure Redis 缓存】Azure Redis出现了超时问题后,记录一步一步的排查出异常的客户端连接和所执行命令的步骤
【Azure Redis 缓存】Azure Redis出现了超时问题后,记录一步一步的排查出异常的客户端连接和所执行命令的步骤