<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>jedis</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<!--jedis依赖-->
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.2.0</version>
<type>jar</type>
<scope>compile</scope>
</dependency>
</dependencies>
</project>
package jedis;
import redis.clients.jedis.Jedis;
public class MyJedis {
public static void main(String[] args) {
//1.构造jedis对象,端口没写则默认为6379
Jedis jedis = new Jedis("192.168.244.129");
//Jedis jedis = new Jedis("192.168.244.129",6379);
//密码认证
jedis.auth("root123");
//测试是否连接成功
String str = jedis.ping();
//返回一个"pong"则表明连接成功
System.out.println(str);
}
}
结果:
package jedis;
import org.apache.commons.pool2.impl.GenericObjectPoolConfig;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
public class JedisUtils {
private static JedisPool jedisPool = null;
public static Jedis getJedisObject() {
if (jedisPool == null) {
GenericObjectPoolConfig config = new GenericObjectPoolConfig();
//最大空闲数
config.setMaxIdle(400);
//最大连接数
config.setMaxTotal(2000);
//连接最大等待时间,-1代表没有限制
config.setMaxWaitMillis(300000);
/** * 配置连接池的地址,端口号,超时时间,密码 */
jedisPool = new JedisPool(config,"192.168.244.129",6379,30000,"root123");
}
try {
//通过连接池获取jedis对象
Jedis jedis = jedisPool.getResource();
jedis.auth("root123");
return jedis;
} catch (Exception e) {
e.printStackTrace();
return null;
}
}
}
测试
package jedis;
import redis.clients.jedis.Jedis;
public class test {
public static void main(String[] args) {
Jedis jedisObject = JedisUtils.getJedisObject();
try {
String str = jedisObject.ping();
System.out.println(str);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (jedisObject != null) {
jedisObject.close();
}
}
}
}
结果
<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.example</groupId>
<artifactId>lettuce</artifactId>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>io.lettuce</groupId>
<artifactId>lettuce-core</artifactId>
<version>5.2.2.RELEASE</version>
</dependency>
</dependencies>
</project>
package com.yl.config;
import io.lettuce.core.RedisClient;
import io.lettuce.core.api.StatefulRedisConnection;
import io.lettuce.core.api.sync.RedisCommands;
public class LettuceTest {
public static void main(String[] args) {
//创建client对象
RedisClient redisClient = RedisClient.create("redis://root123@192.168.244.129");
//获取连接对象
StatefulRedisConnection<String, String> connect = redisClient.connect();
//获取同步调用的连接对象
RedisCommands<String, String> sync = connect.sync();
//通过set,get往redis里存数据和取数据
sync.set("name","yl");
sync.set("age","23");
System.out.println(sync.get("name"));
System.out.println(sync.get("age"));
}
}
结果
1.jedis在实现的过程中是直接连接到redis的,在多个线程之间共享一个jedis实例,这是线程不安全的,如果想在多线程的情况下使用jedis,就得使用jedis连接池,这就使得每一个线程都会相对应一个jedis连接池,比较耗内存空间
2.lettuce是基于目前很火的Netty NIO开发的,解决了jedis中线程不安全的问题,lettuce支持同步,异步,等,多个线程可以共享一个实例
版权说明 : 本文为转载文章, 版权归原作者所有 版权申明
原文链接 : https://blog.csdn.net/weixin_41359273/article/details/120612547
内容来源于网络,如有侵权,请联系作者删除!