java客户端Jedis操作Redis Sentinel 连接池的实现方法

网友投稿 382 2023-05-31


java客户端Jedis操作Redis Sentinel 连接池的实现方法

pom.xml配置

org.springframework.data

spring-data-redis

1.0.2.RELEASE

redis.clients

jedis

2.7.0

jar

compile

?

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

6fdNfEzmmff8

69

70

71

72

73

74

75

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99 public class JedisPoolUtil {

private static JedisSentinelPool pool = null;

public static Properties getJedisProperties() {

Properties config = new Properties();

InputStream is = null;

try {

is = JedisPoolUtil.class.getClassLoader().getResourceAsStream("cacheConfig.properties");

config.load(is);

} catch (IOException e) {

logger.error("", e);

} finally {

if (is != null) {

try {

is.close();

} catch (IOException e) {

logger.error("", e);

}

}

}

return config;

}

/**

* 创建连接池

*

*/

private static void createJedisPool() {

// 建立连接池配置参数

JedisPoolConfig config = new JedisPoolConfig();

Properties prop = getJedisProperties();

// 设置最大连接数

config.setMaxTotal(StringUtil.nullToInteger(prop.getProperty("MAX_ACTIVE")));

// 设置最大阻塞时间,记住是毫秒数milliseconds

config.setMaxWaitMillis(StringUtil.nullToInteger(prop.getProperty("MAX_WAIT")));

// 设置空间连接

config.setMaxIdle(StringUtil.nullToInteger(prop.getProperty("MAX_IDLE")));

// jedis实例是否可用

boolean borrow = prop.getProperty("TEST_ON_BORROW") == "false" ? false : true;

config.setTestOnBorrow(borrow);

// 创建连接池

// pool = new JedisPool(config, prop.getProperty("ADDR"), StringUtil.nullToInteger(prop.getProperty("PORT")), StringUtil.nullToInteger(prop.getProperty("TIMEOUT")));// 线程数量限制,IP地址,端口,超时时间

//获取redis密码

String password = StringUtil.nullToString(prop.getProperty("PASSWORD"));

String masterName = "mymaster";

Set sentinels = new HashSet();

sentinels.add("192.168.137.128:26379");

sentinels.add("192.168.137.128:26380");

sentinels.add("192.168.137.128:26381");

pool = new JedisSentinelPool(masterName, sentinels, config);

}

/**

* 在多线程环境同步初始化

*/

private static synchronized void poolInit() {

if (pool == null)

createJedisPool();

}

/**

* 获取一个jedis 对象

*

* @return

*/

public static Jedis getJedis() {

if (pool == null)

poolInit();

return pool.getResource();

}

/**

* 释放一个连接

*

* @param jedis

*/

public static void returnRes(Jedis jedis) {

pool.returnResource(jedis);

}

/**

* 销毁一个连接

*

* @param jedis

*/

public static void returnBrokenRes(Jedis jedis) {

pool.returnBrokenResource(jedis);

}

public static void main(String[] args){

Jedis jedis=getJedis();

}

}


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:详解Java中接口的定义与实例代码
下一篇:详解在spring boot中配置多个DispatcherServlet
相关文章

 发表评论

暂时没有评论,来抢沙发吧~