Redis学习之路-入门3-jedis

本文详细介绍Jedis类库操作Redis数据库的各种方法,包括基本连接、数据类型操作如String、Hash、List、Set、SortedSet,以及如何利用JedisPool进行连接池管理,提升效率。
摘要由CSDN通过智能技术生成

Jedis是一个java操作redis数据库的类库,我们来简单看下jedis操作redis的具体功能实现
#jedis连接redis

   // 连接测试
    private static void test1(){
        // 如果使用空参构造,默认值 "localhost",6379端口
        Jedis jedis = new Jedis("127.0.0.1",6379);
        jedis.set("jName","lisi");
        jedis.close();
    }

#jedis操作各种redis中的数据结构

  1. 操作String
    private static void test2(){
        Jedis jedis = new Jedis();
        jedis.set("jName","lisi");
        String name = jedis.get("jName");
        System.out.println("name = " + name);
        jedis.close();
    }
  // 使用setex设置字符过期时间
    private static void test3(){
        Jedis jedis = new Jedis();
        String jCode = "602501";
        // 设置验证码过期时间
        jedis.setex("activeCode",10,jCode);
        String code = jedis.get("activeCode");
        System.out.println("code = " + code);
        jedis.close();
    }
  1. 操作hash
 private static void test4(){
        Jedis jedis = new Jedis();
        jedis.hset("user","name","emonH");
        jedis.hset("user","age","28");
        jedis.hset("user","job","java");
        String name = jedis.hget("user","name");
        System.out.println("name=" + name);
        Map<String,String> user = jedis.hgetAll("user");
        Set<String> keys = user.keySet();
        for (String str:keys) {
            System.out.println(str + ":" + user.get(str));
        }
        jedis.hdel("user","name");
        user = jedis.hgetAll("user");
        System.out.println("keys = " + user);
        jedis.close();
    }
  1. 操作list
private static void test5(){
        Jedis jedis = new Jedis();

        jedis.lpush("jList","a","b","c");
        List<String> jList = jedis.lrange("jList",0,-1);
        System.out.println("jList = " + jList);

        jedis.rpush("jList","a","b","c");
        jList = jedis.lrange("jList",0,-1);
        System.out.println("jList = " + jList);

        jedis.lpop("jList");
        jList = jedis.lrange("jList",0,-1);
        System.out.println("jList = " + jList);

        jedis.rpop("jList");
        jList = jedis.lrange("jList",0,-1);
        System.out.println("jList = " + jList);

        jedis.close();
    }
  1. 操作set
private static void test6(){
        Jedis jedis = new Jedis();
        jedis.sadd("jSet","aa","aa","cd","df");
        Set<String> jSets = jedis.smembers("jSet");
        System.out.println("jSets = " + jSets);


        jedis.srem("jSet","aa");
        jSets = jedis.smembers("jSet");
        System.out.println("jSets = " + jSets);


        jedis.spop("jSet");
        jSets = jedis.smembers("jSet");
        System.out.println("jSets = " + jSets);

        jedis.close();
    }
  1. 操作 sortedset
private static void test7(){
        Jedis jedis = new Jedis();
        jedis.zadd("zList",1,"java");
        jedis.zadd("zList",2,"PHP");
        jedis.zadd("zList",3,"C++");
        jedis.zadd("zList",1,"C#");

        Set<String> zList = jedis.zrange("zList",0,-1);
        System.out.println("zList = " + zList);

        jedis.zrem("zList","java");
        zList = jedis.zrange("zList",0,-1);
        System.out.println("zList = " + zList);
        jedis.close();
    }

#jedis连接池:JedisPool

  1. 创建JedisPool连接池对象
  2. 调用方法 getResource()方法获取Jedis连接
  • 我们列出jedis连接池所有配置项到redis.properties中,内容如下:

// 最大活动对象数
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=127.0.0.1
// redis服务器的Port
redis.port=6379

  • 我们创建一个工具类获取连接池对象
public class JedisPoorUtil {
    private static JedisPool jedisPool;
    static{
        InputStream in = JedisPoorUtil.class.getClassLoader().getResourceAsStream("jedis.properties");
        Properties po = new Properties();
        try {
            po.load(in);
            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxIdle(Integer.parseInt(po.getProperty("redis.pool.maxIdle")));
            config.setMaxTotal(Integer.parseInt(po.getProperty("redis.pool.maxTotal")));
            jedisPool = new JedisPool(config,po.getProperty("redis.ip"),Integer.parseInt(po.getProperty("redis.port")));
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

    public static JedisPool getJedisPool(){
        return jedisPool;
    }
}
  • 接下来就是使用连接池对象
private static void test8(){
        Jedis jedis = JedisPoorUtil.getJedisPool().getResource();
        jedis.set("jPoor","test cuccess");
        System.out.println("zList = " + jedis.get("jPoor"));

        jedis.close();
    }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值