Post

패캠_백엔드_패스_Course7 redis강의 필기 내용 정리

패캠_백엔드_패스_Course7 redis강의 필기 내용 정리

필기 가자

  • 기존의 톰캣을 사용한 was의 특징
    • 요청에 대응하는 1대1 쓰레드 1개가 대응
      • 단점 : 대용량 트래픽 처리시, 메모리 낭비가 있을수 있음.
  • 적은 메모리로 대량 IO를 어떻게 처리할까?
    • 이때 webflux라는 비동기 web framework 를 이용하면 가능.

redis

  • 6.2버전 쓸거임.
  • memory 저장 방식 vs 보조기억장치 저장 방식.
    • 약 20배의 성능 차이가 발생함.
  • 레디스 활용 : leader board 구현, pubsub시.
  • redis-cli monitor 명령어를 통해 어떤 명령어들이 실행되는지 확인가능.

redis type

  • INCRBY
    • 동시성 이슈에 대응할때 유리
    • 기존 값 기준으로 증가.
  • 실습 예시들. ```sh EXPIRE LANG 10 TTL LANG

동기 삭제시

DEL SOME

비동기 삭제시

UNLINK SOME

MEMORY USAGE

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
* Jedis
  * redis pipelining
    * 요청 여러개를 한번에 처리할 때 유리.

### data type list
* Block Command : 동기 명령어
  * ex) BLPOP
    * 이것은 값을 꺼낼때까지 기다림.
    * LPOP은 없으면 말음.

#### Sorted Set
* set에 키 벨류를 넣을 수 있음.

#### geo spacial
* 왜 좌표 기능을 넣지? 실제로 쓰나의 의문을 가짐.

#### Bitmap
* true, false만을 가지는 데이터를 저장할때 효과적인 레디스 자료구조
  * set과 bitmap 자료구조를 비교했었음.
* 적어두기로는 메모리 400배차이 와우

### Transaction
* transaction 요청이 끝나고서만 그 결과를 확인 가능
  * RDB랑 다른점. rdb는 해당 transaction 요청 내에서 조회시 중간 상태가 반영됨.
* MULTI : 시작!
  * EXEC : 진행시켜!
  * DISCARD :취소
* WATCH : 값을 모니터링하다가 그 값이 변경되어버리면 transaction rollback을 해버림.

### keys, scan
* O(N)으로 동작
* redis-cli --pipe
* .. --latency :

scan 2305234 match * cont 100

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
### 캐시 실습
* spring initializer 이용
* ApplicationRunner를 구현하여, 초기 동작 프로그램을 작성했었음.! webMvc프로젝트에! Wow

### spring boot cache
* opsForValue set
* getter 누락, 기본 생성자.
* @redisCache
* evict :삭제 기능.
* createJedisPool
  * 이것을 빈등록해서 실습.
* java redis client : lettuce, jedis
* redisTemplate : 데이터 변환, 직렬화를 담당.
* CacheConfig설정 필요.
  * 빈등록하여 공통 설정을 반영.
  * @Cachable 실습.
    * redisCacheManager를 사용하여 ttl 적용이 가능함.


### spring boot session store
* spring boot session
* spring boot redis
* session은 HMSET으로 저장됨.

### spring pubsub
* addMessageListener
* redisMessageListenContainer 의 빈등록이 필요함.
#### 이번엔 publish
* redCOT.cASend

### 19 mornitoring
```sh
--stat
--bigkey
--memkey
--latency
  • Cloud Native Foundation
  • maxMemoryPolicy를 레디스에 설정 가능.

  • 메모리 정책 
    • 메모리 정책은 maxmemory-policy 설정 값으로 정하면 된다. 이 값도 redis.conf 파일이나 config set 명령문으로 변경할 수 있다. 
    • MAX MEMORY만큼 메모리를 사용하게 되면, 메모리 정책에 따라 과거에 만들어진 키들이 삭제된다.   출처: https://americanopeople.tistory.com/179 [복세편살:티스토리]
  • 삭제 정책
    • allkeys-random
    • allkeys-lru
  • 컨테이너 이름으로 도메인 이름 사용이 가능.
  • redis exporter : 프로메테우스가 redis Exporter 를 이용해서 레디스 정보를 조회한다고 들음.
  • 그라파나용 redis 대쉬보드도 있음.

20. Replication

  • redis.conf에서 설정 가능.
  • offset을 활용하면 끊어진 부분부터 동기화도 가능함.
  • master 재실행시 연결 확인하는 테스트도 했었음.
This post is licensed under CC BY 4.0 by the author.