• 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;

  • 相关阅读:
    golang语言中os/signal包的学习与使用
    golang语言中os/exec包的学习与使用
    go语言使用go-sciter创建桌面应用(七) view对象常用方法,文件选择,窗口弹出,请求
    go语言使用go-sciter创建桌面应用(六) Element元素操作和Event事件响应
    go语言使用go-sciter创建桌面应用(五) 加载元素资源
    go语言使用go-sciter创建桌面应用(四) 固定窗口大小
    go语言使用go-sciter创建桌面应用(三) 事件处理,函数与方法定义,go与tiscript之间相互调用
    go语言使用go-sciter创建桌面应用(二) ui元素查找,增加,删除,修改
    go语言使用go-sciter创建桌面应用(一) 简单的通过html,css写ui
    go语言net包rpc远程调用的使用
  • 原文地址:https://www.cnblogs.com/gg128/p/9526293.html
Copyright © 2020-2023  润新知