admin管理员组文章数量:1794759
jedis入门
目录
一、jedis
1.Jedis简介
2.导包
3.官方文档
4.常用API
5.基本操作
6.jedis连接池的使用
7.工具类的编写
8.简单的使用
9.JedisPoolConfig的配置参数
一、Jedis 1.Jedis简介Redis不仅是使用命令来操作,现在基本上主流的语言都有客户端支持,比如java、C、C#、C++、php、Node.js、Go等。 在官方网站里列一些Java的客户端,有Jedis、Redisson、Jredis、JDBC-Redis、等其中官方推荐使用Jedis和Redisson。
2.导包 3.官方文档xetorthio.github.io/jedis/
4.常用API 5.基本操作 @Test public void testJedisSingle(){ //1 设置ip地址和端口 Jedis jedis = new Jedis("localhost", 6379); //2 设置数据 jedis.set("name", "itheima"); //3 获得数据 String name = jedis.get("name"); System.out.println(name); //4 释放资源 jedis.close(); } 6.jedis连接池的使用jedis连接资源的创建与销毁是很消耗程序性能,所以jedis为我们提供了jedis的池化技术,jedisPool在创建时初始化一些连接资源存储到连接池中,使用jedis连接资源时不需要创建,而是从连接池中获取一个资源进行redis的操作,使用完毕后,不需要销毁该jedis连接资源,而是将该资源归还给连接池,供其他请求使用。
7.工具类的编写 package com.itheima.utils; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; public class JedisPoolUtils { 被volatile修饰的变量不会被本地线程缓存,对该变量的读写都是直接操作共享内存。 private static volatile JedisPool jedisPool; private JedisPoolUtils() { } //获得连接池对象 public static JedisPool getJedisPoolInstance(){ if(jedisPool==null){ synchronized (JedisPoolUtils.class){ if(jedisPool==null){ JedisPoolConfig config = new JedisPoolConfig(); config.setMaxActive(30); config.setMaxIdle(10); jedisPool=new JedisPool(config,"127.0.0.1",6379); } } } return jedisPool; } //归还连接 public static void release(JedisPool jedisPool,Jedis jedis){ if(jedis!=null){ jedisPool.returnResource(jedis); } } } 8.简单的使用 public static void main(String[] args) { JedisPool pool = JedisPoolUtils.getJedisPoolInstance(); JedisPool pool1 = JedisPoolUtils.getJedisPoolInstance(); System.out.println(pool==pool1);//true,为同一连接池 //得到连接 Jedis resource = pool.getResource(); System.out.println(resource.get("balance")); JedisPoolUtils.release(pool,resource); } 9.JedisPoolConfig的配置参数(1)maxActive:控制一个pool可分配多少个jedis实例,通过pool.getResource()来获取;如果赋值为-1,则表示不限制;如果pool已经分配了maxActive个jedis实例,则此时pool的状态为exhausted。 (2)maxIdle:控制一个pool最多有多少个状态为idle(空闲)的jedis实例; (3)whenExhaustedAction:表示当pool中的jedis实例都被allocated完时,pool要采取的操作;默认有三种。 (4)maxWait:表示当borrow一个jedis实例时,最大的等待时间,如果超过等待时间,则直接抛JedisConnectionException; (5)testOnBorrow:获得一个jedis实例的时候是否检查连接可用性(ping());如果为true,则得到的jedis实例均是可用的; (6)testOnReturn:return 一个jedis实例给pool时,是否检查连接可用性(ping()); (7)testWhileIdle:如果为true,表示有一个idle object evitor线程对idle object进行扫描,如果validate失败,此object会被从pool中drop掉;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义; (8)timeBetweenEvictionRunsMillis:表示idle object evitor两次扫描之间要sleep的毫秒数; (9)numTestsPerEvictionRun:表示idle object evitor每次扫描的最多的对象数; (10)minEvictableIdleTimeMillis:表示一个对象至少停留在idle状态的最短时间,然后才能被idle object evitor扫描并驱逐;这一项只有在timeBetweenEvictionRunsMillis大于0时才有意义; (11)softMinEvictableIdleTimeMillis:在minEvictableIdleTimeMillis基础上,加入了至少minIdle个对象已经在pool里面了。如果为-1,evicted不会根据idle time驱逐任何对象。如果minEvictableIdleTimeMillis>0,则此项设置无意义,且只有在timeBetweenEvictionRunsMillis大于0时才有意义; (12)lifo:borrowObject返回对象时,是采用DEFAULT_LIFO(last in first out,即类似cache的最频繁使用队列),如果为False,则表示FIFO队列; ======================================================================================================= 其中JedisPoolConfig对一些参数的默认设置如下:
testWhileIdle=true minEvictableIdleTimeMills=60000 timeBetweenEvictionRunsMillis=30000 numTestsPerEvictionRun=-1
版权声明:本文标题:jedis入门 内容由林淑君副主任自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.xiehuijuan.com/baike/1686648041a90329.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论