キャッシュSpringboot環境でのRedisの使用
11423 ワード
こんにちは、今日はキャッシュサーバの1つであるredisを使用してspringfootに接続します.😀
Redisサーバのインストール
redisを使用するには、まずredisサーバをインストールする必要があります.
(springbootはredisクライアントとして使用されます)
まず、redisのホームページではオペレーティングシステムに基づいてredisサーバをダウンロードすることができて、私はdockerを使ってダウンロードしました!
dockerコマンドは次のとおりです.
1) docker network create redis-net
- 저는 redis-cli와 redis를 연결해서 결과들을 확인해보기 위해서 두 컨테이너를 연결하기 위한 네트워크(redis-net)를 생성했습니다
- docker network ls 명령어로 생성 여부 확인 가능합니다
2) docker pull redis
- redis image pull
3) docker run --name redis-server -p 6379:6379 --network redis-net -d redis redis-server --appendonly yes
- redis 기본 포트는 6379
- redis-net에 연결
- appendonly 명령어로 AOF 방식으로 저장을 하도록 했습니다
4) docker run -it --network redis-net --rm redis redis-cli -h redis-server
- redis-cli를 이용해 redis 서버로 접속하도록 했습니다
次に、redisサーバで値を操作できます.redisはkeyとvalue形式で値を格納する
Springbootとredis-clientバインド
ここでは、Springbootを使用してredisに接続する方法について説明します.
実際、JPAの使い方にほぼ近いと考えられます.😂
必要なライブラリを最初に追加
pom.xml
<groupId>org.springframework.data</groupId>
<artifactId>spring-data-redis</artifactId>
<version>2.3.3.RELEASE</version>
</dependency>
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.3.0</version>
<type>jar</type>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-data-redis</artifactId>
</dependency>
<dependency>
@Configuration
public class RedisConfig {
@Bean
JedisConnectionFactory jedisConnectionFactory() {
RedisStandaloneConfiguration redisConfig = new RedisStandaloneConfiguration();
redisConfig.setHostName("192.168.0.20");
redisConfig.setPort(6379);
return new JedisConnectionFactory(redisConfig);
}
@Bean
public RedisTemplate<String, Object> redisTemplate() {
RedisTemplate<String, Object> template = new RedisTemplate<>();
template.setConnectionFactory(jedisConnectionFactory());
return template;
}
}
Student.java
@RedisHash("Student")
@AllArgsConstructor
@ToString
@Setter
public class Student {
public enum Gender{
MALE, FEMALE
}
private String id;
private String name;
private Gender gender;
private int grade;
}
StudentRepository.java
@Repository
public interface StudentRepository extends CrudRepository<Student, String> {
}
テストを行いました.RedisTest
@SpringBootTest
public class RedisTest {
@Autowired
StudentRepository studentRepository;
//insert
@Test
void saveTest(){
Student student1 = new Student("1", "zzarbttoo1", Student.Gender.FEMALE, 1);
Student student2 = new Student("2", "zzarbttoo2", Student.Gender.FEMALE, 2);
Student student3 = new Student("3", "zzarbttoo3", Student.Gender.FEMALE, 3);
Student student4 = new Student("4", "zzarbttoo4", Student.Gender.FEMALE, 4);
Student student5 = new Student("5", "zzarbttoo5", Student.Gender.FEMALE, 5);
studentRepository.save(student1);
studentRepository.save(student2);
studentRepository.save(student3);
studentRepository.save(student4);
studentRepository.save(student5);
}
//select
@Test
void selectTest(){
Student selectStudent1 = studentRepository.findById("1").get();
Student selectStudent2 = studentRepository.findById("2").get();
Student selectStudent3 = studentRepository.findById("3").get();
Student selectStudent4 = studentRepository.findById("4").get();
Student selectStudent5 = studentRepository.findById("5").get();
System.out.println(selectStudent1.toString());
System.out.println(selectStudent2.toString());
System.out.println(selectStudent3.toString());
System.out.println(selectStudent4.toString());
System.out.println(selectStudent5.toString());
}
//update
@Test
void updateTest(){
Student selectStudent1 = studentRepository.findById("1").get();
selectStudent1.setName("updated Name");
studentRepository.save(selectStudent1);
System.out.println(selectStudent1.toString());
}
//delete
@Test
void deleteTest(){
studentRepository.deleteById("2");
Assertions.assertThrows(NoSuchElementException.class, () -> studentRepository.findById("2").get());
}
//selectAll
@Test
void selectAllTest(){
List<Student> students = new ArrayList<>();
studentRepository.findAll().forEach(students::add);
System.out.println(students.toString());
}
}
ソース
https://www.baeldung.com/spring-data-redis-tutorial
https://hub.docker.com/_/redis
https://giles.tistory.com/38
https://www.daleseo.com/docker-networks/
https://jistol.github.io/docker/2017/09/01/docker-redis/
https://littleshark.tistory.com/68
https://stackoverflow.com/questions/49021994/jedisconnectionfactory-sethostname-is-deprecated
https://sungwookkang.com/1313
Reference
この問題について(キャッシュSpringboot環境でのRedisの使用), 我々は、より多くの情報をここで見つけました https://velog.io/@zzarbttoo/CacheRedis-Springbootテキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol