Redis黑马 day01
本机服务端启动使用 redis-server.exe
客户端 redis-cli.exe
图形化界面 Another Redis Desktop
Jedis
Jedis 简介
Jedis 是一个高性能的 Java Redis 客户端,用于连接和操作 Redis 数据库。它提供了简单易用的 API,可以方便地在 Java 应用程序中集成 Redis。
主要特性
-
简单易用:
-
提供了丰富的 API,支持 Redis 的各种命令。
-
示例:
Jedis jedis = new Jedis("localhost", 6379); jedis.set("key", "value"); String value = jedis.get("key"); System.out.println("Value: " + value); jedis.close();
-
-
连接池支持:
-
提供了
JedisPool
类,用于管理 Redis 连接池,提高性能和资源利用率。 -
示例
JedisPool jedisPool = new JedisPool("localhost", 6379); try (Jedis jedis = jedisPool.getResource()) {jedis.set("key", "value");String value = jedis.get("key");System.out.println("Value: " + value); } jedisPool.close();
-
-
事务支持:
-
支持 Redis 的事务功能,可以通过
multi
和exec
命令来执行事务。 -
示例
Jedis jedis = new Jedis("localhost", 6379); Transaction transaction = jedis.multi(); transaction.set("key1", "value1"); transaction.set("key2", "value2"); transaction.exec(); jedis.close();
-
-
管道支持:
-
支持 Redis 的管道功能,可以通过
pipeline
命令来发送多个命令,减少网络延迟。 -
示例
Jedis jedis = new Jedis("localhost", 6379); Pipeline pipeline = jedis.pipelined(); pipeline.set("key1", "value1"); pipeline.set("key2", "value2"); pipeline.sync(); jedis.close();
-
-
集群支持:
-
提供了对 Redis 集群的支持,可以通过
JedisCluster
类连接到 Redis 集群。 -
示例
Set<HostAndPort> nodes = new HashSet<>(); nodes.add(new HostAndPort("localhost", 7001)); nodes.add(new HostAndPort("localhost", 7002)); JedisCluster jedisCluster = new JedisCluster(nodes); jedisCluster.set("key", "value"); String value = jedisCluster.get("key"); System.out.println("Value: " + value); jedisCluster.close();
-
依赖添加
在你的 Maven pom.xml
文件中添加 Jedis 的依赖:
<dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId><version>4.0.1</version>
</dependency>
入门测试
import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import redis.clients.jedis.Jedis;import java.util.Map;public class JedisTest {private Jedis jedis;@BeforeEachvoid setJedis(){//1.建立连接jedis = new Jedis("127.0.0.1",6379);//3.选择库jedis.select(0);}@Testvoid testString(){//存入String result = jedis.set("name", "van");System.out.println("result = " + result);//获取数据String name = jedis.get("name");System.out.println("name = " + name);}@AfterEachvoid tearDown(){if(jedis != null){jedis.close();}}@Testvoid testHash(){//存jedis.hset("user:1","name","jack");jedis.hset("user:1","age","12");//取Map<String,String> map = jedis.hgetAll("user:1");System.out.println(map);}
}
Jedis线程池
package cmo.heima.jedis.util;import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;public class JedisConnectionFactory {private static JedisPool jedisPool;static {//配置连接池JedisPoolConfig poolConfig = new JedisPoolConfig();poolConfig.setMaxTotal(8);poolConfig.setMaxIdle(8);poolConfig.setMinIdle(0);poolConfig.setMaxWaitMillis(1000);jedisPool = new JedisPool(poolConfig,"127.0.0.1", 6379,1000);}// 添加获取Jedis实例的方法public static Jedis getJedis() {return jedisPool.getResource();}
}
//1.建立连接
// jedis = new Jedis("127.0.0.1",6379);jedis = JedisConnectionFactory.getJedis();
edis 连接池 是一个用于管理 Redis 连接的工具,它可以帮助你高效地复用连接,提高性能并减少资源消耗。在实际应用中,频繁地创建和关闭连接是非常耗时的,而连接池可以预先创建一定数量的连接,并在需要时提供给应用程序使用,使用完毕后再归还到连接池中,而不是直接关闭。
主要特性
-
连接复用:
-
连接池预先创建了一定数量的连接,这些连接可以被多个线程复用,减少了创建和关闭连接的开销。
-
-
性能优化:
-
通过复用连接,减少了每次请求时创建和销毁连接的时间,从而提高了应用程序的性能。
-
-
资源管理:
-
连接池可以限制最大连接数,防止应用程序过度消耗 Redis 服务器的资源。
-
-
线程安全:
-
连接池是线程安全的,多个线程可以同时从连接池中获取连接并使用。
-
-
灵活配置:
-
你可以通过配置文件或代码来设置连接池的各种参数,如最大连接数、最小空闲连接数、最大等待时间等。
-
配置参数
-
maxTotal
:最大连接数。连接池中可以同时存在的最大连接数。 -
maxIdle
:最大空闲连接数。连接池中可以保持的最大空闲连接数。 -
minIdle
:最小空闲连接数。连接池中可以保持的最小空闲连接数。 -
testOnBorrow
:在从连接池中获取连接时,是否进行有效性检查。 -
testOnReturn
:在将连接归还到连接池时,是否进行有效性检查。 -
testWhileIdle
:是否定期检查空闲连接的有效性。 -
timeBetweenEvictionRunsMillis
:空闲连接检查的间隔时间。 -
numTestsPerEvictionRun
:每次检查空闲连接时,检查的连接数。 -
minEvictableIdleTimeMillis
:连接在池中最小生存时间。
使用场景
-
高并发应用:
-
在高并发的 Web 应用中,使用连接池可以显著提高性能,减少响应时间。
-
-
分布式系统:
-
在分布式系统中,多个节点可能需要同时访问 Redis 服务器,连接池可以有效地管理这些连接。
-
-
微服务架构:
-
在微服务架构中,每个服务可能需要频繁地与 Redis 交互,连接池可以提高资源利用率。
-