Redis/Spring Data Redis

[Spring Data Redis] Lists

오늘도개발 2024. 5. 13. 13:51

 

1. Lists 란?

 

 -  Linked list 형태의 자료 구조 (인덱스 접근은 느리지만, 데이터 추가와 삭제가 빠름)

 

https://kjwit.tistory.com/entry/%ED%95%AD%ED%95%B4-%EC%8B%AC%ED%99%94-%EA%B3%BC%EC%A0%95-5-%EC%9D%BC%EC%B0%A8 

 

심화 과정 5 일차

1. 자료구조 및 알고리즘 5일차 수강하기 - 링크드 리스트 2. 새롭게 알게된 지식 - 링크드 리스트의 노드 구성을 표현하면 다음과 같다 과제1: 역순 연결 리스트 https://leetcode.com/problems/reverse-linked-

kjwit.tistory.com

 

 

  - Queue와 Stack으로 사용할 수 있음 (Python 의 deque 와 유사)

 

 

2. ListOperations<K, V>사용방법

 

 -  private final RedisTemplate<String,String> redisTemplate  으로 지정 후

 

 -  redisTemplate.opsForList() 으로 호출 가능

 

 -  redisTemplate.opsForList().leftPush( [key 값], [Value 값] ) 로 앞쪽에 데이터를 저장 가능

 

 -  redisTemplate.opsForList().leftPushAll( [key 값], [Value collection 값] ) 로 앞쪽에 collection을 한번에 저장 가능

 

 -  redisTemplate.opsForList().rightPush( [key 값], [Value 값] ) 로 뒤쪽에 데이터를 저장 가능

 

 -  redisTemplate.opsForList(). rightPushAll( [key 값], [Value collection 값] ) 로 뒤쪽에 collection을 한번에 저장 가능

 

 -  redisTemplate.opsForList().leftPop( [key 값] ) 로 제일 앞 쪽(head)에 데이터를 출력

 

 -  redisTemplate.opsForList().rightPop( [key 값] ) 로 제일 뒤 쪽(tail)에 데이터를 출력

 

 -  redisTemplate.opsForValue().range( [key 값] , [start idx ] ,[end idx] ) 로 키값의 특정 범위 내 대이터 출력

   * start idx = 0, end idx = -1 일 경우 전체 출력

 

 -  redisTemplate.opsForValue().size( [key 값] ) 로 리스트 크기 확인 가능

 

 -  redisTemplate.opsForValue().remove( [key 값], [데이터의 순번] , [ 삭제할 value] ) 로 리스트안 특정 데이터 삭제 가능

 

 

3. ListOperations<K, V> 예시

 

    @Autowired
    RedisTemplate<String, String> redisTemplate;

    @Test
    void redisTest(){
        redisTemplate.opsForList().leftPush("test:list1","1");
        System.out.println("test:list1 value = ");
        System.out.println(redisTemplate.opsForList().range("test:list1",0,-1));

        List<String> values = new ArrayList<>();
        values.add("2");
        values.add("3");
        redisTemplate.opsForList().leftPushAll("test:list1", values);
        System.out.println("test:list1 value = ");
        System.out.println(redisTemplate.opsForList().range("test:list1",0,-1));

        redisTemplate.opsForList().rightPush("test:list1", "4");
        System.out.println("test:list1 value = ");
        System.out.println(redisTemplate.opsForList().range("test:list1",0,-1));

        System.out.println("test:list1 size = ");
        System.out.println(redisTemplate.opsForList().size("test:list1"));
        
        redisTemplate.opsForList().leftPop("test:list1");
        System.out.println("test:list1 value = ");
        System.out.println(redisTemplate.opsForList().range("test:list1",0,-1));

        redisTemplate.opsForList().rightPop("test:list1");
        System.out.println("test:list1 value = ");
        System.out.println(redisTemplate.opsForList().range("test:list1",0,-1));

    }

 

 

 

 

'Redis > Spring Data Redis' 카테고리의 다른 글

[Spring Data Redis] Sorted Sets  (0) 2024.05.13
[Spring Data Redis] Hashes  (0) 2024.05.13
[Spring Data Redis] Sets  (0) 2024.05.13
[Spring Data Redis] Strings  (0) 2024.05.13
[Spring Data Redis] 기본 설정 방법  (0) 2024.05.13