Jedis
Jedis 是一个用于 Java 语言的 Redis 客户端库,它提供了与 Redis 数据库进行交互的接口和功能。通过使用 Jedis,你可以在 Java 应用程序中方便地与 Redis 进行通信。
Jedis提供了简洁的API,以redis命令作为方法名称,易于学习和使用
下面是一些 Jedis 的常见用法:
-
连接到 Redis:
Jedis jedis = new Jedis("localhost", 6379);
-
执行 Redis 命令:
jedis.set("key", "value"); String value = jedis.get("key");
-
键值操作:
jedis.set("name", "John"); String name = jedis.get("name"); jedis.del("key"); // 删除键 Boolean exists = jedis.exists("key"); // 检查键是否存在
-
列表操作:
jedis.lpush("list", "item1", "item2"); // 在列表左侧插入元素 List<String> list = jedis.lrange("list", 0, -1); // 获取列表所有元素 Long len = jedis.llen("list"); // 获取列表长度 String item = jedis.lpop("list"); // 弹出列表左侧元素
-
哈希操作:
jedis.hset("hash", "field1", "value1"); String value = jedis.hget("hash", "field1"); Map<String, String> map = jedis.hgetAll("hash"); // 获取哈希表所有字段和值
-
集合操作:
jedis.sadd("set", "member1", "member2"); // 向集合添加成员 Set<String> set = jedis.smembers("set"); // 获取集合所有成员 Boolean isMember = jedis.sismember("set", "member1"); // 检查成员是否存在于集合中
-
有序集合操作:
jedis.zadd("sortedset", 1.0, "member1"); Double score = jedis.zscore("sortedset", "member1"); Set<Tuple> set = jedis.zrangeWithScores("sortedset", 0, -1); // 获取有序集合的成员和分数
Jedis连接池
非线程安全:Jedis的实例不是线程安全的,多个线程共享一个实例可能导致并发访问冲突。为了确保线程安全,需要采用连接池管理多个实例。
配置 Jedis 连接池涉及到一些参数的设置,以下是基本的配置步骤:
-
导入 Jedis 和连接池相关的依赖包:
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>版本号</version> </dependency>
-
在代码中创建 JedisPool 对象并进行配置:
import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; // 创建连接池配置对象 JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); // 设置最大连接数 jedisPoolConfig.setMaxTotal(100); // 设置最大空闲连接数 jedisPoolConfig.setMaxIdle(50); // 设置最小空闲连接数 jedisPoolConfig.setMinIdle(10); // 设置连接超时时间(毫秒) jedisPoolConfig.setConnectTimeout(5000); // 创建 JedisPool 对象并进行配置 JedisPool jedisPool = new JedisPool(jedisPoolConfig, "localhost", 6379);
在配置参数时,可以根据实际需求进行调整。这里以最大连接数、最大空闲连接数、最小空闲连接数和连接超时时间为例进行说明。
-
使用连接池获取 Jedis 实例进行操作:
import redis.clients.jedis.Jedis; try (Jedis jedis = jedisPool.getResource()) { // 使用 jedis 进行 Redis 操作 jedis.set("key", "value"); String result = jedis.get("key"); System.out.println(result); }
在使用 Jedis 连接池时,通过
jedisPool.getResource()
方法从连接池获取 Jedis 实例,并在使用完成后使用 try-with-resources 结构自动关闭连接。