>  기사  >  데이터 베이스  >  Redis의 주요 관련 명령에 대한 자세한 설명

Redis의 주요 관련 명령에 대한 자세한 설명

尚
앞으로
2019-11-27 17:03:282629검색

Redis의 주요 관련 명령에 대한 자세한 설명

1. 개요:

이 글에서는 Key와 관련된 Redis 명령어를 중심으로 설명하겠습니다. 이러한 명령을 학습하는 것은 Redis를 학습하는 데 매우 중요한 기초이자 Redis의 잠재력을 최대한 활용할 수 있는 강력한 도구이기도 합니다. (추천: redis 동영상 튜토리얼)

2. 관련 명령 목록:

명령 프로토타입 시간 복잡도 명령 설명 반환 값
KEYS 패턴 O(N) N은 시간 복잡도로 데이터베이스의 키 수를 나타냅니다. 패턴 매개변수와 일치하는 모든 키를 가져옵니다. 대규모 데이터베이스의 경우 이 명령은 시간이 많이 걸리고 Redis 서버의 성능에 상대적으로 큰 영향을 미치기 때문에 일반적인 작업에서는 이 명령을 호출하지 않도록 해야 합니다. 패턴은 전역 스타일 와일드카드 형식을 지원합니다. 예를 들어 *는 하나 이상의 문자를 나타내고, ?는 모든 문자를 나타내며, [abc]는 대괄호 안의 문자를 나타냅니다. 패턴과 일치하는 키 목록입니다.
DEL 키 [키 ...] O(N) 시간 복잡도의 N은 삭제된 키의 수를 나타냅니다. 데이터베이스에서 매개변수에 지정된 키를 삭제합니다. 지정된 키가 없으면 무시됩니다. 또한 지정된 Key와 연관된 데이터 유형이 String 유형이 아니라 List, Set, Hashes 및 Sorted Set와 같은 컨테이너 유형인 경우 각 키를 삭제하는 이 명령의 시간 복잡도는 O라는 점도 지적해야 합니다. (M), 여기서 M은 컨테이너의 요소 수를 나타냅니다. 문자열 유형 키의 경우 시간 복잡도는 O(1)입니다. 삭제된 키의 실제 개수입니다.
EXISTS 키 O(1) 지정된 키가 존재하는지 확인합니다. 1은 존재함을 의미하고, 0은 존재하지 않음을 의미합니다.
MOVE 키 db O(1) 현재 데이터베이스에 지정된 키 Key를 매개변수에 지정된 데이터베이스로 이동합니다. 키가 대상 데이터베이스에 이미 존재하거나 현재 데이터베이스에 존재하지 않는 경우 이 명령은 아무 작업도 수행하지 않고 0을 반환합니다. 이동이 성공하면 1을 반환하고 그렇지 않으면 0을 반환합니다.
RENAME key newkey O(1) 지정된 키의 이름을 바꿉니다. 매개변수의 두 Keys 명령이 동일하거나 소스 Key가 존재하지 않으면 이 명령은 관련 오류 정보를 반환합니다. newKey가 이미 존재하는 경우 직접 덮어씁니다.
RENAMENX key newkey O(1) 새 값이 없으면 매개변수의 원래 값을 새 값으로 수정합니다. 다른 조건은 RENAME과 일치합니다. 1은 수정이 성공했음을 의미하고, 그렇지 않으면 0을 의미합니다.
PERSIST key O(1) 키에 만료 시간이 있는 경우 이 명령은 만료 시간을 제거하여 키에 더 이상 시간 제한이 없고 지속적으로 저장될 수 있도록 합니다. 1은 키의 만료 시간이 변경되었음을 의미하고, 0은 키가 존재하지 않거나 만료 시간이 없음을 의미합니다.
EXPIRE 키 초 O(1) 이 명령은 매개변수에 지정된 키에 대한 시간 초과 초를 설정합니다. 이 시간이 초과되면 키가 자동으로 삭제됩니다. 시간 초과가 발생하기 전에 키를 수정하면 키와 관련된 시간 초과가 제거됩니다. 1은 시간 초과가 설정되었음을 의미하고, 0은 키가 존재하지 않거나 설정할 수 없음을 의미합니다.
EXPIREAT 키 타임스탬프 O(1) 이 명령의 논리적 기능은 EXPIRE와 완전히 동일합니다. 유일한 차이점은 이 명령으로 지정된 시간 초과가 상대 시간이 아니라 절대 시간이라는 점입니다. time 매개변수는 1970년 1월 1일 이후 경과된 초 수를 나타내는 Unix 타임스탬프 형식입니다. 1은 시간 초과가 설정되었음을 의미하고, 0은 키가 존재하지 않거나 설정할 수 없음을 의미합니다.
TTL 키 O(1) 키의 남은 시간 초과 설명을 가져옵니다. 나머지 설명을 반환하거나, 키가 존재하지 않거나 시간 초과 설정이 없으면 -1을 반환합니다.
RANDOMKEY O(1) 현재 열려 있는 데이터베이스에서 임의의 키를 반환합니다. 임의의 키가 반환되거나, 데이터베이스가 비어 있으면 nil입니다.
TYPE 키 O(1) 매개변수에 지정된 키와 관련된 값 유형을 가져옵니다. 이 명령은 이를 문자열 형식으로 반환합니다. 반환되는 문자열은 string, list, set, hash 및 zset입니다. 키가 없으면 아무것도 반환되지 않습니다.
SORT 키 [BY 패턴] [LIMIT 오프셋 카운트] [GET 패턴 [GET 패턴 ...]] [ASC|DESC] [ALPHA] [STORE 대상] O(N+M*log(M) ) 이 명령은 비교적 복잡하므로 여기서는 가장 기본적인 사용법만 설명합니다. 관심 있는 네티즌은 redis 공식 문서를 참조할 수 있습니다. 원래 정렬된 목록을 반환합니다.示 III. 명령 예:
1, 키/이름 바꾸기/Del/EXISTS/이동/Renamenx:

    #在Shell命令行下启动Redis客户端工具。
    /> redis-cli
    #清空当前选择的数据库,以便于对后面示例的理解。
    redis 127.0.0.1:6379> flushdb
    OK
    #添加String类型的模拟数据。
    redis 127.0.0.1:6379> set mykey 2
    OK
    redis 127.0.0.1:6379> set mykey2 "hello"
    OK
    #添加Set类型的模拟数据。
    redis 127.0.0.1:6379> sadd mysetkey 1 2 3
    (integer) 3
    #添加Hash类型的模拟数据。
    redis 127.0.0.1:6379> hset mmtest username "stephen"
    (integer) 1
    #根据参数中的模式,获取当前数据库中符合该模式的所有key,从输出可以看出,该命令在执行时并不区分与Key关联的Value类型。
    redis 127.0.0.1:6379> keys my*
    1) "mysetkey"
    2) "mykey"
    3) "mykey2"
    #删除了两个Keys。
    redis 127.0.0.1:6379> del mykey mykey2
    (integer) 2
    #查看一下刚刚删除的Key是否还存在,从返回结果看,mykey确实已经删除了。
    redis 127.0.0.1:6379> exists mykey
    (integer) 0
    #查看一下没有删除的Key,以和上面的命令结果进行比较。
    redis 127.0.0.1:6379> exists mysetkey
    (integer) 1
    #将当前数据库中的mysetkey键移入到ID为1的数据库中,从结果可以看出已经移动成功。
    redis 127.0.0.1:6379> move mysetkey 1
    (integer) 1
    #打开ID为1的数据库。
    redis 127.0.0.1:6379> select 1
    OK
    #查看一下刚刚移动过来的Key是否存在,从返回结果看已经存在了。
    redis 127.0.0.1:6379[1]> exists mysetkey
    (integer) 1
    #在重新打开ID为0的缺省数据库。
    redis 127.0.0.1:6379[1]> select 0
    OK
    #查看一下刚刚移走的Key是否已经不存在,从返回结果看已经移走。
    redis 127.0.0.1:6379> exists mysetkey
    (integer) 0
    #准备新的测试数据。    
    redis 127.0.0.1:6379> set mykey "hello"
    OK
    #将mykey改名为mykey1
    redis 127.0.0.1:6379> rename mykey mykey1
    OK
    #由于mykey已经被重新命名,再次获取将返回nil。
    redis 127.0.0.1:6379> get mykey
    (nil)
    #通过新的键名获取。
    redis 127.0.0.1:6379> get mykey1
    "hello"
    #由于mykey已经不存在了,所以返回错误信息。
    redis 127.0.0.1:6379> rename mykey mykey1
    (error) ERR no such key
    #为renamenx准备测试key
    redis 127.0.0.1:6379> set oldkey "hello"
    OK
    redis 127.0.0.1:6379> set newkey "world"
    OK
    #由于newkey已经存在,因此该命令未能成功执行。
    redis 127.0.0.1:6379> renamenx oldkey newkey
    (integer) 0
    #查看newkey的值,发现它也没有被renamenx覆盖。
    redis 127.0.0.1:6379> get newkey
    "world"
E

2, 지속/만료/TTL:

Rreeee
3, 유형/유형/유형/ RANDOMKEY /SORT:

    #为后面的示例准备的测试数据。
    redis 127.0.0.1:6379> set mykey "hello"
    OK
    #将该键的超时设置为100秒。
    redis 127.0.0.1:6379> expire mykey 100
    (integer) 1
    #通过ttl命令查看一下还剩下多少秒。
    redis 127.0.0.1:6379> ttl mykey
    (integer) 97
    #立刻执行persist命令,该存在超时的键变成持久化的键,即将该Key的超时去掉。
    redis 127.0.0.1:6379> persist mykey
    (integer) 1
    #ttl的返回值告诉我们,该键已经没有超时了。
    redis 127.0.0.1:6379> ttl mykey
    (integer) -1
    #为后面的expire命令准备数据。
    redis 127.0.0.1:6379> del mykey
    (integer) 1
    redis 127.0.0.1:6379> set mykey "hello"
    OK
    #设置该键的超时被100秒。
    redis 127.0.0.1:6379> expire mykey 100
    (integer) 1
    #用ttl命令看一下当前还剩下多少秒,从结果中可以看出还剩下96秒。
    redis 127.0.0.1:6379> ttl mykey
    (integer) 96
    #重新更新该键的超时时间为20秒,从返回值可以看出该命令执行成功。
    redis 127.0.0.1:6379> expire mykey 20
    (integer) 1
    #再用ttl确认一下,从结果中可以看出果然被更新了。
    redis 127.0.0.1:6379> ttl mykey
    (integer) 17
    #立刻更新该键的值,以使其超时无效。
    redis 127.0.0.1:6379> set mykey "world"
    OK
    #从ttl的结果可以看出,在上一条修改该键的命令执行后,该键的超时也无效了。
    redis 127.0.0.
    1:6379> ttl mykey
      (integer) -1

더 많은 Redis 지식을 알고 싶다면

redis 입문 튜토리얼

칼럼을 주목해 주세요.

위 내용은 Redis의 주요 관련 명령에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 cnblogs.com에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제