SpringCloud Redisキャッシュの使用


SpringCloud Redisキャッシュの使用
  • Redis環境構築
  • SpringDataRedis
  • は、文書のキャッシュ処理
  • を実現する.
  • クエリー記事アクションキャッシュ
  • 変更または削除後にキャッシュ
  • をクリアする.
  • キャッシュ期限切れ処理
  • クエリのパフォーマンスを向上させるには、通常、Redisキャッシュを使用します.
    Redis環境構築
    我々はdockerの形でRedisサービスを構築します
    docker run -di --name=tensquare_redis -p 6379:6379 redis
    

    SpringDataRedis
    Spring-data-redisはspringの大家族の一部であり、srpingアプリケーションで簡単な構成でredisサービスにアクセスし、reids下位開発パッケージ(Jedis,JRedis,and RJC)を高度にパッケージ化し、RedisTemplateはredisの様々な操作を提供している.
    文章のキャッシュ処理を実現する
    クエリー記事アクションキャッシュ
    (1)tensquare_articleのpom.xml導入依存
    Spring cloudでは次のように導入する必要があります.
            
                org.springframework.data
                spring-data-redis
            
    
            
                redis.clients
                jedis
                2.9.0
            
    

    (2)アプリケーション.ymlを変更し、springノードの下で構成を追加する
      redis:
        host: 192.168.2.10
        port: 6379
    

    (3)ArticleServiceを修正RedisTemplateを導入しfindByIdメソッドを修正する
    	@Autowired
    	private RedisTemplate redisTemplate;
    
    	/**
    	 *   ID    
    	 * @param id
    	 * @return
    	 */
    	public Article findById(String id) {
    		//        
    		Article article = (Article)redisTemplate.opsForValue().get("article_"+id);
    		//     ,        
    		if (article==null){
    			article = articleDao.findById(id).get();
    			//     
    			redisTemplate.opsForValue().set("article_"+id, article, 20, TimeUnit.SECONDS);
    		}
    		return article;
    	}
    

    これにより、クエリー時に自動的に文章がキャッシュされます.
    変更または削除後にキャッシュをクリア
    	/**
    	 *   
    	 * @param article
    	 */
    	public void update(Article article) {
    		//        
    		redisTemplate.delete("article_"+article.getId());
    		articleDao.save(article);
    	}
    
    	/**
    	 *   
    	 * @param id
    	 */
    	public void deleteById(String id) {
    		//        
    		redisTemplate.delete("article_"+id);
    		articleDao.deleteById(id);
    	}
    

    キャッシュの期限切れ処理
    findByIdメソッドを変更し、1日の有効期限を設定
    redisTemplate.opsForValue().set("article_" + id, article, 1, TimeUnit.DAYS);
    

    テストを容易にするために、有効期限を10秒に変更し、コンソール出力を観察することができます.
    redisTemplate.opsForValue().set("article_" + id, article,10, TimeUnit.SECONDS);