Jedis实现redis操作总结

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的操作根据部署方式等等的不同,会有不同的连接方式。


猜你喜欢

转载自blog.csdn.net/angl129/article/details/80465385
今日推荐