Redis

[Redis] redis 키 관련 명령어

석석's 2022. 1. 2. 14:55

레디스의 데이터들은 {키:값} 형태로 관리된다.

레디스에 저장 가능한 value값의 타입종류
 1.String
 2.List
 3.Hashes
 4.Sets
 5.Sorted Sets


키 생성방법
 - set key명 value 
   ex) set myname "seok"  

 

- set key명 value nx

  ex) set myname "seok" nx  ->이미 존재하는 key명일 경우 생성안됨!!(안전!)

 

- set key명 value xx

  ex) set myname "seok" xx  ->이미 존재하는 key에 해당 값으로 변경시킴(이미 존재하는 key여야함)



해당 key의 해당하는 value 얻기
 - get key명
   ex) get myname

키 삭제방법
 - del key명
   ex) del myname
 
 - del key명 key명2....
   ex) del myname test mykey ...

 - unlink key명
   ex) unlink myname 

 - unlink key명
   ex) unlink myname test ...   -> 대규모 key 삭제시 비동기처리로 삭제하게할 수 있음 del 키워드로 삭제하면 너무 느리기 때문에 이거 사용함 (실질적 삭제는 해당키에 접근했을때 삭제가 된다.) 

 

 값에 더 추가 데이터 넣는법 

 - append key명 value

   ex) append myname Na  -> 결과값으로 Integer 값을 주는데 총 value값의 길이이다.


 저장된 데이터가 존재하는지 확인하는 방법
  - exists key명
    ex) exists myname    -> 결과 integer값이 0이면 존재하지 않음 , 1이면 존재함  

  - exists key명 key명2 ..
    ex) exists myname test ..  -> 결과 integer 값이 찾으려는 key 수와 같지 않다면 해당 키중에서 무언가는 존재하지 않는 값이라고 판단  


키생성 과 만료시간 설정
 - set key명 value time (ex는 초단위 px는 밀리세컨즈) 
   ex) set myname "seok" ex 10  -> 10초 동안 유지됨    
   ex) set myname "seok" px 10000  -> 10초 동안 유지됨    


키 만료시간 얼마나 남았는지 확인 방법
 - ttl key명
   ex) ttl myname -> integer 값으로 응답해줌 , -2값이 응답이 오면 만료되었다는 뜻 
                 -> 키 생성시 만료시간을 설정해주지 않으면 -1 로 응답이 온다.
 - pttl key명
   ex) pttl myname -> 만료시간 설정을 밀리세컨즈로 설정했을경우 확인 방법(ttl로 확인하면 밀리세컨즈 단위로 알수 없을뿐 안되는건 아님)


만료시간을 설정하지 않고 key를 만들어낸 후 뒤에 만료시간을 설정하는법
 - Expire key명 time
   ex) expire myname 20  -> myname 이라는 이름을 가진 key는 20초 후 만료된다.(초단위)
   ex) pexpire myname 20000  -> myname 이라는 이름을 가진 key는 20초 후 만료된다.(밀리세컨즈)

설정된 만료시간 없애기
 - persist key명
   ex) persist myname  -> 기존에 설정해둔 만료시간을 없애버린다. 
                     -> 기존에 설정해둔 만료시간이 있었다면 1로 응답이 오고 없다면 0으로 응답이 온다.  


같은키 이름에 set 해서 다시 하게되면?
 - set myname "seok" 이후 set myname "Na" 로 바꾸게 되면 기존것에 덮어씌어져서 마지막것으로 설정되어있다.   


key 이름 재정의하기
 - rename 기존key명 새로운key명 
   ex) rename myname name -> 기존키와 새로운키가 존재한다면 기존키는 삭제가 되어버린다.

 ** rename 새롭게바꿧던key명 다른key명 - 이미 존재하던 key명을 새롭게 바꿧던 키명에 다시바꿀 key명으로 정의시 값이 덮어씌어진다 

 - renamenx myname name
 - 만약에 해당 키값이 존재한다면 변경되지 않고 삭제가 되지 않는다.(안전!!)


저장되어있는 값 타입 확인하기
 - type key명
   ex) type myname