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()就变成了这:

相关实践学习
基于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
相关文章
|
5天前
|
JSON NoSQL Java
Redis入门到通关之Java客户端SpringDataRedis(RedisTemplate)
Redis入门到通关之Java客户端SpringDataRedis(RedisTemplate)
14 0
|
10天前
|
Java API Apache
ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
【4月更文挑战第11天】ZooKeeper【基础 03】Java 客户端 Apache Curator 基础 API 使用举例(含源代码)
25 11
|
12天前
|
人工智能 前端开发 Java
Java语言开发的AI智慧导诊系统源码springboot+redis 3D互联网智导诊系统源码
智慧导诊解决盲目就诊问题,减轻分诊工作压力。降低挂错号比例,优化就诊流程,有效提高线上线下医疗机构接诊效率。可通过人体画像选择症状部位,了解对应病症信息和推荐就医科室。
157 10
|
14天前
|
缓存 NoSQL Java
使用Redis进行Java缓存策略设计
【4月更文挑战第16天】在高并发Java应用中,Redis作为缓存中间件提升性能。本文探讨如何使用Redis设计缓存策略。Redis是开源内存数据结构存储系统,支持多种数据结构。Java中常用Redis客户端有Jedis和Lettuce。缓存设计遵循一致性、失效、雪崩、穿透和预热原则。常见缓存模式包括Cache-Aside、Read-Through、Write-Through和Write-Behind。示例展示了使用Jedis实现Cache-Aside模式。优化策略包括分布式锁、缓存预热、随机过期时间、限流和降级,以应对缓存挑战。
|
19天前
|
运维 NoSQL 算法
Java开发-深入理解Redis Cluster的工作原理
综上所述,Redis Cluster通过数据分片、节点发现、主从复制、数据迁移、故障检测和客户端路由等机制,实现了一个分布式的、高可用的Redis解决方案。它允许数据分布在多个节点上,提供了自动故障转移和读写分离的功能,适用于需要大规模、高性能、高可用性的应用场景。
16 0
|
23天前
|
存储 缓存 NoSQL
Java手撸一个缓存类似Redis
`LocalExpiringCache`是Java实现的一个本地缓存类,使用ConcurrentHashMap存储键值对,并通过ScheduledExecutorService定时清理过期的缓存项。类中包含`put`、`get`、`remove`等方法操作缓存,并有`clearCache`方法来清除过期的缓存条目。初始化时,会注册一个定时任务,每500毫秒检查并清理一次过期缓存。单例模式确保了类的唯一实例。
18 0
|
存储 NoSQL Java
在java中使用redis
在java中使用redis很简单,只需要添加jedist.jar,通过它的api就可以了。而且,api和redis的语法几乎完全相同。以下简单的测试: 参考:http://www.runoob.com/redis/redis-java.
969 0
|
19天前
|
存储 NoSQL 算法
09- Redis分片集群中数据是怎么存储和读取的 ?
Redis分片集群使用哈希槽分区算法,包含16384个槽(0-16383)。数据存储时,通过CRC16算法对key计算并模16383,确定槽位,进而分配至对应节点。读取时,根据槽位找到相应节点直接操作。
54 12
|
19天前
|
NoSQL Linux Redis
06- 你们使用Redis是单点还是集群 ? 哪种集群 ?
**Redis配置:** 使用哨兵集群,结构为1主2从,加上3个哨兵节点,总计分布在3台Linux服务器上,提供高可用性。
325 0
|
28天前
|
负载均衡 监控 NoSQL
Redis的集群方案有哪些?
Redis集群包括主从复制(基础,手动故障恢复)、哨兵模式(自动高可用)和Redis Cluster(官方分布式解决方案,自动分片和容错)。此外,还有如Codis、Redisson和Twemproxy等第三方工具用于代理和负载均衡。选择方案需考虑应用场景、数据规模和并发需求。
275 2