DB/Redis

Redis Class 및 Interface | 어노테이션 | redis-cli | 메소드

잔망루피 2022. 7. 27. 22:38
반응형

✨ Class 및 Interface 정리

Interface RedisConnectionFactory  Thread-safe factory of Redis connections.
Class LettuceConnectionFactory Luttuce를 기반으로 연결을 생성하는 Connection factory
Class RedisTemplate<k, v=""></k,> object와 binary data 사이에 자동으로 serialization/deserialization을 수행한다.
thread-safe하다.
Interface CacheManager 스프링의 중심 캐시 매니저 SPI
SPI는 Synchronous serial communication 주로 임베디디 시스템에서 근거리 통신에서 사용되는 인터페이스 사양
Class RedisCacheConfiguration 캐싱 null 값들, 캐시 키 접두사, 이진 serialization과 같은 RedisCache 동작을 커스터마이징하는 것을 돕는다.
defaultCacheConfig()로 시작하고 RedisCache 동작을 커스터마이즈한다.
defaultCacheConfig()는 key expiration, cache null values, prefix cache keys, default prefix, key serializer, value serializer, conversion service를 사용해 구성됨
disableCachingNullValues() 캐싱 null 값들을 사용하지 않는다.
entryTtl(Duration ttl) cache entries에 적용할 ttl을 설정한다.
serializeKeysWith(RedisSerializationContext.SerializationPair<String> keySerializationPair) 캐시 키의 deserializing/serializing에 사용되는 RedisSerializationContext.SerializationPair을 정의한다. 

 

 

👑 어노테이션

@Cacheable 캐시가 있으면 캐시의 정보를 가져오고, 없으면 등록
결과가 저장될 캐시 이름 @Cacheable("phone")
메소드의 결과 값이 캐싱된다.
@CachePut 무조건 캐시에 저장
메소드 실행 후에 실행된다.
@CacheEvict 캐시 삭제
단일/복수 개의 값을 삭제
allEntries : 캐시 내의 모든 엔트리를 지운다.
메소드의 반환값이 void도 가능함

  

 

😎 redis-cli

get 키이름 데이터 타입이 String일 때 키의 값을 가져옴
(nil)은 해당 키가 없을 때 출력됨
시간 복잡도 O(1)
hget 키이름 필드명 데이터 타입이 Hash일 때 키의 값을 가져옴
(nil)은 해당 키가 없을 때 또는 해당 필드가 없을 때 출력됨
시간 복잡도 O(1)
keys *  모든 키 찾기
del 키이름  키 삭제
(integer) 1은 성공적으로 키가 삭제되었을 때 출력됨
(integer) 0은 해당 key가 없을 경우 출력됨
ttl 키이름 초단위로 만료되기까지 남은 시간 출력
(integer) -2는 key값이 없거나 소멸된 경우 출력
(integer) -1은 기한이 없는 경우 출력
flushall 모든 key 삭제

 

 

💡메소드 정리 

ZSetOperations<K, V> opsForZSet() zset operations를 반환
zset values는 sorted sets라고도 함
Set<ZsetOperations.TypedTuple<V>> reverseRangeWithScores(K key, long start, long end) 내림차순 정렬된 sorted set에서 start부터 end까지의 RedisZSetCommands.Tuples 집합을 얻는다.
TreeSet() SortedSet 인터페이스의 구현체
새로운 비어있는 tree set을 생성
Set<V> reverseRangeByScore(K key, double min, double max,
long offset, long count)
높은 -> 낮은 순서로 정렬된 세트에서 점수가 최소와 최대 사이인 시작부터 끝까지 범위의 요소를 가져온다.
   

 

✨ Serializer

StringRedisSerializer() Strings ↔️ bytes
기본 charset은 UTF-8
GenericJackson2JsonRedisSerializer() object ➡️ JSON
JdkSerializationRedisSerializer() RedisTemplate 클래스가 사용하는 기본 Serialization

 

😎 사용 방법

크게 두 가지 방법이 있다.

1. CrudRepository를 상속받은 RedisRepository 인터페이스를 생성한다.

마치 JPA를 사용하는 것 같다.

https://tecoble.techcourse.co.kr/post/2021-09-01-redis/

 

Redis 알아보기

이글은 Redis에 대해 들어봤거나 어렴풋이 알고 있는 독자들을 대상으로 작성하였습니다. 우테코 레벨 3 에서 프로젝트를 진행하면서 Redis를 적용해보게 되었다. Redis…

tecoble.techcourse.co.kr

 

2. RedisTemplate 클래스의 메소드 이용

 

 

 


참고 👇

https://redis.io/commands/?group=list 

 

Commands

Redis is an open source (BSD licensed), in-memory data structure store, used as a database, cache, and message broker

redis.io

 

https://docs.spring.io/spring-framework/docs/3.1.0.M1/spring-framework-reference/html/cache.html#cache-spel-context

 

27. Cache Abstraction

Since version 3.1, Spring Framework provides support for transparently adding caching into an existing Spring application. Similar to the transaction support, the caching abstraction allows consistent use of various caching solutions with minimal impact on

docs.spring.io

 

https://www.baeldung.com/spring-boot-evict-cache

 

Cache Eviction in Spring Boot | Baeldung

Learn how to invalidate caches with Spring Boot.

www.baeldung.com

 

https://freeblogger.tistory.com/10

 

redis-cli 명령어 정리

redis-cli 명령어 정리 redis-cli 접속 호스트명과 포트번호를 생략하면 localhost의 6379로 접속됩니다. -n db번호 -a 비밀번호 -s 소켓 -u 서버 url 등 접속 시 다양한 옵션 설정이 사용 가능합니다. # localhos.

freeblogger.tistory.com

 

https://shortstories.gitbooks.io/studybook/content/cache.html

 

Spring Cache · studybook

 

shortstories.gitbooks.io

 

https://souljit2.tistory.com/72

 

[#2] Redis 캐시를 통해 읽기 성능 향상하기

이번 포스팅에서는 스프링 캐시를 적용하면서 읽기 성능을 향상했던 경험을 공유하고자 합니다. 나름대로, 캐시란 무엇인가에 대해 정의를 내려보았습니다. 데이터의 실시간성을 약간 포기하

souljit2.tistory.com

 

 

 

반응형

'DB > Redis' 카테고리의 다른 글

Redis  (0) 2023.05.07