使用Jedis操作Redis
Redis 操作 Jedis 使用
2023-09-14 08:56:52 时间
目录
一、快速上手
1.1、导入依赖
1.2、第一个示例
2.1、使用示例
2.2、封装工具类
3.1、单纯的JedisCluster
3.2、配合使用连接池
一、快速上手
1.1、导入依赖
jedis的github网址:https://github.com/xetorthio/jedis
maven仓库信息:https://mvnrepository.com/artifact/redis.clients/jedis
本文所使用的的是最新的3.2.0版本,jedis的maven依赖xml如下:
<dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.2.0</version> </dependency>
1.2、第一个示例
测试的时候,使用本地安装的redis,所以先将本地的redis服务器启动
导入以来以后,可以创建一个单元测试类进行测试
package cn.ganlixin.redis; import org.junit.Test; import redis.clients.jedis.Jedis; public class JedisExample { @Test public void testFirstExample() { // 连接redis Jedis jedis = new Jedis("localhost", 6379); // Jedis jedis = new Jedis("localhost"); // 默认6379端口 // string类型 jedis.set("name", "demo"); String name = jedis.get("name"); // list类型 jedis.lpush("myList", "hello"); jedis.rpush("myList", "world"); String lpopVal = jedis.lpop("myList"); String rpopVal = jedis.rpop("myList"); // set类型 jedis.sadd("mySet", "123"); jedis.sadd("mySet", "456"); jedis.sadd("mySet", "789"); jedis.srem("mySet", "789"); jedis.scard("mySet"); // zset类型 jedis.zadd("myZset", 99, "X"); jedis.zadd("myZset", 90, "Y"); jedis.zadd("myZset", 97, "Z"); Double zscore = jedis.zscore("myZset", "Z"); // 其他 jedis.incr("intKey"); jedis.incrBy("intKey", 5); jedis.del("intKey"); // 触发持久化 // jedis.save(); // jedis.bgsave() // 关闭连接 jedis.close(); } }
执行完毕后,可以通过redis客户端工具,登录到redis服务器查看存储的值
二、使用Jedis连接池
2.1、使用示例
仍旧使用上面的maven依赖,示例代码如下
package cn.ganlixin.redis; import org.junit.Test; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class JedisPoolExample { @Test public void testUsePool() { // 配置连接池 JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(20); config.setMaxIdle(10); config.setMinIdle(5); // 创建连接池 JedisPool jedisPool = new JedisPool(config, "localhost", 6379); Jedis jedis = jedisPool.getResource(); // 使用jedis进行操作 jedis.set("name", "otherNameVal"); // 用完之后,一定要手动关闭连接(归还给连接池) jedis.close(); } }
2.2、封装工具类
对于jedis连接池来说,只需要初始化一次即可,所以可以将其在工具类中实现,下面是我写的示例:
package cn.ganlixin.redis.util; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; /** * 描述: Jedis工具类(封装了连接池) */ public class JedisUtils { private static JedisPool jedisPool; static { // 配置连接池 JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(5); config.setMaxIdle(3); config.setMinIdle(2); // 创建连接池 jedisPool = new JedisPool(config, "localhost", 6379); } /** * 获取redis连接 */ public static Jedis getJedis() { return jedisPool.getResource(); } }
配置项可以从配置文件中获取,下面是使用示例:
package cn.ganlixin.redis; import cn.ganlixin.redis.util.JedisUtils; import org.junit.Test; import redis.clients.jedis.Jedis; public class JedisPoolExample { @Test public void testJedisPoolUtil() { Jedis jedis = JedisUtils.getJedis(); jedis.set("name123", "demo"); // 一定要关闭jedis连接 jedis.close(); } }
使用Jedis连接池,最重要的就是:一定要手动关闭连接(释放连接),否则会因为连接耗尽而导致操作阻塞。
三、使用Jedis连接Redis集群
要使用jedis操作Redis集群,就必须先有一个redis集群,redis集群的搭建方式,可以参考:Redis集群搭建
3.1、单纯的JedisCluster
这里的单纯,是指先简单可以下JedisCluster的用法,没有涉及到连接池相关的,后面会与连接池配合使用
package cn.ganlixin.redis; import org.junit.Test; import redis.clients.jedis.HostAndPort; import redis.clients.jedis.JedisCluster; import java.util.HashSet; import java.util.Set; /** * Jedis操作Redis集群 */ public class JedisClusterExample { @Test public void testExample() { // 设置redis集群的节点信息 Set<HostAndPort> nodes = new HashSet<>(); nodes.add(new HostAndPort("192.168.1.3", 6379)); nodes.add(new HostAndPort("192.168.1.4", 6379)); nodes.add(new HostAndPort("192.168.1.5", 6379)); // 创建jediscluster,可以理解为jedis对象 JedisCluster cluster = new JedisCluster(nodes); // 和jedis的使用方式几乎一样 cluster.set("name", "nameDemo"); // 使用完毕后,不需要释放连接 // cluster.close(); } }
3.2、配合使用连接池
JedisCluster增加连接池,只需要配置一下连接池即可,示例如下:
package cn.ganlixin.redis; import org.junit.Test; import redis.clients.jedis.HostAndPort; import redis.clients.jedis.JedisCluster; import redis.clients.jedis.JedisPoolConfig; import java.util.HashSet; import java.util.Set; /** * Jedis操作Redis集群 */ public class JedisClusterExample { @Test public void clusterWithPool() { // 设置redis集群的节点信息 Set<HostAndPort> nodes = new HashSet<>(); nodes.add(new HostAndPort("192.168.1.3", 6379)); nodes.add(new HostAndPort("192.168.1.4", 6379)); nodes.add(new HostAndPort("192.168.1.5", 6379)); // 配置连接池 JedisPoolConfig jedisPoolConfig = new JedisPoolConfig(); jedisPoolConfig.setMaxTotal(5); jedisPoolConfig.setMaxIdle(3); jedisPoolConfig.setMinIdle(2); // 创建jediscluster,传入节点列表和连接池配置 JedisCluster cluster = new JedisCluster(nodes, jedisPoolConfig); // 和jedis的使用方式几乎一样 cluster.set("name", "nameDemo2121"); // 使用完毕后,不需要释放连接 // cluster.close(); } }
执行程序,在命令行中登录到redis集群查看
相关文章
- 处理解决Redis异常:从原因到解决方案(redis异常)
- PHP Redis操作:提高你的应用程序性能(phpredis操作)
- 优化Redis机器配置,提升运行性能(redis机器配置)
- 记录Redis操作的步骤:从日志获取巨大价值(redis操作日志)
- C语言操纵Redis:掌握数据库管理新技能(c操作redis数据库)
- 微擎重新开启Redis,解决无效问题(微擎开启redis无效)
- 监测Redis中的慢查询性能(监控redis慢操作)
- Redis申报促进数据操作机动性(申政redis)
- 深入探索Redis操作记录的旅程(查redis操作历史日志)
- 本地搭建Redis数据库实现简单数据库操作(本地安装redis)
- 精通日本Redis,快速掌握操作技巧(日本redis操作)
- 使用Redis掌握操作Redis的类(操作redis的类)
- 策略创建Redis集超时策略优化体验(创建redis集超时)
- 如何快速高效删除Redis数据(如何删除redis数据)
- 一步一步学习如何使用Redis进行配置(使用redis怎么配置)
- 利用多线程操纵Redis数据库(多线程redis操作)
- 解决Redis在实践中的挑战(在实践中redis的问题)
- 极速获取Redis数据怎样掌握其中秘密(取redis数据类型)
- 解决Redis过期问题的方法(redis过期怎么解决)
- 让Redis跳表红极一时的操作法则(redis 跳表 操作)
- Redis调优提升系统性能的实践经验(redis调优经验)
- 性以Redis确保计数操作的原子性(redis计数原子)
- Redis的远程批量删除操作简易实现(redis远程批量删除)
- 简单操作,Redis的配置优化,让性能更上一层楼(redis配置性能优化)