2025년 10월 20일 월요일 (96일차)

Jeonghoon·2025년 10월 20일

jeonghoon's Study

목록 보기
99/128

🧠 Redis & 암호화/쿠키 정리 (정규 Markdown 테이블 버전)

본 문서는 GitHub-Flavored Markdown(GFM) 기준의 표 문법을 사용해 다시 정리했습니다.
모든 표는 | 헤더 | 헤더 | + | --- | --- | 형식을 따릅니다.


🚀 Redis

🧩 사용법

1️⃣ RedisTemplate 객체 생성

방법선언 방식설명
방법1private final StringRedisTemplate stringRedisTemplate;문자열 타입 저장용
방법2private final RedisTemplate redisTemplate;DTO, JSON, Map 등 다양한 타입 저장용

2️⃣ RedisTemplate 설정 (RedisConfig)

public RedisTemplate<String, Object> redisTemplate(RedisConnectionFactory redisConnectionFactory){
    // 1. Redis 템플릿 객체 생성 : Redis 형식을 Map 타입으로 사용하기위한 설정
    RedisTemplate<String, Object> redisTemplate = new RedisTemplate<>();
    // 2. 생성한 템플릿 객체를 팩토리(Redis 저장소)에 등록
    redisTemplate.setConnectionFactory(redisConnectionFactory);
    // 3. 생성한 템플릿은 key값을 String 타입으로 직렬화한다.
    redisTemplate.setKeySerializer(new StringRedisSerializer());
    // 4. 생성한 템플릿은 value값을 JSON/DTO 타입으로 직렬화한다,
    redisTemplate.setValueSerializer(new GenericJackson2JsonRedisSerializer());
    // 직렬화 : Redis에 저장된 데이터를 자바 타입으로 변환 과정
    return redisTemplate;
}

3️⃣ Redis에 데이터 저장

구분코드 예시설명
단순 저장redisTemplate.opsForValue().set(key, value);단순한 key-value 저장
유효기간 저장redisTemplate.opsForValue().set(key, value, TTL);TTLDuration.ofXXX()으로 설정
데이터 수정(키 중복 시) 동일 key의 value 덮어쓰기기존 값 위에 새 값으로 갱신

4️⃣ Redis에서 데이터 호출

구분코드 예시설명
특정 key 조회Object value = redisTemplate.opsForValue().get(key);지정 key의 value 조회
전체 key 조회Set<String> keys = redisTemplate.keys("*");모든 key 조회
패턴 key 조회Set<String> keys = redisTemplate.keys("student:*");예: student:*, jwt:*
네이밍 규칙의미단어:식별번호예: student:1, jwt:토큰번호

5️⃣ Redis 데이터 삭제

구분코드 예시설명
특정 key 삭제boolean result = redisTemplate.delete(key);해당 key-value 삭제

6️⃣ key 존재 여부 확인

구분코드 예시설명
key 존재 확인boolean result = redisTemplate.hasKey(key);key 존재 여부 반환

🔐 암호화와 쿠키

🔑 BCrypt (비밀번호 암호화)

📦 Gradle 의존성 추가

implementation 'org.springframework.security:spring-security-crypto:6.4.4'

📋 특징

번호설명
1복호화가 불가능한 단방향 알고리즘
2동일한 평문이라도 매번 서로 다른 암호문 생성(솔트 포함)

⚙️ 사용법

단계코드설명
1private final BCryptPasswordEncoder bCrypt = new BCryptPasswordEncoder();BCrypt 객체 생성
2String 암호문 = bCrypt.encode(평문);평문 암호화
3bCrypt.matches(평문, 암호문);평문과 암호문 비교

💡 개념

  • 클라이언트 브라우저의 임시 저장소
  • 장점: 서버 부담 감소
  • 단점: 세션보다 보안이 취약 → 안전장치 필요
  • 사용처: 사용자 설정값 저장 (예: 자동 로그인)
  • 특징: 서버 종료 후에도 상태 유지

⚙️ 사용법

단계코드 예시설명
1Cookie cookie = new Cookie("loginUser", result.getUid());쿠키 객체 생성
2cookie.setHttpOnly(true);JS에서 접근 불가(HTTP 전용)
2-1cookie.setSecure(false);HTTPS에서만 전송하려면 true
2-2cookie.setPath("/");접근 경로 지정
2-3cookie.setMaxAge(3600);유효기간(초)
3response.addCookie(cookie);쿠키를 클라이언트로 전달
4Cookie[] cookies = request.getCookies();저장된 모든 쿠키 가져오기

0개의 댓글