Redis笔记三之Java操作Redis

本文介绍了使用Java的Jedis库操作Redis的经验,强调了在实际工作中应注意的两点:防火墙关闭和Redis服务器的IP绑定设置。同时,文章提到了在`pom.xml`中的配置,包括直接创建Jedis实例和使用连接池的方法,并讨论了如何管理Jedis连接的单实例模式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

        我平时在工作中一般使用java来操作redis,java中操作redis的资源叫做jedis和redis-cli一样都是客户端,jedis的版本和redis的版本并不对应,本例中redis是3.0而jedis是2.8,jedis也可以操作集群。

       如果使用java操作redis需要注意两点:

          1:所连接的服务器上的防火墙必须关闭

          2:如果redis.conf中设置了ip绑定则java所在服务器的ip地址必须在绑定的范围之内

 

一:pom.xml中的配置。

<dependency>
	<groupId>redis.clients</groupId>
	<artifactId>jedis</artifactId>
	<version>2.8.0</version>
</dependency>

直接创建一个jedis
/**
	 * 单链接
	 */
	@Test
	public void testJedis() {
		//获取redis链接
		Jedis jedis = new Jedis(host, port);
		//通过命令来操作redis
		jedis.set("name", "jack");
		String name = jedis.get("name");
		//:关闭redis链接
		jedis.close();
		
	}

连接池

使用单实例来创建管理jedis

package online.redis;

import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.JedisPoolConfig;

public class RedisTools {

	/**
	 * 私有构造器
	 */
	private RedisTools(){};
	
	private static JedisPool JEDIS_POOL = null;
	
	/**
	 * 从连接池中获取链接
	 * @return
	 */
	public static synchronized Jedis getJedis()
	{
		if(null == JEDIS_POOL)
		{
			//1:获取连接池类
			JedisPoolConfig jedisPoolConfig = new JedisPoolConfig();
			//2:设置最大空闲连接数 
			jedisPoolConfig.setMaxIdle(10);
			//3:设置最大连接数
			jedisPoolConfig.setMaxTotal(100);
			//4:设置创建链接的超时时间
			jedisPoolConfig.setMaxWaitMillis(3000);
			//5:设置创建连接时是否会测试链接是否可用
			jedisPoolConfig.setTestOnBorrow(true);
			//6:获取连接池,在其中指定ip和端口
			JEDIS_POOL = new JedisPool(jedisPoolConfig, "192.168.79.128", 6379);
		}
		//7:从连接池中获取一个链接
		return JEDIS_POOL.getResource();
	}
	
	/**
	 * 返回链接
	 * @param jedis
	 */
	public static void returnResource(Jedis jedis)
	{
		if(null != jedis)
		{
			jedis.close();
		}
	}
}

使用junit调用redis从连接池获取链接并使用

@Test
	public void testJedisPool()
	{
		//1:从jedis连接池中获取链接
		Jedis jedis = RedisTools.getJedis();
		//2:操作redis数据库
		jedis.set("name", "Tom1");
		jedis.expireAt("name", 1471849200);
		System.out.println(jedis.get("name") + "  " + jedis.ttl("name")/(3600*24) + " days");
		//3:返回链接资源
		RedisTools.returnResource(jedis);
	}

close方法

此方法被调用时如果是从连接池中获取的连接则返回此连接,如果是new的jedis连接则关闭。

@Override
  public void close() {
    if (dataSource != null) {
      if (client.isBroken()) {
        this.dataSource.returnBrokenResource(this);
      } else {
        this.dataSource.returnResource(this);
      }
    } else {
      client.close();
    }
  }






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值