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. 명령 예: |
#在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"
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의 주요 관련 명령에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!