zoukankan      html  css  js  c++  java
  • Jedis

    Java客户端 Jedis
      Jedis: 一款java操作redis数据库的工具.
      使用步骤:
        1. 下载jedis的jar包
        2. 使用
          //1. 获取连接
          Jedis jedis = new Jedis("localhost",6379);
          //2. 操作
          jedis.set("username","zhangsan");
          //3. 关闭连接
          jedis.close();

          Jedis操作各种redis中的数据结构
            1) 字符串类型 string
              set
              get

            2) 哈希类型 hash : map格式
              hset
              hget
              hgetAll

            3) 列表类型 list : linkedlist格式。支持重复元素
              lpush / rpush
              lpop / rpop
              lrange start end : 范围获取

            4) 集合类型 set : 不允许重复元素
              sadd
              smembers:获取所有元素

            5) 有序集合类型 sortedset:不允许重复元素,且元素有顺序
              zadd
              zrange

    package com.fgy.jedis.test;
    
    import org.junit.After;
    import org.junit.Before;
    import org.junit.Test;
    import redis.clients.jedis.Jedis;
    
    import java.util.List;
    import java.util.Map;
    import java.util.Set;
    
    public class JedisTest {
    
        private Jedis jedis;
    
        @Before
        public void before() {
            jedis = new Jedis();
            // jedis = new Jedis("localhost", 6379);
            jedis.auth("root");
        }
    
        @After
        public void after() {
            if (jedis != null) {
                jedis.close();
            }
        }
    
        @Test
        public void testString() {
            jedis.set("age", "10");
            String age = jedis.get("age");
            System.out.println(age);
            // 可以指定过期时间的 key value
            jedis.setex("activecode", 20, "hehe"); // 20秒过期
    
        }
    
        @Test
        public void testHash() {
            jedis.hset("myHash", "name", "张三");
            String name = jedis.hget("myHash", "name");
            System.out.println(name);
            System.out.println("------------------------------------");
            jedis.hset("myHash", "gender", "男");
    
            Map<String, String> map = jedis.hgetAll("myHash");
            Set<Map.Entry<String, String>> entrySet = map.entrySet();
            for (Map.Entry<String, String> entry : entrySet) {
                System.out.println(entry.getKey() + "---" + entry.getValue());
            }
            System.out.println("------------------------------------");
    
            Long hdel = jedis.hdel("myHash", "name");
            System.out.println(hdel);
        }
    
        @Test
        public void testList() {
            jedis.lpush("myList", "a", "b", "c");
            jedis.rpush("myList", "a", "b", "c");
            List<String> list = jedis.lrange("myList", 0, -1);
            for (String s : list) {
                System.out.println(s);
            }
    
            String element1 = jedis.rpop("myList");
            String element2 = jedis.lpop("myList");
            System.out.println(element1 + "--" + element2);
        }
    
        @Test
        public void testSet() {
            jedis.sadd("mySet", "lily", "zhangsan");
            Set<String> mySet = jedis.smembers("mySet");
            for (String s : mySet) {
                System.out.println(s);
            }
            System.out.println("------------------------");
    
            Long srem = jedis.srem("mySet", "zhangsan");
            System.out.println(srem);
        }
    
        @Test
        public void testSortedset() {
            jedis.zadd("mySortedset", 3, "c");
            jedis.zadd("mySortedset", 2, "b");
            jedis.zadd("mySortedset", 1, "a");
            Set<String> set = jedis.zrange("mySortedset", 0, -1);
            for (String s : set) {
                System.out.println(s);
            }
    
            Long zrem = jedis.zrem("mySortedset", "a");
            System.out.println(zrem);
        }
    
        @Test
        public void testCommon() {
            Set<String> set = jedis.keys("*");
            for (String s : set) {
                System.out.print(s);
                String type = jedis.type(s);
                System.out.println("   " + type);
                jedis.del(s);
            }
        }
    }

      jedis连接池: JedisPool
        使用:
          1. 创建JedisPool连接池对象
          2. 调用方法 getResource()方法获取Jedis连接
        //0.创建一个配置对象
        JedisPoolConfig config = new JedisPoolConfig();
        config.setMaxTotal(50);
        config.setMaxIdle(10);
        //1.创建Jedis连接池对象
        JedisPool jedisPool = new JedisPool(config,"localhost",6379);
        //2.获取连接
        Jedis jedis = jedisPool.getResource();
        //3. 使用
        jedis.set("hehe","heihei");
        //4. 关闭 归还到连接池中
        jedis.close();

    package com.fgy.jedis.test;
    
    import redis.clients.jedis.Jedis;
    import redis.clients.jedis.JedisPool;
    import redis.clients.jedis.JedisPoolConfig;
    
    /**
     * jedis连接池的使用
     */
    public class JedisPoolTest {
        public static void main(String[] args) {
            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxTotal(50); // 设置最大连接数
            config.setMaxIdle(10); // 设置最大空闲连接
    
            JedisPool jedisPool = new JedisPool(config, "localhost", 6379, 2000, "root");
            Jedis jedis = jedisPool.getResource();
            jedis.set("name", "lily");
            jedis.close();
        }
    }

    jedis详细配置

    #最大活动对象数     

    redis.pool.maxTotal=1000    

    #最大能够保持idel状态的对象数      

    redis.pool.maxIdle=100  

    #最小能够保持idel状态的对象数   

    redis.pool.minIdle=50    

    #当池内没有返回对象时,最大等待时间    

    redis.pool.maxWaitMillis=10000    

    #当调用borrow Object方法时,是否进行有效性检查    

    redis.pool.testOnBorrow=true    

    #当调用return Object方法时,是否进行有效性检查    

    redis.pool.testOnReturn=true  

    #“空闲链接”检测线程,检测的周期,毫秒数。如果为负值,表示不运行“检测线程”。默认为-1.  

    redis.pool.timeBetweenEvictionRunsMillis=30000  

    #向调用者输出“链接”对象时,是否检测它的空闲超时;  

    redis.pool.testWhileIdle=true  

    # 对于“空闲链接”检测线程而言,每次检测的链接资源的个数。默认为3.  

    redis.pool.numTestsPerEvictionRun=50  

    #redis服务器的IP    

    redis.ip=xxxxxx  

    #redis服务器的Port    

    redis.port=6379

  • 相关阅读:
    (ubuntu ufw)My firewall is blocking network connections from the docker container to outside
    nginx repos
    Xvfb新建虚拟X窗口,通过x11vnc启动VNC Server并转发Xvfb启动的虚拟窗口
    xdotool xdotool模拟击键和鼠标移动--CutyCapt是一个截图工具,xvfb-run
    zabbix debug and vulnerability https://www.zabbix.com/documentation/3.0/manual/concepts/sender
    初探 Nginx 架构
    Nginx缓存
    Nginx代理功能与负载均衡详解
    CentOS 7 部署 nginx-1.14.2
    LDAP第三天 MySQL+LDAP 安装
  • 原文地址:https://www.cnblogs.com/roadlandscape/p/12244393.html
Copyright © 2011-2022 走看看