redis学習記録

23337 ワード

今日はRedisを簡単に勉強して、Redisの基本的な使用を記録しました.公式サイト:https://redis.io中国語のサイトhttp://www.redis.net.cn/
ファイルの説明:redis.windows.conf:プロファイルredis-cli.Exce:redisクライアントredis-server.Exce:redisサーバ側
一、概念Redisは高性能のNOSQLシリーズの非関係型データベース(NOSQL、Not Only SQL)である.メモリデータベース非関係型データベースの利点:(1)性能NOSQLはキー値対に基づくものであり、表中のプライマリ・キーと値の対応関係を想像することができ、かつSQL層の解析を必要としないため、性能が非常に高い.(2)拡張性も同様にキー値対に基づくため、データ間に結合性がないため、非常に水平に拡張しやすい.
redisの典型的な応用は:キャッシュで、主に大量のデータを処理する高アクセス負荷データモデルに用いられる:キー値対の優位性:高速クエリーの劣勢:格納されたデータは構造化redis学习记录_第1张图片に欠けている
一般的なNOSQL製品は主にキーペア(key-value)ストレージデータベース(典型的なアプリケーション:キャッシュ)、カラムストレージデータベース(典型的なアプリケーション:分散ファイルシステム)、ドキュメント型データベース(典型的なアプリケーション:Webアプリケーション(Key-Valueと類似、Valueは構造化)、グラフィックデータベースに分けられます.(典型的な応用:ソーシャルネットワーク).redisはC言語で開発されたオープンソースの高性能キー値対である.(key-value)データベースは、公式にテストデータを提供し、50個の同時実行100000個の要求があり、読み取り速度は110000回/s、書き込み速度は81000回/sであり、Redisは複数のキー値データ型を提供することによって異なるシーンでのストレージニーズに適応し、これまでRedisがサポートしてきたキー値データ型は以下の通りである:keyはStringタイプであり、valueは5種類の異なるデータ構造がある
  • 文字列タイプ:String
  • ハッシュタイプhash:mapフォーマット
  • リストタイプlist:linkedlistフォーマット、重複要素
  • をサポート
  • コレクションタイプset:重複要素は許可されていません
  • 秩序化集合タイプsortedset:重複要素は許可されず、要素には順序
  • がある.
    二、基本命令
    文字列タイプstring 1.ストレージ:set key value 2.取得:get key 3.削除:del keyハッシュタイプhash 1.ストレージ:hset key field value[hset(「user」,「name」,「lisi」);]3.取得:hget key field:指定したfieldに対応する値hgetall keyを取得:すべてのfieldとvalue 4を取得する.削除:hdel key field**リストタイプlist:**リストのヘッダー(左)または末尾(右)に要素を追加できます.1.追加:1.lpush key value:リストの左表(左から追加)2)に要素を追加します.rpush key value:リストの右側(右側から追加)に要素を追加します.取得:lrange key start end:範囲取得3.削除:lpop key:リストの一番左の要素を削除し、要素をrppop keyに戻します:リストの一番右の要素を削除し、要素を集合タイプsetに戻します:繰り返し要素1を許可しません.ストレージ:sadd key value 2.取得:smembers key:setセット内のすべての要素を取得します.削除:srem key value:setコレクション内のエレメント**整列コレクションタイプsortedset:**重複エレメントは許可されず、エレメントに順序がある.各要素にはdoubleタイプのスコアが関連付けられます.redisは、集合内のメンバーをスコアで小さいものから大きいものに並べ替えるものです.1.ストレージ:zadd key score value 2.取得:zrange key start end[withscores]3.削除:zrem key value汎用コマンド1.keys:すべてのキーをクエリーします.type key:取得キーに対応するvalueのタイプ3.del key:指定したkey value 3、永続化を削除
  • redisはメモリデータベースで、redisサーバが再起動し、コンピュータの再起動を取得すると、データが失われ、redisメモリのデータをハードディスクのファイルに永続化して保存することができます.プロファイル:redis.windows.conf
  • redis永続化メカニズム:1):RDB:デフォルトで、構成する必要はありません.save 900 1[after 900 sec(15 min)if at least 1 key]save 300 1 save 60 10000操作手順:1.redisを編集します.windows.confファイル2.Redisサーバを再起動し、プロファイル名(cmdで起動)を指定します->redis.server.exe redis.windows.conf
  • 2)AOF:ログ記録の方式で,各コマンドの操作を記録することができる.コマンド操作のたびに、データ編集redisを永続化することができる.windows.confファイル:appendonly no(aofを閉じる)—>appendonly yes(aofを開く)appendfsync always:操作ごとに永続化appendfsync everysec:1秒おきに永続化appendfsync no:永続化しない
    四、JavaクライアントJedis Jedis:Javaがredisデータベースを操作するツールで、JDBCと似ていて、JDBCより操作が簡単です.1.接続Jedis jedis=new Jedis(「localhost」,6379)を取得する.2.操作jedis.set(「username」,「呉」);3.接続jedisを閉じる.close();
    テスト:
           @Test
           public void test1(){
    		//1.    
            Jedis jedis = new Jedis("localhost",6379);
            //2.  
            //hash  
            jedis.hset("user","name","lisi");
            jedis.hset("user","age","23");
            jedis.hset("user","gender","male");
    
            //  hash   map    
            Map<String, String> user = jedis.hgetAll("user");
            System.out.println(user);
            System.out.println("---------------");
            //  map   
            for(Map.Entry<String,String> entry:user.entrySet()){
                String mapkey = entry.getKey();
                String mapValue = entry.getValue();
                System.out.println(mapkey+":"+mapValue);
            }
           ////  map   
            user.forEach(
                    (key,value) -> {
                        System.out.println(key+":"+value);
                    }
    
            );
            //3.    
            jedis.close();
            
            //list  
    //        jedis.lpush("mylist","a","b","c");
    //        jedis.rpush("mylist","a","b","c");
    //        List mylist = jedis.lrange("mylist", 0, -1);
    //        System.out.println(mylist);
    //        //list  ,  
    //        String mylist1 = jedis.lpop("mylist");
    //        System.out.println(mylist1);
    //        String mylist2 = jedis.rpop("mylist");
    //        System.out.println(mylist2);
    }
    

    jedisを使用してプールを接続するには、次の手順に従います.
        @Test
        public void test2(){
            //0.        
            JedisPoolConfig config = new JedisPoolConfig();
            //     
            config.setMaxTotal(50);
            //       
            config.setMaxIdle(10);
    
            //1.  Jedis      
            JedisPool jedisPool = new JedisPool(config,"localhost",6379);
    
            //2.    
            Jedis resource = jedisPool.getResource();
    
            //3.  
            resource.set("hhahah","hhhh");
    
            //4.          
            resource.close();
    
        }
    

    最適化:接続プールツールクラスjedis接続プールツールクラスの使用:
        /**
         * jedis         
         */
        @Test
        public void test3(){
    
            //          
            Jedis resource = JedisPoolUtils.getJedis();
            
            //3.  
            resource.set("hello","world");
            //4.          
            resource.close();
        }
    

    JedisPoolUtils.java:
    /**
     * JedisPool   
     *              ,        
     *                 
     */
    public class JedisPoolUtils {
    
        private static JedisPool jedisPool;
    
        //     ,         ,        
        static{
            //      
            //      
            InputStream is = JedisPoolUtils.class.getClassLoader().getResourceAsStream("jedis.properties");
    
            //  Properties  
            Properties pro = new Properties();
            //    
            try {
                pro.load(is);
            } catch (IOException e) {
                e.printStackTrace();
            }
    
            //    ,   JedisPoolConfig 
            JedisPoolConfig config = new JedisPoolConfig();
            config.setMaxTotal(Integer.parseInt(pro.getProperty("maxTotal")));
            config.setMaxIdle(Integer.parseInt(pro.getProperty("maxIdle")));
    
            //   JedisPool
            jedisPool = new JedisPool(config,pro.getProperty("host"), Integer.parseInt(pro.getProperty("port")));
    
        }
    
        /**
         *        
         */
        public static Jedis getJedis(){
            return jedisPool.getResource();
        }
    }
    

    プロファイルproperties:
    host=127.0.0.1
    port=6379
    maxTotal=50
    maxIdle=10
    

    Jedis詳細構成:
    #            
    redis.pool.maxTotal=1000    
    #      idel            
    redis.pool.maxIdle=100  
    #      idel         
    redis.pool.minIdle=50    
    #          ,          
    redis.pool.maxWaitMillis=10000    
    #   borrow Object   ,             
    redis.pool.testOnBorrow=true    
    #   return Object   ,             
    redis.pool.testOnReturn=true  
    #“    ”    ,     ,   。     ,     “    ”。   -1.  
    redis.pool.timeBetweenEvictionRunsMillis=30000  
    #      “  ”   ,          ;  
    redis.pool.testWhileIdle=true  
    #   “    ”      ,            。   3.  
    redis.pool.numTestsPerEvictionRun=50  
    #redis    IP    
    redis.ip=xxxxxx  
    #redis    Port    
    redis1.port=6379