redis自学4----jedis以及对应连接池

1.jedis的主要功能

  • 属性配置类:JedisPoolConfig => GenericObjectPool => BaseGenericObjectPool
  • maxTotal:连接池最大的连接数量,默认为8

2.jedis的部分操作api

2.1 String类型

  • set key value [EX seconds] [PX milliseconds] [NX|XX]:
	// 设置String类型的key,超时时间为10秒
	jedis.set("a", "abc", "nx", "ex", 10);
  • mset/mget命令
	String mset = jedis.mset("ma", "123", "mb", "321");// 批量设置值
    System.out.println("mset = " + mset);// OK
    List<String> mget = jedis.mget("ma", "mb");// 批量获取值
    System.out.println("mget = " +mget);// [123, 321]
  • incr/incrBy/incrByFloat/decr/decrBy
	jedis.set("a", "12");
	System.out.println(jedis.incr("a"));// 13
	System.out.println(jedis.incrByFloat("a", 2.3));// 15.3
	System.out.println(jedis.decrBy("a", 11));// exception,key对应的值必须为整型才能使用这一类方法
  • strLen:value字节的长度
	jedis.set("1", "自学jedis");// 汉字占三个字节
	System.out.println("自学jedis".getBytes().length);//11
	System.out.println(jedis.strlen("1"));//11

2.2 List类型

  • lpush/lpushx/lrange
	Long result = jedis.lpush("list", "a", "b", "c");
	System.out.println(result);// 3
	Long result1 = jedis.lpushx("list1", "a");
	System.out.println(result1);// 0
	List<String> list = jedis.lrange("list", 0, -1);
	System.out.println(list);// [c, b, a]
  • rpoplpush
	jedis.lpush("list", "a", "b", "c");
	jedis.lpush("list1", "d", "e", "f");
	jedis.rpoplpush("list", "list1");
	System.out.println(jedis.lrange("list", 0, -1));// [c, b]
	System.out.println(jedis.lrange("list1", 0, -1));// [a, f, e, d]
  • linsert
	jedis.lpush("list", "a", "b", "c");
	Long result = jedis.linsert("list", BinaryClient.LIST_POSITION.AFTER, "b", "d");
	System.out.println(result);// 4
	System.out.println(jedis.lrange("list", 0, -1));// [c, b, d, a]

2.3 Set类型

  • sadd/smembers
	Long result = jedis.sadd("set", "a", "b", "c", "a");
	System.out.println(result);// 3
	Set<String> set = jedis.smembers("set");
	System.out.println(set);// [b, c, a]

smove

	jedis.sadd("set1", "a", "c", "b", "a");
	jedis.sadd("set2", "d", "f", "e");
	Long result = jedis.smove("set1", "set2", "a");
	System.out.println(result);// 1
	System.out.println(jedis.smembers("set1"));// [b, c]
	System.out.println(jedis.smembers("set2"));// [e, a, d, f]
  • sinter/sinterstore
	jedis.sadd("set1", "a", "b", "c");
	jedis.sadd("set2", "b", "e", "f");
	Set<String> interSet = jedis.sinter("set1", "set2");
	System.out.println(interSet);// [b]
	jedis.sinterstore("set3", "set1", "set2");
	System.out.println(jedis.smembers("set3"));// [b]

2.4 Hash类型

  • hset/hget/hmset/hmget
   Long result = jedis.hset("hash", "field1", "value1");
    System.out.println(result);// 1
    System.out.println(jedis.hget("hash", "field1"));// value1
    Map<String, String> kvMap = new HashMap<>();
    kvMap.put("field2", "value2");
    kvMap.put("field3", "value3");
    String result1 = jedis.hmset("hash", kvMap);
    System.out.println(result1);// OK
    List<String> list = jedis.hmget("hash", "field1", "field2", "field3");
    System.out.println(list);// [value1, value2, value3]
  • hgetAll/keys/vals
	Map<String, String> map = jedis.hgetAll("hash");
	System.out.println(map);// {field3=value3, field2=value2, field1=value1}
	Set<String> keys = jedis.hkeys("hash");
	System.out.println(keys);// [field3, field2, field1]
	List<String> vals = jedis.hvals("hash");
	System.out.println(vals);// [value1, value3, value2] 

2.5 Zset类型

  • zadd/zrangewithscores
    Map<String, Double> members = new HashMap<>();
    members.put("a", 10d);
    members.put("b", 8d);
    members.put("c", 20d);
    ZAddParams zAddParams = ZAddParams.zAddParams().nx().ch();
    Long result = jedis.zadd("zset1", members, zAddParams);
    System.out.println(result);// 3
    Set<Tuple> zresult = jedis.zrangeWithScores("zset1", 0, -1);
    System.out.println(zresult);// [[[98],8.0], [[97],10.0], [[99],20.0]]
  • zscore
	System.out.println(jedis.zrangeWithScores("zset1", 0, -1));// [[[98],8.0], [[97],10.0], [[99],20.0]]
	Double result = jedis.zscore("zset1", "a");
	System.out.println(result);// 10.0
	Double result1 = jedis.zscore("zset1", "d");
	System.out.println(result1);// null

3.jedis连接池

3.1 JedisPoolConfig

JedisPoolConfig配置类

  • testWhileIdle:如果为true,表示有一个idle object evitor线程对idle object进行扫描,如果validate失败,此object会被从pool中drop掉;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义;默认是false
  • minEvictableIdleTimeMillis:连接空闲的最小时间,达到此值后空闲连接将可能会被移除。默认为1000L * 60L * 30L;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义
  • timeBetweenEvictionRunsMillis:空闲链接检测线程检测的周期,毫秒数。如果为负值,表示不运行检测线程。默认为-1
  • numTestsPerEvictionRun:在每次空闲连接回收器线程(如果有)运行时检查的连接数量,默认为3

3.2 GenericObjectPoolConfig

GenericObjectPoolConfig配置类

  • maxTotal:连接池中最大连接数,默认为8
  • maxIdle:连接池中最大空闲的连接数,默认为8
  • minIdle:连接池中最少空闲的连接数,默认为0

3.3 BaseObjectPoolConfig

BaseObjectPoolConfig配置类

  • lifo:objectPool中idle列表是双端队列,设定是否"先进先出"
  • fairness:当从池中获取连接或者把连接还回池中时,是否采用java.util.concurrent.locks.ReentrantLock.ReentrantLock提供的公平锁机制,默认为false
  • maxWaitMillis:当连接池中资源用完时,设置的最大等待时间,等待时间超过设置时间则报异常,默认-1表示永远不会超时
  • softMinEvictableIdleTimeMillis:连接空闲的最小时间,达到此值后空闲链接将会被移除,且保留minIdle个空闲连接数。默认为1000L * 60L * 30L
  • evictionPolicyClassName:evict策略的类名(驱逐策略)
  • testOnCreate:从pooledObjectFactory创建对象添加到objectPool时,是否进行有效性验证,默认为false
  • testOnBorrow:objectPool"借"出pooledObject时,是否进行有效性验证,默认为false
  • testOnReturn:pooledObject用完了"还"给objectPool时,是否进行有效性验证,默认为false
  • testWhileIdle:返回evictor(驱逐者线程)是否需要对处于idle(空闲)状态下的pooledObject进行validate操作,默认为false,设置为true时,如果校验为无效,则进行移除
  • blockWhenExhausted:objectPool"借"出pooledObject时,当active数量为max时,是否阻塞等待一段时间,当这个值设置为true时,maxWaitMillis设置才会生效;设置为false,当连接池没有资源时,会立即抛出异常。默认为true
  • jmxEnabled:是否启用JMX,默认为true
  • jmxNamePrefix:JMX前缀名,默认为pool
  • jmxNameBase:JMX基础名
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值