개발일기

Redis 2탄 - php redis의 명령어들 본문

DB/SQL

Redis 2탄 - php redis의 명령어들

Flashback 2021. 6. 18. 17:17
728x90
반응형

레디스 2탄

요번 포스팅은 레디스 설치 및 세팅에 이은 간단한 레디스 명령어에 관한 내용을 다룰 것이다.

필자는 php8.0을 사용하고 있다. 또한 라라벨 8버전을 사용하기 있기에 이보다 아랫버전을 사용하고 있을 경우에는 에러가 날 수 있다. 버전이 올라가면서 약간씩 달라졌기 때문이다.

 

1. 삽입

1-1. Set 명령어

레디스에서 기초가 되는 것이 바로 Set이다. Set을 통해 String타입의 문자를 저장할 수 있다.

use Illuminate\Support\Facades\Redis; 

Redis::set('keyname', 'values');

이것이 set을 사용하는 방법이다. 매우 간단하다. use를 통해 설치된 Redis를 import한 후, 명령구문을 쓸 때, Redis라고 입력하여 레디스를 사용한다고 명시해주는 역할을 한다. 첫번째 파라미터에는 키이름이 들어간다. 두 번째에는 해당 키에 저장될 값이 들어가게 된다. set은 String타입만 들어갈 수 있기 때문에 배열이나 객체 타입으로 값을 저장하게 되면 오류가 발생한다는 것을 알아두자.

 

1-2. Hash 명령어

Hash명령어는 하나의 묶음을 만든 후, 그 안에 Key, Value타입의 값들을 집어넣는 것을 뜻한다. 

Redis::hset( 'group_name', 'keyname', 'values' );

Hash는 이런식으로 사용한다. group_name이라는 것은 여러개의 키와 값을 넣을 때 공통분모로 가지고 있을 문자열을 뜻한다. 예를 들어 게시글에 관한 정보들을 Redis에 삽입할 때, group_name을 post라고 작성한 후, key에는 게시글 번호,  value에는 작성자, 내용 등의 정보를 넣는 방식으로 사용할 수 있다. 그룹형식으로 묶어버리기 때문에 hash를 사용하여 정보를 삽입할 경우 key, value의 집합을 조금더 수월하게 가져올 수 있다.

 

2. 삭제

Redis에는 RDBMS의 update와 같은 명령어가 존재하지 않는다. 삽입 명령어를 통해 값을 저장할 때, 해당하는 키 값이 존재하면 값을 덮어씌운다. 만약 값이 존재하지 않으면 새로운 값을 넣게된다. 그렇기 때문에 자동으로 insert와 update가 구분되어 들어가게 된다.

 

2-1. del

Redis::del('key_name');

레디스에서  키 값은 고유해야 한다. 그렇기 때문에 고유한 키 값을 파라미터에 넣고 del이라는 명령어를 사용하면 해당 키에 속해있는 값과 키를 삭제시켜준다.

 

 

2-2. hdel

Redis::hdel('group_name', 'keyname');

hash타입도 별반다를게 없다. hdel이라는 명령어를 사용한 후, group_name이라는 파라미터가 추가된 것 밖에 달라진 것이 없다.

A라는 그룹과 B라는 그룹명을 가진 해시데이터가 존재한다고 가정을 해보자. hdel('A', 'post1') 라고 작성한 경우 A그룹에 속해있는 post1이라는 키 값을 가진 데이터가 삭제된다. 만약 B그룹에 post1이라는 키값이 존재하기는 하지만 그룹명을 A라고 명시하였기 때문에 B그룹에 속해있는 데이터는 영향을 받지 않고 값이 그대로 유지가 된다.

 

 

3. 팁

레디스에서 키는 고유한 값을 가진다고 말하였다. 그렇기에 레디스를 활용하면 키를 구분하여 값들을 가져와야 하는 경우가 발생한다. 매번 독창적인 키이름을 대입한 후 구분하여 가져올 수도 있지만, 더 효과적인 방법으로는 키에 인덱스를 부여하는 것이다. 레디스에 키를 저장할 때는 :  를 기준으로 문자열을 나열하여 구분할 수 있다. user:group:1 이러한 방식으로 말이다. 게시글이 늘어날 때 마다, 인덱스 숫자가 늘어나게 만든 후, 마지막 구분자에 속해있는 인덱스 숫자를 조건값으로 하여 값을 가져오는 방식으로 레디스를 활용한다.

 

 

http://redisgate.kr/redisgate/ent/ent_intro.php

 

Redis-Enterprise Introduction

ent_intro 레디스 엔터프라이즈 레디스 엔터프라이즈 서버의 주요 기능 I.   Redis + SQL : 데이터 활용 획기적 향상 II.  Active-Active 이중화 : 진정한 고가용성을 실현 III. 메모리 한계 극복 IV. 기타 추

redisgate.kr

이 사이트는 redis-cli즉 redis 명령프롬포트창에서 redis를 조작하기 위한 명령어들이 기술되어져 있다.

 

 

https://github.com/phpredis/phpredis

 

phpredis/phpredis

A PHP extension for Redis. Contribute to phpredis/phpredis development by creating an account on GitHub.

github.com

두번째로, 이 사이트는 php에서 사용하는 redis 관련 명령어들이 기술되어져 있다. 위에 기술한것 처럼 set, hset, del, hdel 외에도 다양한 명령어들이 존재하는 것을 확인할 수 있다. 명령어 종류가 엄청 많기 때문에 모든 명령어를 다 외울생각은 하지말고, 필요한 상황이 생기면 그때 그때 검색하여 이해한 후 활용하는 것을 추천한다.

 

 

4. 다음에는???

다음 포스팅에는 라라벨 프레임워크 구조에 대해 포스팅하려고 한다. 라라벨관련하여 개인 프로젝트 등의 개발을 진행하면서 해당 프레임워크에 관한 구조와 작동 방식 등을 간략하게 나마 정리하면 다른 언어를 사용하여 가물가물해지는 라라벨 프레임워크에 대한 지식을 다시 일깨울 수 있을 것이라 판단되기 때문이다.

728x90
반응형
Comments