redis client
Jedis 实例是线程不安全的,多线程环境下需要基于线程池使用。
https://redis.io/resources/clients/#python
https://pypi.org/project/redis/
https://github.com/redis/redis-py
pip install redis
https://pypi.org/project/python-redis-lock/
https://python-redis-lock.readthedocs.io/en/latest/index.html
pip install python-redis-lock
Jedis
https://github.com/redis/jedis
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>2.7.1</version>
</dependency>
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;
import java.time.Duration;
public class JedisConnectionFactory {
private static final JedisPool jedisPool;
static {
JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
//最大连接数
jedisPoolConfig.setMaxTotal(8);
//最大空闲连接
jedisPoolConfig.setMaxIdle(8);
//最小空闲连接
jedisPoolConfig.setMinIdle(0);
//最大等待时间,java.time.Duration应用
jedisPoolConfig.setMaxWait(Duration.ofMillis(200));
jedisPool = new JedisPool(jedisPoolConfig, "192.168.25.128", 6379, 1000);
}
public static Jedis getJedis() {
return jedisPool.getResource();
}
}
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;
/**
* 1.设定IP监听
* 2.开放6379端口,或者直接关闭防火墙
* <p>
* 1.引入依赖
* 2.建立连接
* 3.操作对象
* 4.释放资源
*/
public class JedisTest {
private Jedis jedis;
@BeforeEach
void setUP() {
jedis = JedisConnectionFactory.getJedis();
//jedis = new Jedis("192.168.25.128", 6379);
//jedis.auth();
jedis.select(0);
}
@Test
void testString() {
String result = jedis.set("name", "davis");
System.out.println("result = " + result);
String name = jedis.get("name");
System.out.println("name = " + name);
}
@Test
void testHash() {
jedis.hset("user:1", "name", "Jack");
jedis.hset("user:1", "age", "21");
Map<String, String> map = jedis.hgetAll("user:1");
System.out.println("map = " + map);
}
@AfterEach
void tearDown() {
if (jedis != null) jedis.close();//归还资源
}
}