Jedis实现redis操作总结
redis,经常被用到的场景就是缓存。适合放一些频繁使用的数据,加快访问读取的速度。
一、实现步骤
Java中,可通过Jedis实现redis的连接和操作。简单的直接单连接方式主要步骤有:
1、连接redis:
Jedis jedis = new Jedis("ip", "port");
2、切换到指定的数据库:
jedis.select(4)
进入redis,一般都是默认的0数据库,redis支持16个数据库,通过id设置,通过select()指定数据库。
3、操作数据:根据数据的类型进行相应的操作,可通过type(key)查询值的类型。
直连方式,每次都要建立连接,比较耗费数据库资源。实际的应用场景中,一般会通过Jedis连接池,连接池可以预先初始化Jedis连接,每次操作,只需要从连接池借用,用完归还就可以。下面主要是总结这两种方式的实现:
二、例子:
1、直连方式:
Jedis jedis = new Jedis("ip", "port"); jedis.auth("passport"); jedis.select(4); //切换到指定库 jedis.del(new String[] {key1, key2}); //String类型,删除key1/key2对应的缓存 jedis.close()
redis 中其他几种列表、散列、集合等类型数据,也有相应的操作。
2、连接池
获取Jedis对象会直接从连接池获取。
static { JedisPoolConfig config = new JedisPoolConfig(); config.setMaxTotal(Integer.valueOf(MAX_TOTAL)); //配置文件中读取 config.setMaxIdle(Integer.valueOf(MAX_IDLE)); config.setTestOnBorrow(TEST_ON_BORROW); jedisPool = new JedisPool(config, "addr", "port","timeout","password", "database"); //配置文件中读取 } public static void deleteCache(String key1, String key2) { Jedis jedis = jedisPool.getResource(); try { jedis.del(new String[] {key1, key2}); } catch (Exception e) { e.printStackTrace(); } finally { if (jedis != null) { try { jedis.close(); } catch (Exception e) { e.printStackTrace(); } } } }
可以看到,finally里中还是会close(), 但这里不再是关闭连接,而是归还。
public void close() { if (this.dataSource != null) { if (this.client.isBroken()) { this.dataSource.returnBrokenResource(this); } else { this.dataSource.returnResource(this); } } else { this.client.close(); } }
JedisPool方式中,设置redis数据库的方式也可以通过构造函数,如上所示。
public JedisPool(GenericObjectPoolConfig poolConfig, String host, int port, int timeout, String password, int database) { this(poolConfig, host, port, timeout, password, database, (String)null); }redis的操作根据部署方式等等的不同,会有不同的连接方式。