3 Redis 客户端操作

  带大家过一遍Redis的API之后,这部分非常非常简单了。所有语言的操作,其实都是对Redis API的封装,封装前的东西你都知道了,封装后的不是易如反掌?

  以Java为例吧,基于Java语言的客户端比较热的是Jedis

  在连接方面有两种方式,一种是直连、一种是线程池(一般都要用到线程池)

直连方式
// 1.生成一个 Jedis对象,这个对象负责和指定Reds节点进行通信
Jedis jedis = new Jedis("localhost", 6379);
// Sting  set get 操作
jedis.set("Jedis", "hello jedis!");
jedis.get("Jedis");
// 对结果进行自增
jedis.incr("counter")

  构造方法最多有四个参数

使用场景

hash操作
jedis hset("myhash",f1",v1);
jedis hset("myhash",f2,v2);
// 输出结果:{1=v1,f2=V2}
jedis.hgetAll(myhash");

  是不是很熟悉,其他的类似。

Jedis连接池

  直连的弊端很明显:消耗资源。如果在不同方面,频繁用到Redis,编写程序也很麻烦。 使用场景

  所以,连接池是非常重要的的。 使用场景

方案对比
方案 优点 缺点
直连 简单方便;适用于少量长期连接的场景 1.存在每次新建/关闭TCP开销;2.资源无法控制,存在连接泄露的可能;3.Jedis对象线程不安全
连接池 Jedis预先生成,降低开销使用连接池的形式保护和控制资源的使用 相对于直连,使用相对麻烦尤其在资源的管理上需要很多参数来保证,一旦规划不合理也会出现问题。
// 初始化 Jedis连接池,通常来讲 Jedis Pool是单例的。
 GenericObjectPoolConf poolConfig new GenericObjectPoolConfigO Jedis Pool jedis Pool new JedisPool(poolConfig, 127.0.0. 1",6379);

  简单使用:

Jedis jedis = null;
try{
    //1.从连接池获取 jedis对象
    jedis = jedisPool.getResource();
    //2.执行操作
    jedis set(hello","world");
    } catch(Exception e){
        eprintStackTrace();
    }
    finally {
        if (jedis != null)
        //如果使用 JedisPool,cose操作不是关闭连接,代表归还连接池jedis closed
        jedis.close();
    }
}
版权声明: 本文为智客工坊「沉晓」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。

results matching ""

    No results matching ""