Redis基础篇:Redis的Java客户端

本文涉及的产品
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: Redis基础篇:Redis的Java客户端


第一章:客户端对比

Redis官网中提供了各种语言的客户端,供我们使用。

我们关注的一定是Java客户端,然而Java的客户端也有N多个,标注*的是推荐使用的。

一:Jedis

Jedis当中的命令命名与redis实际命令一致,学习成本低。但是Jedis实例是线程不安全的,创建一个Jedis实例,多线程需要基于连接池来使用。

二:lettuce

Lettuce是基于Netty实现的,支持同步、异步和响应式变成方式,并且是线程安全的。支持Redis的哨兵模式、集群模式和普通模式。

Spring默认兼容

三:Redisson

Redisson是一个基于Redis实现的分布式、可伸缩的、Java数据结构集合。包含了诸如Map、Queue、Lock、Semaphore、AtomicLong等强大功能。

Spring Data Redis底层兼容了 jedis和lettuce,底层可以无缝切换,这样我们使用即可。Redisson在我们使用分布式锁的时候用的比较多。

第二章 Jedis快速入门

一:添加依赖

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

二:建立链接

private Jedis jedis;
@BeforeEach
void setUp(){
    //建立连接
    jedis=new Jedis("192.168.150.101",6379);//redisip地址。
    //设置密码
    jedis.auth(123321);
    //选择库
    jedis.select(0);//默认就是第一个库
}

三:测试String

@Test
void teststring(){
  //插入数据,方法名称就是r©dis命令名称,非常简单
  String result=jedis.set("name","张三");
  System.out.println("result ="result);
  //获取效据
  String name jedis.get("name");
  System.out.println("name ="name);
}

四:测试哈希

@Test
void testHash(){
//插入hash数据
jedis.hset("user:1","name","ack");
jedis.hset("user:1","age","21");
//获取
Map<String,String>map jedis.hgetAll("1");
System.out.println(map);

五:释放资源

4.释放资源
@AfterEach
void tearDown(){
  //释放瓷源
  if (jedis !null){
  jedis.close();
}

第三章:Jedis连接池

Jedis本身是线程不安全的。并发条件下通过Jedis操作Redis会出现线程安全问题。

同时,频繁的创建和销毁链接都会有性能损耗,因此我们推荐大家使用Jedis连接池代替Jedis直连的方式。

public class JedisConnectionFactory {
  private static final JedisPool jedisPool;
  static {
    //连接池配置对象。
    JedisPoolConfig jedisPoolConfig =new JedisPoolConfig();
    //最大连接
    jedisPoolConfig.setMaxTotal(8);//最多允许你创建多少个连接
    //最大空连接
    jedisPoolConfig. setMaxIdle(8);//最大空闲连接,没有人使用这个,最多有8个连接。
    //最小空闲连接
    jedisPoolConfig.setMinIdle0);//最小空闲连接,超过一段时间之后一直没有人访问,这些连接被释放。
    //设置最长等侍时间,ms
    jedisPoolConfig. setMaxWaitMillis(200);//连接池当中没有连接的时候,是否要等待,默认是-1,也就是一直等待,我们默认等待200ms,超过这个时间,就该报错了。
    //连接池对象
    jedisPool = new JedisPooljedisPoolConfig("192.168.150.101“,6379,
    1000,"123321);//ip+port+超时时间+密码;
  }
} 
//获取Jedis对象。这是一个静态方法。
public static Jedis getJedis(){
  return jedisPool.getResource();
}

通过这个静态方法,大家都从这个池子当中去拿取Jedis对象,基于池化思想,避免了jedis对象的频繁的创建和销毁,节省了计算机资源。

private Jedis jedis;
@BeforeEach
void setUp(){
    //建立连接
    jedis=JedisConnectionFactory .getgetJedis();
    //设置密码
    jedis.auth(123321);
    //选择库
    jedis.select(0);//默认就是第一个库
}

当我们使用池化技术的时候redis.close()就变成了这:

相关文章
|
2月前
|
存储 SQL NoSQL
Redis-常用语法以及java互联实践案例
本文详细介绍了Redis的数据结构、常用命令及其Java客户端的使用,涵盖String、Hash、List、Set、SortedSet等数据类型及操作,同时提供了Jedis和Spring Boot Data Redis的实战示例,帮助开发者快速掌握Redis在实际项目中的应用。
288 1
Redis-常用语法以及java互联实践案例
|
5月前
|
缓存 监控 NoSQL
Redis 实操要点:Java 最新技术栈的实战解析
本文介绍了基于Spring Boot 3、Redis 7和Lettuce客户端的Redis高级应用实践。内容包括:1)现代Java项目集成Redis的配置方法;2)使用Redisson实现分布式可重入锁与公平锁;3)缓存模式解决方案,包括布隆过滤器防穿透和随机过期时间防雪崩;4)Redis数据结构的高级应用,如HyperLogLog统计UV和GeoHash处理地理位置。文章提供了详细的代码示例,涵盖Redis在分布式系统中的核心应用场景,特别适合需要处理高并发、分布式锁等问题的开发场景。
396 41
|
6月前
|
人工智能 Java API
MCP客户端调用看这一篇就够了(Java版)
本文详细介绍了MCP(Model Context Protocol)客户端的开发方法,包括在没有MCP时的痛点、MCP的作用以及如何通过Spring-AI框架和原生SDK调用MCP服务。文章首先分析了MCP协议的必要性,接着分别讲解了Spring-AI框架和自研SDK的使用方式,涵盖配置LLM接口、工具注入、动态封装工具等步骤,并提供了代码示例。此外,还记录了开发过程中遇到的问题及解决办法,如版本冲突、服务连接超时等。最后,文章探讨了框架与原生SDK的选择,认为框架适合快速构建应用,而原生SDK更适合平台级开发,强调了两者结合使用的价值。
9601 33
MCP客户端调用看这一篇就够了(Java版)
|
7月前
|
NoSQL Java API
在Java环境下如何进行Redis数据库的操作
总的来说,使用Jedis在Java环境下进行Redis数据库的操作,是一种简单而高效的方法。只需要几行代码,就可以实现复杂的数据操作。同时,Jedis的API设计得非常直观,即使是初学者,也可以快速上手。
343 94
|
5月前
|
缓存 NoSQL Java
Java Redis 面试题集锦 常见高频面试题目及解析
本文总结了Redis在Java中的核心面试题,包括数据类型操作、单线程高性能原理、键过期策略及分布式锁实现等关键内容。通过Jedis代码示例展示了String、List等数据类型的操作方法,讲解了惰性删除和定期删除相结合的过期策略,并提供了Spring Boot配置Redis过期时间的方案。文章还探讨了缓存穿透、雪崩等问题解决方案,以及基于Redis的分布式锁实现,帮助开发者全面掌握Redis在Java应用中的实践要点。
331 6
|
6月前
|
存储 网络协议 Java
Java获取客户端IP问题:返回127.0.0.1
总结:要解决Java获取客户端IP返回127.0.0.1的问题,首先要找出原因,再采取合适的解决方案。请参考上述方案来改进代码,确保在各种网络环境下都能正确获取客户端IP地址。希望本文对您有所帮助。
484 25
|
9月前
|
Linux 网络安全 Docker
尼恩一键开发环境: vagrant+java+springcloud+redis+zookeeper镜像下载(&制作详解)
尼恩提供了一系列文章,旨在帮助开发者轻松搭建一键开发环境,涵盖Java分布式、高并发场景下的多种技术组件安装与配置。内容包括但不限于Windows和CentOS虚拟机的安装与排坑指南、MySQL、Kafka、Redis、Zookeeper等关键组件在Linux环境下的部署教程,并附带详细的视频指导。此外,还特别介绍了Vagrant这一虚拟环境部署工具,
尼恩一键开发环境: vagrant+java+springcloud+redis+zookeeper镜像下载(&制作详解)
|
存储 SQL 缓存
Java-Redis笔记
  Redis   1. 概念: redis是一款高性能的NOSQL系列的非关系型数据库   1.1.什么是NOSQL   NoSQL(NoSQL=Not Only SQL),意即“不仅仅是SQL”,是一项全新的数据库理念,泛指非关系型的数据库。   随着互联网web2.0网站的兴起,传统的关系数据库在应付web2.0网站,特别是超大规模和高并发的SNS类型的web2.0纯动态网站已经显得力不从心,暴露了很多难以克服的问题,而非关系型的数据库则由于其本身的特点得到了非常迅速的发展。NoSQL数据库的产生就是为了解决大规模数据集合多重数据种类带来的挑战,尤其是大数据应用难题。
190 0
|
6月前
|
缓存 NoSQL 关系型数据库
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
美团面试:MySQL有1000w数据,redis只存20w的数据,如何做 缓存 设计?
|
1月前
|
缓存 负载均衡 监控
135_负载均衡:Redis缓存 - 提高缓存命中率的配置与最佳实践
在现代大型语言模型(LLM)部署架构中,缓存系统扮演着至关重要的角色。随着LLM应用规模的不断扩大和用户需求的持续增长,如何构建高效、可靠的缓存架构成为系统性能优化的核心挑战。Redis作为业界领先的内存数据库,因其高性能、丰富的数据结构和灵活的配置选项,已成为LLM部署中首选的缓存解决方案。