>백엔드 개발 >PHP 튜토리얼 >처음부터 Redis 캐시로 시작하기

처음부터 Redis 캐시로 시작하기

不言
不言원래의
2018-06-04 09:48:581762검색

이 글은 주로 Redis 캐시를 처음부터 시작하는 방법을 소개합니다. 이제는 모든 사람과 공유합니다. 필요한 친구들이 참고할 수 있습니다.

  1. Redis
오픈 소스

ANSI C 언어를 사용하여 작성되었으며 네트워크, 메모리 기반 및 영구 로그 유형, Key-Valuedatabase를 지원하고 API를 여러 언어로 제공합니다. 2010year3month15일부터 Redis의 개발 작업은 VMware에서 호스팅됩니다. 2013year5월부터 Redis 개발은 Pivotal의 후원을 받습니다. redis

키-값저장 시스템입니다. Memcached와 유사하게 string(string), list(linked list)을 포함하여 상대적으로 더 많은 value 유형을 지원합니다. set(set), zset(sorted set --ordered set)hash(해시 유형). 이러한 데이터 유형은 모두 push/pop, 추가/제거 및 교차점, 결합, 차이 및 다양한 작업을 지원하며 이러한 작업은 모두 원자적입니다. 이를 기반으로 redis는 다양한 정렬 방법을 지원합니다. memcached처럼 효율성을 보장하기 위해 데이터가 메모리에 캐시됩니다. 차이점은 redis는 주기적으로 업데이트된 데이터를 디스크에 쓰거나 수정 작업을 추가 기록 파일에 쓰는데, 이를 기반으로 master-slave(master-slave)가 Sync를 구현합니다.

Redis 는 고성능 키-값 데이터베이스입니다. redis의 출현으로 memcached와 같은 key/value 저장소 부족이 크게 보완되었으며 일부 경우에는 관계형 데이터베이스에 대한 아주 좋은 보완 역할을 할 수 있습니다. Java, C/C++, C#, PHP, JavaScript, Perl을 제공합니다. , Object-C, Python, Ruby, Erlang 및 기타 클라이언트는 사용하기 매우 편리합니다. [1]

Redis은 마스터-슬레이브 동기화를 지원합니다. 데이터는 마스터 서버에서 원하는 수의 슬레이브 서버로 동기화될 수 있으며, 슬레이브 서버는 다른 슬레이브 서버와 연결된 마스터 서버가 될 수 있습니다. 이를 통해 Redis가 단일 수준 트리 복제를 수행할 수 있습니다. 저장은 의도적으로 또는 의도하지 않게 데이터를 쓸 수 있습니다. 게시 /구독 메커니즘이 완전히 구현되었으므로 슬레이브 데이터베이스가 어디에서나 트리를 동기화하면 채널을 구독하고 마스터 서버의 전체 메시지 게시 기록을 받을 수 있습니다. 동기화는 읽기 작업의 확장성과 데이터 중복성에 도움이 됩니다.

redis의 공식 웹사이트 주소는 매우 기억하기 쉽습니다. redis.io입니다. (구체적으로 확인해보니 도메인 이름 접미사 io가 국가 도메인 이름, 즉 영국인도양 지역, 즉 영국령 인도양 지역에 속하는 것으로 확인되었습니다.)

현재 Vmwareredis 프로젝트 개발 및 유지 관리에 자금을 지원하고 있습니다.

2. Redis 설치

설치 파일의 압축을 푼다

압축해제 후

make를 실행하여 컴파일

컴파일

src 디렉토리를 입력하세요


Redis-cli 터미널 작업

Redis 서비스를 시작하기 위한 Redis-server 파일

Redis-benchmark 스트레스 테스트 파일

Redis-check-xx 검사 백업 파일 스크립트

Redis 실행 디렉터리를 생성하고 둘 다 복사합니다. 과거의 파일

과거의 구성 파일 복사

3. Redis 서비스 시작

프론트 엔드에서 Redis 서비스 시작 성공의 신호

. /redis-서버

현재 시작된 것은 끌 수 없는 문제가 있습니다. 끄면 사라지므로 수정이 필요합니다.

서비스 중지 Ctrl+z

redis 서비스 우선

백그라운드를 사용하여 Redis 서비스 시작

vim redis.conf

yes로 변경하고 저장한 후 백그라운드에서 Redis를 시작하도록 설정

다시 시작

아직 프론트엔드 시작

시작할 때 구성 파일을 가져와서 함께 시작하세요

View Redis 프로세스를 다운로드하고

Redis가 시작된 것을 확인하세요

4.

을 사용하여 세 가지 변수를 설정하세요. 이 세 가지 변수는 모두 메모리에 저장됩니다.

읽는 방법?

받아가세요!

5. 특정 작업

1. 키 작업

redis에서는 "n"과 공백을 이름의 구성 요소로 사용할 수 없으며 다른 내용을 키의 이름 부분으로 사용할 수 있습니다. 이름 길이는 중요하지 않습니다.

Del key1 key2…. Type key키 패턴Rename 현재 데이터베이스의 키 수를 반환합니다키 만료 시간 지정키 만료 시간(초)을 반환합니다. 데이터베이스 선택는 현재 데이터베이스에서 지정된 데이터베이스로 이동합니다현재 데이터베이스의 모든 키를 삭제합니다 모든 데이터베이스의 모든 키 삭제2. 문자열 유형 작업

지정된 키를 삭제합니다

해당 키의 값 유형을 반환합니다

반환 지정된 패턴과 일치하는 모든 키

Rename oldkey newkey

Dbsize

키 초 만료

Ttl 키

db-index

Move key db-index

Flushdb

Flushall

다음은 사용 예입니다
문자열은 redis의 가장 기본적인 유형입니다.

Redis 문자열은 jpg를 포함한 모든 데이터를 포함할 수 있습니다. 이미지 또는 직렬화된 객체
단일 값의 최대 상한은 1G바이트입니다

Code

Function

키 값 설정


키에 해당하는 값 설정 문자열형 값으로

Mset key1 value1…keyN valueN

여러 키의 값을 한 번에 설정

Mget key1 key2 … keyN

값 가져오기 ​​한 번에 여러 키

Incr 키

키의 올바른 값 Do ++ 연산

Decr 키

위와 동일 – 연산

Incrby 키 정수

incr에 지정된 값을 더한 것과 동일

Decrby 키 정수

decr에 지정된 값을 뺀 것과 동일

키 값 추가

다음에 값 추가 지정된 키의 문자열

Substr 키 시작 끝

가로채운 키의 문자열 값을 반환합니다

3. 리스트형 소개 및 활용

리스트형은 사실 이중 연결 리스트입니다.

최신 사용자 상위 10명을 조회하려면

하나씩 확인해야 하는데 시간이 많이 소모됩니다. 리소스가 너무 많습니다

목록 연결 목록 예시 다이어그램:

목록 연결 목록을 통해 시스템에 최근 로그인한 사용자 5명의 정보를 저장합니다.

새 사용자가 들어오고 기존 사용자가 퇴출됩니다

방법 연결리스트를 운영하나요?

을 추가합니다.

Code

Function

Lpush 키 문자열

주요 해당 목록

Rpop key

는 목록 끝에서 요소를 삭제하고 삭제된 요소

Lien 키는 목록의 길이에 해당하는 key

를 반환합니다. 존재하지 않으며 0을 반환합니다. 키 해당 유형이 목록이 아닌 경우 오류를 반환합니다.

Rpush key string

위와 동일하게

Lpop key

목록의 선두에서 요소를 삭제하고 삭제된 요소를 반환하려면

Ltrim 키 시작 끝

목록을 가로채서 지정된 범위에 요소를 유지하세요


4 . 집합 컬렉션 유형

Redis의 집합은 문자열 유형의 정렬되지 않은 컬렉션입니다.

세트 요소는 최대 (2의 32승 - 1)개의 요소를 포함할 수 있습니다.

각 세트의 각 요소는 반복될 수 없습니다.

코드

Function

키 멤버 추가

키에 해당하는 세트 세트에 문자열 요소를 추가하고, 성공을 반환합니다. 1

Srem 키 멤버

키 요소에 해당하는 세트에서 주어진 항목을 제거하고, 1

Smove p1 p2 member

해당 p1 세트에서 멤버를 제거하고 해당 p2 세트에 추가

Scard key

집합의 요소 수를 반환합니다

Sismember 키 멤버

멤버가 집합에 존재하는지 확인

Sinter key1 key2. . .

주어진 모든 키의 교집합을 반환합니다.

Sunion key1 key2

주어진 모든 키의 합집합을 반환합니다

Sd iff 키1 키2..

주어진 모든 키의 차이 세트를 반환합니다.

Smembers key

키에 해당하는 세트의 모든 요소를 ​​반환합니다. 결과는 순서가 지정되지 않습니다


5개 요소로 구성된 키가 있습니다.

그런 다음 Linken이 추가됩니다.

5. SortSet 정렬 집합 유형 작업

집합과 마찬가지로 정렬 집합도 문자열 요소의 모음입니다

게다가 각 요소는 가중치와 연관되어 있습니다

가중치를 통해 집합의 요소를 순서대로 얻을 수 있습니다

사례:

정렬 집합을 사용하여 학습에 가장 인기 있는 상위 5개 게시물을 가져옵니다

정렬된 집합에서 의 각 요소는 값과 가중치의 조합입니다

Zrevrange 키 시작 끝Z카드 키Zscore 키 요소Zremrangebyrank 키 최소 max


6. 스냅샷 지속성

1개의 키 변경 사항이 900초 안에 저장됩니다(스냅샷)

10개의 주요 변경 사항이 300초 안에 저장됩니다(스냅샷)

10,000개의 주요 변경 사항이 1분 안에 저장됩니다(스냅샷)

이러한 제어의 이점:

데이터 수정 빈도가 매우 높고 백업 빈도도 높습니다.

데이터 수정 빈도도 낮고 백업 빈도도 낮습니다. A OF 지속성

Essence: put 사용자가 실행한 모든 "쓰기" 명령(추가, 삭제, 수정)은 파일에 백업됩니다. 복원 시 특정 "쓰기" 명령을 실행하세요.

AOF 지속성을 켜면 Redis가 지워집니다. 내부 데이터

AOF 지속성 켜기

구성 파일이 수정되었고 서비스가 다시 시작되었습니다

redis프로세스 보기: Ps -A | grep redis

-9 프로세스 강제 종료

새 프로세스 시작

Aof는 영구 백업 빈도를 추가합니다

항상 쓰기 명령을 받을 때마다 강제로 디스크에 씁니다. 매우 느리지만 완전한 지속성을 유지할 수 있습니다.

Everysec은 1초마다 디스크를 한 번씩 작성해야 하므로 성능과 지속성 사이에서 절충하는 것이 좋습니다.

최고의 성능을 위해 OS에 완전히 의존하지 않으며 지속성이 보장되지 않습니다.

8. 마스터-슬레이브 모드

각 Redis 서버의 부하를 줄이기 위해 여러 개를 설정하고 마스터-슬레이브 모드를 사용할 수 있습니다

한 서버는 "쓰기"를 로드합니다

다른 서버는 "읽기"를 로드합니다

마스터 서버는 슬레이브 서버와 자동으로 동기화됩니다

IP 주소와 포트 번호를 수정하세요.

code

function

Zadd 핵심 점수 멤버

요소 추가 컬렉션에 요소가 있는 경우 해당 점수를 업데이트하세요

Zrem 핵심 멤버

지정된 요소를 삭제하면 1은 성공, 0은 존재하지 않습니다

zincrby 키 인증 멤버

날화 크기는 크기가 해당 멤버의 점수 값을 높이고 점수 값을 반환합니다 값 값 키 멤버는 순위 (Subscript)를 리턴합니다.

Zrange key start end

Irange 연산과 유사하게, 지정된 범위의 요소 세트에서 반환되고, 주문한 결과가 반환됩니다

위와 동일, 반환은 역순입니다

returns 집합의 요소 수

해당 점수

주어진 포인트 간격에 순위가 매겨진 요소를 삭제합니다. 세트

위 내용은 처음부터 Redis 캐시로 시작하기의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.