Redis는 키의 생존 시간을 제공합니다. 생존 시간을 지정하지 않으면 생존 시간은 영구적입니다. Redis는 시간이 만료된 후 이 키를 자동으로 삭제합니다. EXPIRE 명령을 사용할 수 있으며 시간 단위는 초입니다. 키의 수명이 제한되어 있으면 SET 키가 다시 할당되면 다시 영구 설정됩니다.
SET session:captcha sd2a EXPIRE session:captcha 600
수명을 취소하고 수명을 변경하세요. 키가 영구로 설정됨(PERSIST):
PERSIST session:captcha
TTL 명령을 사용하여 키의 생존 시간을 확인합니다. -1은 만료 후 영구 또는 삭제됨을 의미합니다.
TTL session:captcha
Redis의 INCR, LPUSH, HSET, ZREM 및 기타 명령 중에는 생존 시간이 변경되지 않습니다.
(추천: redis 동영상 튜토리얼)
시간을 밀리미터 단위까지 정확하게 제어하고 싶다면 PEXPIRE가 필요하며, 남은 시간을 확인하려면 PTTL을 사용하세요.
만료 시간이 몇 초인지가 아니라 만료 시간을 부여하고 싶다면 어떻게 해야 하나요? EXPIREAT와 PEXPIREAT가 필요합니다. EXPIREAT의 매개변수는 만료 타임스탬프(초)이고, PEXPIREAT의 매개변수는 타임스탬프의 만료 시간(밀리초)입니다.
SET session:captcha sd2a EXPIREAT session:captcha 1399902009 PEXPIREAT session:captcha 1399902009000
응용 시나리오 1: 액세스 빈도 제한: 각 사용자가 분당 10개 항목만 탐색하도록 제한합니다. . 의사 코드는 다음과 같습니다.
$isExists = EXISTS limit:user1:192.168.1.2 if($isExists){ $num = INCR limit:user1:192.168.1.2 if($num > 10){ print '超过限制' exit } }else{ MULTI INCR limit:user1:192.168.1.2 EXPIRE limit:user1:192.168.1.2 60 EXEC }
트랜잭션을 사용하는 이유는 INCR Limit:user1:192.168.1.2를 실행한 후 EXPIRE Limit:user1:192.168.1.2 60을 실행하기 전에 클라이언트가 닫히기 때문입니다. 그러면 키와 값이 유지됩니다. 그리고 이 아이디는 평생 10번만 접속이 가능합니다. 안됐네요.
애플리케이션 시나리오 2: 캐싱을 구현합니다. 10,000명의 사용자에 대한 순위를 계산하는 것은 리소스 집약적이므로 1차 계산 후 데이터를 키에 저장한 다음 이 키의 생존 시간을 설정합니다. 1시간이 지나면 생존시간이 만료되고 키는 삭제되며, 새로운 순위가 다시 계산되어 임시키가 저장됩니다. 우리는 의사 코드를 사용하여 다음을 구현합니다.
//战斗排行榜 $rank = GET cache:rank:fight if not $rank $rank = 计算排名() MULTI SET cache:rank:fight $rank EXPIRE cache:rank:fight 3600 EXEC
Redis는 메모리에 저장된 데이터베이스입니다. 메모리가 캐시로 가득 차면 Redis는 구성 파일을 기반으로 특정 캐시를 삭제합니다. 구성 항목은 Redis 구성 파일의 maxmemory 매개 변수이며 단위는 바이트입니다. 이 제한을 초과하면 구성 파일의 maxmemory-policy 매개변수에 따라 불필요한 키가 삭제됩니다. maxmemory-policy의 선택적 규칙은 다음과 같습니다.
1. 휘발성-lru: LRU 알고리즘을 사용하여 키(생존 시간이 설정된 키)를 삭제합니다.
2. allkey-lru: LRU 알고리즘을 사용하여 키를 삭제합니다.
3. 휘발성-임의: 키를 즉시 삭제합니다(수명 기간이 설정된 키).
4. allkey-random: 키를 즉시 삭제합니다.
5. 휘발성-ttl: 수명이 곧 만료되는 키를 삭제합니다. 만료가 임박한 키를 삭제하기 위해 모든 키를 순회하는 것이 아니라, N개의 키를 한번에 꺼낸 후, 만료가 임박한 키를 N개의 키 중에서 삭제하는 것이다. N은 무엇입니까? 구성 파일.
6. Nevication: 삭제하지 말고 오류를 반환합니다.
Redis는 키의 만료 시간을 설정합니다. - EXPIRE 명령
EXPIRE key seconds
은 키가 만료되면(생존 시간이 0) 자동으로 삭제됩니다.
Redis에서는 수명이 있는 키를 "휘발성"이라고 합니다.
DEL 명령을 사용하여 전체 키를 삭제하거나 SET 및 GETSET 명령으로 덮어써서 수명을 제거할 수 있습니다. 즉, 명령이 수명이 있는 키 값만 수정(변경)하는 경우 새로운 키 값을 입력해도 수명은 변경되지 않습니다.
예를 들어 키에 대해 INCR 명령을 실행하거나, 목록에 대해 LPUSH 명령을 실행하거나, 해시 테이블에 대해 HSET 명령을 실행하는 경우 이러한 작업은 키 자체의 생존 시간을 수정하지 않습니다.
반면에 RENAME을 사용하여 키 이름을 바꾸는 경우 이름이 바뀐 키의 생존 시간은 이름 바꾸기 전과 동일합니다.
RENAME 명령의 또 다른 가능성은 수명이 있는 키의 이름을 수명이 있는 another_key로 바꾸는 것입니다. 이때 이전 another_key(및 해당 수명)가 삭제되고 이전 키의 이름이 another_key로 변경됩니다. , 새로운 another_key의 생존 시간은 원래 키와 동일합니다.
키를 삭제하지 않고 키의 수명을 제거하려면 PERSIST 명령을 사용하여 키를 다시 "영구" 키로 만듭니다.
생존 시간 업데이트
이미 생존 시간이 있는 키에 대해 EXPIRE 명령을 실행할 수 있으며, 새로 지정된 생존 시간이 이전 생존 시간을 대체합니다.
만료 시간의 정확성
Redis 2.4 버전에서 만료 시간 지연은 1초 이내입니다. 즉, 키가 만료되더라도 만료 시간에 액세스한 후 여전히 1초 이내일 수 있습니다. 새로운 Redis 2.6 버전에서는 지연 시간이 1밀리초 미만으로 단축되었습니다.
Redis 2.1.3 이전의 차이점
Redis 2.1.3 이전 버전에서는 수명이 있는 키를 수정하면 전체 키가 삭제됩니다. 이 동작은 당시 복제 레이어 제한의 영향을 받습니다. 이제 수정되었습니다. 사용 가능한 버전:
>= 1.0.0
시간 복잡도:
O(1)
반환 값:
设置成功返回 1 。
当 key 不存在或者不能为 key 设置生存时间时(比如在低于 2.1.3 版本的 Redis 中你尝试更新 key 的生存时间),返回 0 。
redis> SET cache_page "www.google.com" OK redis> EXPIRE cache_page 30 # 设置过期时间为 30 秒 (integer) 1 redis> TTL cache_page # 查看剩余生存时间 (integer) 23 redis> EXPIRE cache_page 30000 # 更新过期时间 (integer) 1 redis> TTL cache_page (integer) 29996
1、在小于2.1.3的redis版本里,只能对key设置一次expire。redis2.1.3和之后的版本里,可以多次对key使用expire命令,更新key的expire time。
2、redis术语里面,把设置了expire time的key 叫做:volatile keys。 意思就是不稳定的key。
3、如果对key使用set或del命令,那么也会移除expire time。尤其是set命令,这个在编写程序的时候需要注意一下。
4、redis2.1.3之前的老版本里,如果对volatile keys 做相关写入操作(LPUSH,LSET),和其他一些触发修改value的操作时,redis会删除 该key。
也就是说 :
redis.expire(key,expiration); redis.lpush(key,field,value); redis.get(key) //return null
redis2.1.3之后的版本里面没有这个约束,可以任意修改。
redis.set(key,100); redis.expire(key,expiration); redis.incr(key) redis.get(key) //redis2.2.2 return 101; redis<2.1.3 return 1;
5、redis对过期键采用了lazy expiration:在访问key的时候判定key是否过期,如果过期,则进行过期处理。其次,每秒对volatile keys 进行抽样测试,如果有过期键,那么对所有过期key进行处理。
更多redis知识请关注redis入门教程栏目。
위 내용은 Redis 생존 시간 설정의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Redis의 주요 기능에는 속도, 유연성 및 풍부한 데이터 구조 지원이 포함됩니다. 1) 속도 : Redis는 메모리 내 데이터베이스이며, 읽기 및 쓰기 작업은 거의 순간적이며 캐시 및 세션 관리에 적합합니다. 2) 유연성 : 복잡한 데이터 처리에 적합한 문자열, 목록, 컬렉션 등과 같은 여러 데이터 구조를 지원합니다. 3) 데이터 구조 지원 : 다양한 비즈니스 요구에 적합한 문자열, 목록, 컬렉션, 해시 테이블 등을 제공합니다.

Redis의 핵심 기능은 고성능 인 메모리 데이터 저장 및 처리 시스템입니다. 1) 고속 데이터 액세스 : Redis는 메모리에 데이터를 저장하고 마이크로 초 수준 읽기 및 쓰기 속도를 제공합니다. 2) 풍부한 데이터 구조 : 문자열, 목록, 컬렉션 등을 지원하며 다양한 응용 프로그램 시나리오에 적응합니다. 3) 지속성 : RDB 및 AOF를 통해 디스크에 데이터를 지속하십시오. 4) 구독 게시 : 메시지 대기열 또는 실시간 통신 시스템에서 사용할 수 있습니다.

Redis는 다음을 포함하여 다양한 데이터 구조를 지원합니다. 1. String, 단일 값 데이터 저장에 적합합니다. 2. 큐 및 스택에 적합한 목록; 3. 비면성 데이터 저장에 사용되는 세트; 4. 순서, 순위 목록 및 우선 순위 대기열에 적합한 순서 세트; 5. 해시 테이블, 객체 또는 구조화 된 데이터를 저장하는 데 적합합니다.

Redis Counter는 Redis Key-Value Pair 스토리지를 사용하여 다음 단계를 포함하여 계산 작업을 구현하는 메커니즘입니다. 카운터 키 생성, 카운트 증가, 카운트 감소, 카운트 재설정 및 카운트 얻기. Redis 카운터의 장점에는 빠른 속도, 높은 동시성, 내구성 및 단순성 및 사용 편의성이 포함됩니다. 사용자 액세스 계산, 실시간 메트릭 추적, 게임 점수 및 순위 및 주문 처리 계산과 같은 시나리오에서 사용할 수 있습니다.

Redis Command Line 도구 (Redis-Cli)를 사용하여 다음 단계를 통해 Redis를 관리하고 작동하십시오. 서버에 연결하고 주소와 포트를 지정하십시오. 명령 이름과 매개 변수를 사용하여 서버에 명령을 보냅니다. 도움말 명령을 사용하여 특정 명령에 대한 도움말 정보를 봅니다. 종금 명령을 사용하여 명령 줄 도구를 종료하십시오.

Redis Cluster Mode는 Sharding을 통해 Redis 인스턴스를 여러 서버에 배포하여 확장 성 및 가용성을 향상시킵니다. 시공 단계는 다음과 같습니다. 포트가 다른 홀수 redis 인스턴스를 만듭니다. 3 개의 센티넬 인스턴스를 만들고, Redis 인스턴스 및 장애 조치를 모니터링합니다. Sentinel 구성 파일 구성, Redis 인스턴스 정보 및 장애 조치 설정 모니터링 추가; Redis 인스턴스 구성 파일 구성, 클러스터 모드 활성화 및 클러스터 정보 파일 경로를 지정합니다. 각 redis 인스턴스의 정보를 포함하는 Nodes.conf 파일을 작성합니다. 클러스터를 시작하고 Create 명령을 실행하여 클러스터를 작성하고 복제본 수를 지정하십시오. 클러스터에 로그인하여 클러스터 정보 명령을 실행하여 클러스터 상태를 확인하십시오. 만들다

Redis의 대기열을 읽으려면 대기열 이름을 얻고 LPOP 명령을 사용하여 요소를 읽고 빈 큐를 처리해야합니다. 특정 단계는 다음과 같습니다. 대기열 이름 가져 오기 : "큐 :"와 같은 "대기열 : my-queue"의 접두사로 이름을 지정하십시오. LPOP 명령을 사용하십시오. 빈 대기열 처리 : 대기열이 비어 있으면 LPOP이 NIL을 반환하고 요소를 읽기 전에 대기열이 존재하는지 확인할 수 있습니다.

Redis 클러스터에서 ZSET 사용 : ZSET은 요소를 점수와 연관시키는 순서 컬렉션입니다. 샤딩 전략 : a. 해시 샤딩 : ZSET 키에 따라 해시 값을 배포하십시오. 비. 범위 샤딩 : 요소 점수에 따라 범위로 나누고 각 범위를 다른 노드에 할당합니다. 작업 읽기 및 쓰기 작업 : a. 읽기 작업 : ZSET 키가 현재 노드의 샤드에 속하는 경우 로컬로 처리됩니다. 그렇지 않으면 해당 샤드로 라우팅됩니다. 비. 쓰기 작업 : 항상 ZSET 키를 들고있는 파편으로 라우팅합니다.


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

mPDF
mPDF는 UTF-8로 인코딩된 HTML에서 PDF 파일을 생성할 수 있는 PHP 라이브러리입니다. 원저자인 Ian Back은 자신의 웹 사이트에서 "즉시" PDF 파일을 출력하고 다양한 언어를 처리하기 위해 mPDF를 작성했습니다. HTML2FPDF와 같은 원본 스크립트보다 유니코드 글꼴을 사용할 때 속도가 느리고 더 큰 파일을 생성하지만 CSS 스타일 등을 지원하고 많은 개선 사항이 있습니다. RTL(아랍어, 히브리어), CJK(중국어, 일본어, 한국어)를 포함한 거의 모든 언어를 지원합니다. 중첩된 블록 수준 요소(예: P, DIV)를 지원합니다.

WebStorm Mac 버전
유용한 JavaScript 개발 도구

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기

에디트플러스 중국어 크랙 버전
작은 크기, 구문 강조, 코드 프롬프트 기능을 지원하지 않음

맨티스BT
Mantis는 제품 결함 추적을 돕기 위해 설계된 배포하기 쉬운 웹 기반 결함 추적 도구입니다. PHP, MySQL 및 웹 서버가 필요합니다. 데모 및 호스팅 서비스를 확인해 보세요.
