[Redis] Set 데이터 운영 - (Jedis)

2024. 4. 15. 15:12기술 창고/DataBase

728x90
SMALL

Redis의 Set은 정렬되지 않은 String 리스트입니다.

데이터의 고유성을 보장하여 중복을 허용하지 않기 때문에 SNS 팔로우, 블랙리스트 업, 태그와 같은 여러 방면에서 사용됩니다.

 

주요 명령어

- SADD

- SREM

- SISMEMBER

- SMEMBERS

- SINTER

- SCARD

 

 


 

Command 실습

SADD

sadd는 set에 데이터를 넣는 명령어입니다.

단일성으로 데이터를 넣어줄 수도 있지만 다중 데이터를 한번에 넣어줄 수도 있습니다.

- 형식 : sadd {set 명} {데이터 1} {데이터 2} ...

 

 

 

SCARD

scard는 set에 넣어진 데이터의 수(row 수)를 출력하는 명령어입니다.

card는 cardinality의 줄임말로써 row 수, 즉, 데이터 수를 말합니다.

- 형식 : scard {set 명}

 

 

 

SMEMBERS

smembers는 set에 있는 데이터들을 모두 출력하는 명령어입니다.

- 형식 : smembers {set 명}

 

 

 

SISMEMBER

sismember는 특정 데이터가 특정 set에 존재하는지 파악하기 위한 명령어입니다.

- 형식 : sismember {set 명} {데이터 값}

 

특정 데이터가 존재할 경우는 1을 반환, 없을 경우 0을 반환합니다.

 

 

SINTER

sinter는 다중 set들 간에 공통된 데이터를 출력해주는 명령어입니다.

- 형식 : sinter {비교 set 1} {비교 set 2} ...

 

 

 

SREM

srem은 특정 set에 존재하는 특정 데이터를 삭제하는 명령어입니다.

- 형식 : srem {set 명} {삭제 데이터 값}

 

 

 


Spring Boot 사전 연동 필요

https://jindevelopetravel0919.tistory.com/395

 

[Redis] Spring Boot 와 Redis 연동 설정 - (Jedis)

Spring Boot 환경에서 Redis 를 사용하기 위한 방법 중 하나인 Jedis 설정 과정과 연동 과정에 대해 정리해보겠습니다. 또한 제가 진행하고자 하는 Spring Boot는 gradle 환경입니다. (1) Dependency 추가 Build.gra

jindevelopetravel0919.tistory.com

 

Spring Boot 활용 실습

// Redis - Set
public void jedisOfSets() {
    try (JedisPool pool = jedisPoolSetting()) {
        try (Jedis jedis = pool.getResource()) {
            // [ SADD ]
            // set 데이터 추가
            jedis.sadd("users:100:follow", "150", "회원");
            jedis.sadd("users:200:follow", "150", "300");
            jedis.sadd("users:500:follow", "100", "200", "300", "회원");
            
            // [ SREN ]
            // set 데이터 삭제
            jedis.srem("users:500:follow", "100");

            // [ SMEMBERS ]
            // set에 들어있는 값들
            Set<String> smembers = jedis.smembers("users:500:follow");
            smembers.forEach(System.out::println);

            // [ SISMEMBER ]
            // 특정 데이터 존재 확인
            System.out.println(jedis.sismember("users:500:follow", "200"));
            System.out.println(jedis.sismember("users:500:follow", "400"));

            // [ SCARD ]
            // s card - set의 현재 가지고 있는 데이터의 row 수
            System.out.println(jedis.scard("users:500:follow"));

            // [ SINTER ]
            // s inter - set 끼리 동일한 값을 가지고 있는지 확인
            Set<String> sinter = jedis.sinter("users:500:follow", "users:100:follow");
            sinter.forEach(System.out::println);

        }
    }
}

 

결과

 

728x90
반응형
LIST