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