Redis学習日記のSpring Boot 2.0+整合Redis(Redissionに基づく)

3924 ワード

海加爾金鷹——野の草のように一歳一枯栄
昨日はredisの簡単なインストールが完了しました。Redis学習日誌のLinuxのインストールは、今日はプロジェクトの中で簡単に統合して使います。
統合環境説明
JDK 1.8バージョンidea開発ツールspringbook t 2.10バージョン
なぜRedissionを選んだのですか?
springbook t 2.0以前のバージョンはデフォルトでJedisですが、2.0後にLettuceに変えました。java接続redisが一番多いのはJedis、Redisson、Lettuceの3つの方法を簡単に紹介します。Redisの3つのフレーム:Jedis、Redisson、Lettuceは最後にRedissionを選択しました。Redissonの目的は利用者のRedisに対する関心の分離を促進することです。
POMにJAR対応導入
Redission公式整合文書に基づいて導入と使用を行います。
        
        
            org.redisson
            redisson-spring-boot-starter
            3.10.4
        
配置類RedissonConfigを作成します。
package com.hjljy.blog.redission;

import org.redisson.Redisson;
import org.redisson.api.RedissonClient;
import org.redisson.config.Config;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;

/**
 * @Auther:      
 * @Date: 2019 03 12   17:47
 * @Description:
 */
@Configuration
public class RedissonConfig {

    @Bean
    public RedissonClient getRedisson(){
        Config config = new Config();
        //          redis     
        config.useSingleServer().
                setAddress("redis://IP  :6379"). 
                setPassword("    ");
        return Redisson.create(config);
    }
}
ここでは基本的なパラメータだけを配置しています。redisの構成は様々です。構成パラメータもたくさんあります。詳細は公式のパラメータ配置説明(中国語)を参照してください。
試験クラスを作成してテストを行う
テストを行う前に、アリ雲サーバを使用していますので、安全グループの中に6379ポートを開放してください。そうしないと接続できません。
@RunWith(SpringRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
public class BlogApplicationTests {

    @Resource
    private RedissonClient redissonClient;

    @Test
    public void RedissionTest(){
        RBucket key = redissonClient.getBucket("newday");
        key.set("    ");
        System.out.println("         :"+key.get());
        //           
        RBucket keyObj = redissonClient.getBucket("myname");
        String s = keyObj.get();
        System.out.println("          :"+s);
    }
}
テスト結果:
         :    
[ ERROR] [2019-03-14 10:37:37] [redisson-netty-1-9] org.redisson.client.handler.CommandDecoder [204] - Unable to decode data. channel: [id: 0x704603a9, L:/192.168.0.147:10879 - R:47.94.139.213/47.94.139.213:6379], reply: ReplayingDecoderByteBuf(ridx=9, widx=9), command: (GET), params: [myname]
java.io.IOException: java.lang.NullPointerException
プロジェクトに新しく入れられたデータは取得できますが、昨日のレdis-cliで保存したデータは取得できません。エラーメッセージ:データを復号できませんでした。おそらくredis-cliのデータを保存するコードとredissionのコードが一致しないためです。最後にインターネットで多くの資料を探しました。プログレッシブ戦略というものを見つけました。大体の状況はredis-cliがデータを保存する時の序列化の策略はstringですが、redissionのデフォルトの序列化の策略はJackson JSONコードRedission公式サイトの配置パラメータの序列化の説明です。
配置類を修正するRedission Configは以下の通りです。
    @Bean
    public RedissonClient getRedisson(){
        Config config = new Config();
        //          redis     
        config.useSingleServer().
                setAddress("redis://IP  :6379"). 
                setPassword("    ");
        config.setCodec(new StringCodec());
        return Redisson.create(config);
    }
最後の結果は以下の通りです。
  .   ____          _            __ _ _
 /\\ / ___'_ __ _ _(_)_ __  __ _ \ \ \ \
( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \
 \\/  ___)| |_)| | | | | || (_| |  ) ) ) )
  '  |____| .__|_| |_|_| |_\__, | / / / /
 =========|_|==============|___/=/_/_/_/
 :: Spring Boot ::        (v2.1.0.RELEASE)

         :    
          :ycf
ここまで簡単に使ったら完成です。
締め括りをつける
1 Redisson Clientというクラスは重要です。データの読み取りはこのクラスを通して行われていることが見えます。2このように様々な序列化方式なので、序列化はピットかもしれません。後は注意が必要です。3公式文書の説明は詳しくて、大丈夫です。たくさん見てください。
参考資料
Redission公式文書springboot整合redisson