Jedis使用Redisのキャッシュ操作(第II章)

           ディレクトリ

  •   Jedisプロフィール
  •   JedisはRedisの接続を使用します
  •   使用JedisPool接続プールのRedis
  •   Jedis操作文字列
  •   Jedisオペレーション一覧
  •   Jedisの操作セット
  •   Jedis操作ハッシュ

 

  .Jedisについて

    Jedisは、クライアントがRedisのジャワをカプセル化し、統合Redisの操作コマンドです。

    Jedisの使用は、JDBC操作のMysql、SQLServerデータベースを使用するのと同じです、データベース操作をRedisの。

    

 

 

 


 二、JedisはRedisの接続しました

    2つの方法でJedis使用Redisの接続:Jedisは、直接接続を管理するためのRedis、JedisPool接続プールを接続オブジェクト。

    Jedisは、直接接続されたオブジェクト:

    


 

 三、Jedisが直接接続されているオブジェクトのRedis   

    Jedisの使用が直接接続されている方法でオブジェクトには、まず、Jedis対応するjarファイルパッケージをダウンロードする必要があり
    、最新バージョンに示すようになりましたjedis-2.9.0をされます

    クラスパスにプロジェクトに追加ダウンロードしたjarファイルのパッケージは、データベースに接続するためのRedis Jedisを使用することができます。

     

    直接Jedisオブジェクトは5つのステップに分けることができます:
    1. redis.clients.jedis.Jedisクラス導入
    2を、そのコンストラクタ新しいJedis(文字列のホスト、int型ポートJedis新しいオブジェクト )、ホストデータベースRedisのIPアドレスパラメータを、ポートは、ポート番号です。
    3、コールjedis.connect()のRedisを接続する方法
    。4は、構築されたデータ呼jedisを動作させる方法及び得られた結果は、(Jedis APIは詳細に言えば後)
    5は、コールjedis.disconnect()は、接続方法を閉じます

 

     例:直接には、地元のRedisのキーへのすべてのアクセスをRedisのデータベースを接続し、出力Jedisを印刷

   

1  パブリック クラスJedisToRedis {
 2  
3。     公共 静的 ボイドメイン(文字列[]引数){
 4。         // オブジェクトjedisを作成
5。          Jedis jedis = 新しい新 Jedis( "127.0.0.1"、6379 );
 6          // 3.接続Redisのは
7。         jedis。接続();
 。8          // 4.使用方法オペレーティングJedis Redisのデータの取得結果を内蔵し、
 9          // ここでは、我々はすべてのキーを得るための鍵Jedis Redisのメソッドを使用する
10を          設定し、<文字列> = jedis.keysキー(「*」) ;
 11          // キーが消灯し、完全なプリントを受け取ることになります
12          のために(文字列キー:キー
 13              ){
 14              のSystem.out.println(キー)。
15          }
 16          // 关闭jedis 
17          jedis.close()。
18      }
 19  
20 }

      効果:     

      実施例1の効果を示すために、我々はRedisを持つコンソールですべてのネイティブRedisのキーコマンドを取得します

      

      次のようにコンソール出力が表示、「キー」、「OK」、次回の実行JedisDemo.mainは、()があるネイティブRedisのキーがありますことを見ることができます。

      

 

 

 


 

  四、接続を管理するためJedis接続プールのRedis

      道の生産は、一般的に、接続プールRedisの接続管理のために使用され、すべてのJedisは、プールで最初のオブジェクト
      ごとのRedisを接続する必要が、あなただけの、池に借りる必要がなくなった後、池に戻りました。

      

      JedisPool接続プールを使用するリソース管理ツールとしてツール・コモンズ・プールをプールアパッチ汎用オブジェクトを使用しながらJedisはJedis、このクラスのJedisPool接続プールを提供し、

      要先下载commons-pool jar包,如图最新版本是commons-pool-2.6.0
       附:jedis2.9.0.jar自带了连接池资源的管理工具JedisPoolConfig
       ,后面例子将使用jedis自带的JedisPoolConfig类来配置连接池)

      Jedis连接池管理方式连接Redis可以分为以下几个步骤:
      1、导入包
      2、获得连接池配置对象JedisPoolConfig
      3、设置连接池信息(最大连接数、最大空闲连接数等)
      4、获得连接池
      5、获得核心对象Jedis
      6、用Jedis操作Redis数据并取得结果
      7、关闭Jedis连接,关闭JedisPool连接池,释放资源

       例二,Jedis连接池管理连接Redis数据库,获取本机redis中所有key,并打印输出

      

        //1.获得连接池配置对象
        JedisPoolConfig config = new JedisPoolConfig();
        //2.设置连接池信息(最大连接数)
        //设置连接池信息(最大空闲连接数)
        config.setMaxTotal(30);
        config.setMaxIdle(10);
        //3.获得连接池
        JedisPool jedisPool = new JedisPool(config,"127.0.0.1",6379);
        //4.得到核心对象 
         Redis redis = jedisPool.getResource();  
        /5.使用Jedis内置方法操作Redis数据并获取结果
        //这里我们使用Jedis的key方法获得Redis中的所有key
        Set<String> keys = jedis.keys("*");
        //将获得的key全部打印出来
        for (String key:keys
             ) {
            System.out.println(key);
        }
        //关闭jedis
        jedis.close();

 


 

   Jedis两种连接方式的优劣性对比

    客户端连接Redis使用的是TCP协议,直连的方式每次需要建立TCP连接,而连接池的方式是可以预先初始化好Jedis连接,

    所以每次只需要从Jedis连接池借用即可,而借用和归还操作是在本地进行的,只有少量的并发同步开销,远远小于新建TCP连接的开销。

    另外直连的方式无法限制Jedis对象的个数,在极端情况下可能会造成连接泄露,而连接池的形式可以有效的保护和控制资源的使用。

    但是直连的方式也并不是一无是处,下面给出两种方式各自的优劣势。

    

 

 

 


   Jedis内置基本方法:

//验证redis密码,如果没有设置密码这段可以省略
jedis.auth(String password);
//连接
jedis.connect();
//关闭连接
jedis.disconnect();
//列出符合特定条件的key   其中pattern为匹配条件,填*则为列出所有
Set<String>  keys = jedis.keys(String pattern);
//移出给定的一个或多个key,如果key不存在,则忽略该命令
jedis.del(String keyname1,String keyname2…….);

 //检查给定key是否存在 ,返回一个boolean
 jedis.exists(String keyname);
 //将key1改名为key2,当key1和key2相同或者key1不存在时,返回一个错误
 jedis.rename(String key1 , String key2);
  //返回给定key所储存的值的类型。 none(key不存在),string(字符串),list(列表),set(集合),zset(有序集),hash(哈希表)
  jedis.type(String keyname);
  //移出给定key的生存时间(设置这个key永不过期)
  jedis.persist(String keyname);
  //设置key生存时间,当key过期时,它会被自动删除。 Time为秒数
  jedis.expire(String keyname , int time);

  

   Jedis操作String数据相关方法:

//字符串值value关联到key,如果key不存在则会新增一个key
jedis.set(String keyname, String value); 
//将值value关联到key,并将key的生存时间设为seconds(秒)。
jedis.setex(String keyname,String value ,int secondes); 
//清空整个redis实例所有的key 
jedis.flushAll(); 
//清空redis当前数据库所有的key 
jedis.flushDB(); 
//返回key的个数
jedis.dbSize();

  

  Jedis操作Hash表相关方法:

//设置一张hash表的两种方式:
//1、分别给哈希表key中的域设置值,分别对key中的字段1、字段2设置值
jedis.hset(String keyname , String fieldname1 , String value1);
jedis.hset(String keyname , String fieldname2 , String value2);
//2、用一个JAVA中的HashMap直接存储为redis中的哈希表
Map map = new HashMap();
map.put(String fieldname1 , String value1);
map.put(String filedname2 , String value2);
jedis.hmset(String keyname , Map map);
//返回哈希表key中给定字段field的值,返回对应值的类型
jedis.hget(String keyname , String fieldname);
//返回哈希表key中给定多个字段的值,返回一个List
jedis.hget(String keyname , String fieldname1,String fieldname2….);
//返回哈希表key中的所有字段和值,返回一个Map<String,String>
jedis.hgetAll(String keyname);
//删除哈希表key中的一个或多个指定字段
jedis.hdel(String keyname , String fieldname1 , String fieldname2…..);
//查看哈希表key中,给定字段field是否存在。 
jedis.hexists(String keyname , String fieldname); 
//返回哈希表key中的所有字段 
jedis.hkeys(String keyname); 
//返回哈希表key中的所有值 
jedis.hvals(String keyname);

  

  Jedis操作List列表数据相关方法:

//将值value插入到列表key的表头。 
jedis.lpush(String keyname , String value);
//返回列表key中指定区间内的元素,区间以偏移量start和stop指定. 下标(index)参数start和stop从0开始; 负数下标代表从后开始(-1表示列表的最后一个元素,-2表示列表的倒数第二个元素,以此类推)  返回一个List
jedis.lrange(String keyname , int start , int stop);
//返回列表key的长度 , 返回一个Int
jedis.llen(String keyname);

  

  Jedis操作Set集合数据相关方法:

//将member元素加入到集合key当中。
jedis.sadd(String keyname , String value);
//移除集合中的member元素。
jedis.srem(String keyname , String value);
//返回集合key中的所有成员。返回一个set
jedis.smembers(String keyname);
//判断元素是否是集合key的成员
jedis.sismember(String keyname , String value);
//返回集合key的元素的数量
jedis.scard(String keyname);
//返回一个集合的全部成员,该集合是所有给定集合的交集
jedis.sinter(String key1 , String key2);
//返回一个集合的全部成员,该集合是所有给定集合的并集
jedis.union(String key1 , String key2);
//返回一个集合的全部成员,该集合是所有给定集合的差集
jedis.sdiff(String key1 , String key2);

 

 

  

 

 

    

 

 

   

おすすめ

転載: www.cnblogs.com/268lwc/p/12407547.html