Spring Boot 2(8):Spring Boot統合Memcached

3076 ワード

Memcachedの紹介
Memcachedは、データベース負荷を軽減するための動的Webアプリケーション用の高性能分散メモリオブジェクトキャッシュシステムです.メモリにデータとオブジェクトをキャッシュすることで、データベースの読み取り回数を減らし、動的でデータベース駆動のWebサイトの速度を向上させます.Memcachedは、1つのストレージキー/値ペアのhashmapに基づいている.そのデーモンプロセス(daemon)はCで書かれていますが、クライアントは任意の言語で記述し、memcachedプロトコルを介してデーモンプロセスと通信することができます.
Spring BootはMemcachedに対応するパッケージを提供していないため、独自に統合する必要があります.公式に発売されたJavaクライアントSpymemcachedは比較的良い選択の一つです.
Spymemcachedの紹介
Spymemcachedは最初にDustin Sallingsによって開発され、Dustinは後に他の人とCouchbase(元NorthScale)を設立し、首席アーキテクチャ師として働いた.2014年にGoogleに加入.
SpymemcachedはJavaによって開発された非同期、単一スレッドのMemcachedクライアントであり、NIOを使用して実現される.SpymemcachedはMemcachedのポピュラーなJava clientライブラリで、パフォーマンスが優れ、Java+Memcachedプロジェクトに広く応用されています.
依存構成
依存の追加
pomxパッケージにspymemcachedの参照を追加

  net.spy
  spymemcached
  2.12.2


構成の追加
memcache.ip=192.168.0.161
memcache.port=11211

それぞれmemcacheのIpアドレスとポートを構成します.
構成オブジェクトの設定MemcacheSource受信構成情報の作成
@Component
@ConfigurationProperties(prefix = "memcache")
public class MemcacheSource {

    private String ip;

    private int port;

    public String getIp() {
        return ip;
    }

    public void setIp(String ip) {
        this.ip = ip;
    }

    public int getPort() {
        return port;
    }

    public void setPort(int port) {
        this.port = port;
    }
}
@ConfigurationProperties(prefix = "memcache")とは、memcache.*を開通として対応するプロファイルを属性にロードすることを意味します.
MemcachedClientの初期化を開始
前節の内容Spring Boot 2(7):Spring Bootを使用して、プロジェクトの開始時にリソースを初期化し、CommandLineRunnerを使用してプロジェクトの開始時にMemcachedClientを構成します.
@Component
public class MemcachedRunner implements CommandLineRunner {
    protected Logger logger =  LoggerFactory.getLogger(this.getClass());

    @Resource
    private  MemcacheSource memcacheSource;

    private MemcachedClient client = null;

    @Override
    public void run(String... args) throws Exception {
        try {
            client = new MemcachedClient(new InetSocketAddress(memcacheSource.getIp(),memcacheSource.getPort()));
        } catch (IOException e) {
            logger.error("inint MemcachedClient failed ",e);
        }
    }

    public MemcachedClient getClient() {
        return client;
    }

}

テストの使用
@RunWith(SpringRunner.class)
@SpringBootTest
public class RepositoryTests {

  @Resource
    private MemcachedRunner memcachedRunner;

  @Test
  public void testSetGet()  {
    MemcachedClient memcachedClient = memcachedRunner.getClient();
    memcachedClient.set("testkey",1000,"666666");
    System.out.println("***********  "+memcachedClient.get("testkey").toString());
  }

}

使用中にキーをtestkey、1000をミリ秒単位で挿入し、最後の「666666」をキーに対応する値として挿入します.
テスト例testSetGetを実行し、コンソールからコンテンツを出力します.
***********  666666

テストが成功したことを示します.
サンプルコード-github
サンプルコード-コードクラウド