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版权协议,转载请附上原文出处链接及本声明。
