zoukankan      html  css  js  c++  java
  • redis(3)redis的基础入门(java)

    1.java连接redis

    Jedis jedis = new Jedis("192.168.1.102", 6379);//报错,拒绝连接

    解决方案:

    关闭linux防火墙,redis的配置文件(redis.config)的第79行需要注释掉bind 127.0.0.1(#bind 127.0.0.1),第88行protected-mode yes 默认的yes改为no。

    2.api

    与linux基本一样;

    <dependency>
    			<groupId>redis.clients</groupId>
    			<artifactId>jedis</artifactId>
    			<version>2.9.0</version>
    </dependency>
    
    public class jedisTest1 {
      public static void main(String[] args) {
    	 Jedis jedis = new Jedis("192.168.1.102", 6379);//jedis.auth("密码")//redis设置密码
    System.out.println(jedis.ping());//ping,默认0号库 jedis.set("k1", "v1");//set System.out.println(jedis.get("k1"));//get jedis.select(2);//切换库 System.out.println(jedis.exists("k1"));//exists jedis.select(0); Set<String> keys = jedis.keys("*");//keys * System.out.println(keys.size()); } }

    3.事务与linux基本类似

    public boolean transMethod() throws InterruptedException {
    	     Jedis jedis = new Jedis("127.0.0.1", 6379);
    	     int k1;
    	     int k2;
    	     int k3 = 10;
    	     jedis.watch("k1");
    	     Thread.sleep(5000);
    	     if (k1 < k3) {
    	       jedis.unwatch();
    	       return false;
    	     } else {
    	       Transaction transaction = jedis.multi();
    	       transaction.decrBy("k1", k3);
    	       transaction.incrBy("k2", k3);
    	       transaction.exec();//不论成功或者失败都会取消watch
    	       k1 = Integer.parseInt(jedis.get("k1"));
    	       k2 = Integer.parseInt(jedis.get("k2"));
    	       return true;
    	     }
     }
    

    4.JedisPoolConfig

    public class JedisPoolUtil {
    	private static volatile JedisPool jedisPool = null;
    
    	private JedisPoolUtil() {
    	}
    
    	public static JedisPool getJedisPoolInstance() {
    		//利用可见性在这里优化性能
    		if (null == jedisPool) {
    			synchronized (JedisPoolUtil.class) {
    				if (null == jedisPool) {
    					JedisPoolConfig poolConfig = new JedisPoolConfig();
    					poolConfig.setMaxTotal(1000);;
    					poolConfig.setMaxIdle(32);
    					poolConfig.setMaxWaitMillis(10000);
    					// 获取连接时检验有效性
    					poolConfig.setTestOnBorrow(true);
    
    					jedisPool = new JedisPool(poolConfig, "127.0.0.1", 6379);
    				}
    			}
    		}
    		return jedisPool;
    	}
    }
    

    5.JedisPoolConfig配置

    //连接耗尽时是否阻塞, false报异常,ture阻塞直到超时, 默认true

    config.setBlockWhenExhausted(true);

    //设置的逐出策略类名, 默认DefaultEvictionPolicy(当连接超过最大空闲时间,或连接数超过最大空闲连接数)

    config.setEvictionPolicyClassName("org.apache.commons.pool2.impl.DefaultEvictionPolicy");

    //是否启用pool的jmx管理功能, 默认true

    config.setJmxEnabled(true);

    //MBean ObjectName = new ObjectName("org.apache.commons.pool2:type=GenericObjectPool,name=" + "pool" + i); 默 认为"pool", JMX不熟,具体不知道是干啥的...默认就好.

    config.setJmxNamePrefix("pool");

    //是否启用后进先出, 默认true

    config.setLifo(true);

    //最大空闲连接数, 默认8个

    config.setMaxIdle(8);

    //最大连接数, 默认8个

    config.setMaxTotal(8);

    //获取连接时的最大等待毫秒数(如果设置为阻塞时BlockWhenExhausted),如果超时就抛异常, 小于零:阻塞不确定的时间,  默认-1

    config.setMaxWaitMillis(-1);

    //逐出连接的最小空闲时间 默认1800000毫秒(30分钟)

    config.setMinEvictableIdleTimeMillis(1800000);

    //最小空闲连接数, 默认0

    config.setMinIdle(0);

    //每次逐出检查时 逐出的最大数目 如果为负数就是 : 1/abs(n), 默认3

    config.setNumTestsPerEvictionRun(3);

    //对象空闲多久后逐出, 当空闲时间>该值 且 空闲连接>最大空闲数 时直接逐出,不再根据MinEvictableIdleTimeMillis判断  (默认逐出策略)   

    config.setSoftMinEvictableIdleTimeMillis(1800000);

    //在获取连接的时候检查有效性, 默认false

    config.setTestOnBorrow(false);

    //在空闲时检查有效性, 默认false

    config.setTestWhileIdle(false);

    //逐出扫描的时间间隔(毫秒) 如果为负数,则不运行逐出线程, 默认-1

    config.setTimeBetweenEvictionRunsMillis(-1);

     //读取超时

    int timeout=3000;

  • 相关阅读:
    Microsoft Enterprise Library 5.0 系列(二) Cryptography Application Block (初级)
    Microsoft Enterprise Library 5.0 系列(五) Data Access Application Block
    Microsoft Enterprise Library 5.0 系列(八) Unity Dependency Injection and Interception
    Microsoft Enterprise Library 5.0 系列(九) Policy Injection Application Block
    Microsoft Enterprise Library 5.0 系列(三) Validation Application Block (高级)
    软件研发打油诗祝大家节日快乐
    从挖井的故事中想到开发管理中最容易忽视的几个简单道理
    ITIL管理思想的执行工具发布
    管理类软件设计“渔”之演化
    20070926日下午工作流与ITILQQ群 事件管理 讨论聊天记录
  • 原文地址:https://www.cnblogs.com/gg128/p/9526293.html
Copyright © 2011-2022 走看看