SpringBootのRedis連携のアイデア解説
SpringBootとRedisの統合
1. 概要
Redisとは?
リモート辞書サービス「Redis (Remote Dictionary Server )」。
は、オープンソースのANSI C言語、ウェブ対応、メモリベースまたは持続的なログベース、多言語のAPIを持つKey-Valueデータベースです。
memcachedと同様に、データはメモリ上にキャッシュされ、効率を確保します。違いは、redisは定期的に更新されたデータをディスクに書き込むか、追加されたログファイルに変更を書き込み、その上でマスター・スレーブ同期を実装している点です。
<ブロッククオートRedisは何ができるのか?
インメモリストレージ、永続性、停電でメモリが失われるため、永続性が必要(RDB、AOF) 高効率、キャッシュの公開のため、システムマップ情報の分析タイマー、カウンター(例:ビュー)...。
<ブロッククオート特徴
多様なデータ型
永続性
クラスタリング
トランザクション
...
2. Redisのテスト
SpringBootによるデータ操作、Spring-Data、jbdc、redis...。
SpringDataはSpringBootと相性が良い!
注:SpringBoot 2.x以降、元々使われていたjedisは、レタス
jedisは:直接接続の使用は、操作の複数のスレッドは、安全ではありません、あなたがセキュリティを回避したい場合は、jedisプール接続プールを使用する必要があります!あなたは、このような場合、あなたはそれを行うことができます。BIOモードと同様
レタス:nettyを使用すると、インスタンスを複数のスレッドで共有することができ、スレッドセキュリティがありません。スレッドデータを減らすことができ、よりNIOパターンに似ている
<マーク 新しいプロジェクトを作成する
<マーク 注意事項
<マーク
ソースコードの解析。
@Bean
@ConditionalOnMissingBean( //If the component condition is not injected, we can define a redisTemplate ourselves to replace this default
name = {"redisTemplate"}
)
public RedisTemplate<Object, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
//The default RedisTemplate does not have too many settings redis are required to serialize !
//both generics are of type Object Object, we need to force conversions for future use<String,String>
RedisTemplate<Object, Object> template = new RedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
return template;
}
@Bean
@ConditionalOnMissingBean // Since String is the most commonly used type in redis, it's a good idea to propose a separate bean!
public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) throws UnknownHostException {
StringRedisTemplate template = new StringRedisTemplate();
template.setConnectionFactory(redisConnectionFactory);
return template;
}
1. インポートの依存性
2. 接続の設定
# All SpringBoot configuration classes have an autoconfiguration class RedisAutoConfiguration
# AutoConfiguration classes are bound to a properties configuration file RedisProperties
# Configure redis
spring.redis.host=127.0.0.1
spring.redis.port=6379
spring.redis
3.テスト!
package com.kk;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context;
import org.springframework.data.redis.connection;
import org.springframework.data.redis.core;
@SpringBootTest
class Redis01SpringbootApplicationTests {
@Autowired
private RedisTemplate redisTemplate;
@Test
void contextLoads() {
/*
redisTemplate
opsForValue manipulates a string similar to String
opsForList manipulates a List similar to List
opsForSet
opsForHash
opsForZSet
opsForGeo
opsForHyperLogLog
In addition to basic operations, our common methods can be used directly through redisTemplate such as transactions and basic CRUD
*/
// Get the connection object of redis
// RedisConnection connection = redisTemplate.getConnectionFactory().getConnection();
// connection.flushDb();
// connection.flushAll();
redisTemplate.opsForValue().set("kk1","kk2");
System.out.println(redisTemplate.opsForValue().get("kk1"));
}
}
3. カスタム redisTemplate
まず、テスト用のエンティティクラスを作成します。
ユーザークラス
package com.kk.pojo;
import lombok.AllArgsConstructor;
import lombok.Data;
import lombok.NoArgsConstructor;
import org.springframework.stereotype;
import java.io;
@Component
@Data
@AllArgsConstructor
@NoArgsConstructor
// In the enterprise, all of our pojo will be serialized
public class User implements Serializable {
private String name;
private int age;
}
テスト
@Test
public void test() throws JsonProcessingException {
// Real development generally uses json to pass objects
User user = new User("kk", 17);
String jsonUser = new ObjectMapper().writeValueAsString(user);//this becomes a json object
redisTemplate.opsForValue().set("user",jsonUser);
System.out.println(redisTemplate.opsForValue().get("user"));
}
r = new ObjectMapper().writeValueAsString(user);//this turns it into a json object
redisTemplate.opsForValue().set("user",jsonUser);
System.out.println(redisTemplate.opsForValue().get("user"));
}
==注意:Userクラスでシリアライズを実装していない場合、エラーが報告されます==。
以上でSpringBootとRedisの連携に関する記事を終了します。SpringBootとRedisの連携については、スクリプトハウスの過去記事を検索いただくか、以下の関連記事を引き続きご覧ください。
関連
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン