Jedis配置

Jedis介绍

Jedis源码
Jedis是redis 的java客户端。
Jedis的连接池是common-pool2。

使用

构建JedisPool对象

jedispool的构造函数有很多,最终都调用了他的父类redis.clients.util.Pool的构造函数:

public Pool(GenericObjectPoolConfig poolConfig, PooledObjectFactory<T> factory) {
        this.initPool(poolConfig, factory);
}
public void initPool(GenericObjectPoolConfig poolConfig, PooledObjectFactory<T> factory) {
    if (this.internalPool != null) {
        try {
            this.closeInternalPool();
        } catch (Exception var4) {
        }
    }

    this.internalPool = new GenericObjectPool(factory, poolConfig);
}

可以看到,最终装载的是common-pool2包下的GenericObjectPool类对象。其中要传入两个参数GenericObjectPoolConfig 、PooledObjectFactory:

GenericObjectPoolConfig

是jedis默认配置类,该类在common-pool2包下。使用这个类是用来配置连接池的一些属性。部分常用属性如下:

public class GenericObjectPoolConfig<T> extends BaseObjectPoolConfig<T> {
    private int maxTotal = 8;
    private int maxIdle = 8;
    private int minIdle = 0;

    public GenericObjectPoolConfig() {
    }
	...
}
public abstract class BaseObjectPoolConfig<T> extends BaseObject implements Cloneable {
	...
	private long maxWaitMillis = -1L;
	private boolean lifo = true;
	private boolean blockWhenExhausted = true;
	private boolean testOnCreate = false;
	private boolean testOnBorrow=false;
	private boolean testOnReturn = false;
	private boolean testWhileIdle = false;
	...
}
  • maxTotal :连接池中最大连接数,默认为 8。
  • maxIdle:连接池中最大空闲连接数,默认为 8。
  • minIdle:连接池中最小空闲连接数,默认为 0。
  • maxWaitMillis:等待空闲连接的最大时间,默认为 -1,超过最大时间直接报连接异常。
  • lifo (last in,first out):后进先出,默认为true
  • blockWhenExhausted :对象池耗尽之后是否阻塞,默认为 true。
  • testOnCreate :创建对象时验证,默认为false。
  • testOnBorrow:出借对象时验证,默认为false。
  • testOnReturn :回收对象时验证,默认为false。
  • testWhileIdle :空闲验证,默认为false。
PooledObjectFactory

该类在common-pool2包下,JedisPool初始化的时候传入是PooledObjectFactory的子类JedisFactory。
该类是用来创建池内对象的,一些成员属性是用来配置连接的。

class JedisFactory implements PooledObjectFactory<Jedis> {
    private final AtomicReference<HostAndPort> hostAndPort = new AtomicReference();
    private final int connectionTimeout;
    private final int soTimeout;
    private final String password;
    private final int database;
    private final String clientName;
    private final boolean ssl;
    private final SSLSocketFactory sslSocketFactory;
    private SSLParameters sslParameters;
    private HostnameVerifier hostnameVerifier;
    ...
    public void activateObject(PooledObject<Jedis> pooledJedis) throws Exception {
		...
    }
    public void destroyObject(PooledObject<Jedis> pooledJedis) throws Exception {
    	...
    }
    public PooledObject<Jedis> makeObject() throws Exception {
        ...
    }
    public void passivateObject(PooledObject<Jedis> pooledJedis) throws Exception {
    }
    public boolean validateObject(PooledObject<Jedis> pooledJedis) {
    	...
    }
}
  • hostAndPort :redis服务器的域名和端口号
  • connectionTimeout:redis服务器的连接超时时间
  • soTimeout(socket TimeOut):读取数据超时
  • password:redis服务器密码
  • database:数据库
  • clientName:连接对象名称
  • ssl:是否添加ssl验证,默认 false。
  • sslSocketFactory:ssl验证
  • sslParameters:ssl验证参数
  • hostnameVerifier:主机名验证
  • activateObject:激活对象
  • destroyObject:销毁对象
  • makeObject:创建对象
  • passivateObject:钝化对象
  • validateObject:验证对象
案例:
redis:
  pool:
    host: localhost
    port: 6379
    max-idle: 100
    min-idle: 5
    maxTotal:  650
    testOnBorrow:  true
    blockWhenExhausted:  false
    testOnReturn:  true
    max-wait: -1
@Component
@ConfigurationProperties(prefix = "redis.pool")
@Configuration
@Data
public class JedisConfig {
    private String host;

    private int port;

    private Integer maxTotal;

    private Integer maxIdle;

    private Integer minIdle;

    private Long maxWait;

    private boolean blockWhenExhausted;

    private boolean testOnBorrow;

    private boolean testOnReturn;

    private boolean testWhileIdle;

    @Bean
    public JedisPool getJedisPool() {
        GenericObjectPoolConfig config = new GenericObjectPoolConfig();
        config.setMaxIdle(maxIdle);
        config.setMaxTotal(maxTotal);
        config.setMinIdle(minIdle);
        config.setBlockWhenExhausted(blockWhenExhausted);
        config.setMaxWaitMillis(maxWait);
        config.setTestOnBorrow(testOnBorrow);
        config.setTestOnReturn(testOnReturn);
        config.setTestWhileIdle(testWhileIdle);
        JedisPool jedisPool = new JedisPool(config, host, port);
        return jedisPool;
    }


}

@Component
public class RedisManger {
    @Autowired
    private JedisPool jedisPool;

    private RedisManger() {
    }

    public String get(String key) {
        try {
            return jedisPool.getResource().get(key);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }

    public String set(String key, String value) {
        try {
            return jedisPool.getResource().set(key, value);
        } catch (Exception e) {
            e.printStackTrace();
        }
        return "";
    }
}

几款redis客户端软件
  1. Redis Desktop Manager

    支持: Windows 7+, Mac OS X 10.10+, Ubuntu 14+
    特点: C++ 编写,响应迅速,性能好。但不支持数据库备份与恢复。
    项目地址: https://github.com/uglide/RedisDesktopManager

  2. Redis Client

    项目简介: 使用Java编写,功能丰富,缺点是性能稍差,网络不好时,会不时断线。
    项目地址: https://github.com/caoxinyu/RedisClient

  3. Redis Studio

    项目简介: 又一个C++编写的redis管理工具,仅支持windows平台,支持xp操作系统。
    项目地址: https://github.com/cinience/RedisStudio

  4. AnotherRedisDesktopManager

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 不完全固定。在默认情况下,Jedis使用名为`redis.conf`的配置文件。但是,你可以通过在启动Jedis时使用命令行选项`--config <file>`来指定不同的配置文件。例如,要使用名为`my_redis.conf`的配置文件,可以执行以下命令: ``` redis-server --config my_redis.conf ``` 另外,如果你使用Spring Boot和Spring Data Redis来管理Redis连接,可以在`application.properties`或`application.yml`文件中指定配置参数,而不需要手动创建配置文件。 ### 回答2: Jedis配置文件的文件名不是固定的。Jedis使用的配置文件通常命名为"redis.conf",但这并不是强制要求。实际上,配置文件的文件名可以根据用户的需求和偏好来进行自定义。 无论是使用Jedis还是其他Redis客户端配置文件的文件名都不是强制的,它的命名可以根据实际情况来确定。通常,我们使用常见的配置文件命名方式来提高可读性和维护性,例如"redis.conf"或"redis.properties"。但是,如果你想要使用其他的文件名,仍然是可以的。 需要注意的是,使用Jedis连接Redis时,默认会去寻找名为"redis.conf"的配置文件。如果你的配置文件命名不是"redis.conf",则需要在代码中明确指定配置文件的路径和文件名。通过使用Jedis的`JedisPoolConfig`类,可以设置`config`属性并调用`setConfigFile(String configFile)`方法来指定自定义配置文件的路径和文件名。 总之,Jedis并不要求配置文件的文件名是固定的,可以根据需要进行自定义。无论使用什么文件名,重要的是保证配置文件的正确性和有效性,以确保与Redis服务器的正常连接和数据操作。 ### 回答3: Jedis是一个用于JavaRedis客户端库,它使用配置文件来连接和配置Redis服务器。Jedis配置文件的文件名不是固定的,可以根据用户的需求和习惯进行命名。 尽管Jedis没有要求特定的配置文件名,但是通常情况下,我们会将其命名为"jedis.properties"或者"redis.properties"。这是因为通常情况下,我们希望把与Redis相关的配置信息放在同一命名规范下,以便于代码维护和管理。 另外,即使文件名可以根据需要自定义,但是在Jedis连接Redis服务器时,需要指定配置文件的路径。这可以通过代码中的配置文件路径参数来实现,或者将配置文件放置在默认的Classpath路径下,例如在项目的src/main/resources文件夹中。 总而言之,Jedis配置文件的文件名不是固定的,可以根据个人或项目的偏好来命名。重要的是将配置文件放置在正确的路径,并确保在连接Redis服务器时正确指定配置文件。这样可以更好地管理和维护与Redis相关的配置信息。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值