redis 면접 문제 총화

4223 단어 redis
더 읽 기
다음으로 이동:http://blog.csdn.net/zdp072/article/details/50991116 http://www.100mian.com/mianshi/dba/37381.html
1. redis 를 사용 하면 어떤 장점 이 있 나 요?
(1) 속도 가 빠 릅 니 다. 데이터 가 메모리 에 존재 하기 때문에 HashMap 과 유사 합 니 다. HashMap 의 장점 은 검색 과 작업 의 시간 복잡 도 는 모두 O (1) (2) 다양한 데이터 형식 을 지원 합 니 다. string, list, set, sorted set, hash (3) 지원 하 는 사무 입 니 다. 작업 은 모두 원자 성 입 니 다. 이른바 원자 성 이란 데이터 에 대한 변경 이 모두 실행 되 거나 모두 실행 되 지 않 는 것 입 니 다 (4)풍부 한 기능: 캐 시, 메시지 에 사용 할 수 있 습 니 다. key 에 따라 만 료 시간 을 설정 하면 만 료 되면 자동 으로 삭 제 됩 니 다.
2. redis 는 memcached 에 비해 어떤 장점 이 있 습 니까?
(1) memcached 의 모든 값 은 간단 한 문자열 입 니 다. Redis 는 그 대체 자로 서 더욱 풍부 한 데이터 형식 (2) redis 를 지원 하 는 속도 가 memcached 보다 훨씬 빠 릅 니 다 (3) redis 는 데 이 터 를 지속 적 으로 사용 할 수 있 습 니 다.
3. Memcache 와 Redis 의 차 이 는 무엇 입 니까?
1) 메모리 방식 인 Memecache 는 데 이 터 를 모두 메모리 에 저장 하고 전기 가 끊 긴 후에 끊 기 며 데 이 터 는 메모리 크기 를 초과 할 수 없습니다.Redis 는 일부 하 드 디스크 에 존재 하 므 로 데이터 의 지속 성 을 확보 할 수 있 습 니 다.2) 데이터 지원 형식 인 Memcache 는 데이터 형식 에 대한 지원 이 상대 적 으로 간단 합 니 다.Redis 는 복잡 한 데이터 형식 이 있 습 니 다.3) 바 텀 모델 을 사용 하면 바 텀 실현 방식 과 클 라 이언 트 간 통신 의 응용 프로 토 콜 이 다르다.Redis 는 직접 VM 체 제 를 구축 했다. 일반적인 시스템 이 시스템 함 수 를 호출 하면 이동 과 요청 에 시간 을 낭비 하기 때문이다.
4. redis 에서 흔히 볼 수 있 는 성능 문제 와 해결 방안:
(1) Master 는 RDB 메모리 스냅 샷 과 AOF 로그 파일 (2) 과 같은 영구적 인 작업 을 하지 않 는 것 이 좋 습 니 다. 데이터 가 중요 하 다 면 어떤 Slave 는 AOF 백업 데 이 터 를 엽 니 다. 정책 은 초당 한 번 동기 화 (3) 주종 복사 속도 와 연결 의 안정성 을 위해 Master 와 Slave 는 같은 랜 내 (4) 에서 스트레스 가 많은 메 인 라 이브 러 리 에 라 이브 러 리 (5) 를 추가 하 는 것 을 피 하 는 것 이 좋 습 니 다.주종 복 제 는 도형 구 조 를 사용 하지 말고 단 방향 링크 구조 로 더욱 안정 적 이다. 즉, Master 와 같은 구 조 는 단점 고장 문 제 를 해결 하고 Slave 가 Master 에 대한 교 체 를 실현 하 는 데 편리 하 다.Master 가 끊 으 면 Slave 1 을 Master 로 즉시 사용 할 수 있 습 니 다. 다른 것 은 변 하지 않 습 니 다.
5. my SQL 에 2000 w 데이터 가 있 고 redis 에 20w 데이터 만 저장 되 어 있 습 니 다. redis 의 데 이 터 는 모두 핫 이 슈 데이터 입 니 다.
관련 지식: redis 메모리 데이터 세트 크기 가 일정 크기 로 올 라 갈 때 데이터 도태 전략 을 시행 합 니 다.redis 는 6 가지 데이터 도태 정책 을 제공 합 니 다: volatile - lru: 만 료 시간 이 설 정 된 데이터 세트 (server. db [i]. expires) 에서 최근 에 가장 적 게 사용 할 데 이 터 를 선택 하여 volatile - ttl 을 도태 시 킵 니 다. 만 료 시간 이 설 정 된 데이터 세트 (server. db [i]. expires) 에서 만 료 될 데 이 터 를 선택 하여 volatile - random 을 도태 시 킵 니 다. 만 료 시간 이 설 정 된 데이터 세트 (server. db [i]. expires) 에서 데 이 터 를 임의로 선택 하여 allkeys - lru 를 탈락 시 킵 니 다. 데이터 세트 (server. db [i]. dict) 에서 최근 에 가장 적 게 사용 한 데 이 터 를 선택 하여 allkeys - random 을 탈락 시 킵 니 다. 데이터 세트 (server. db [i]. dict) 에서 데 이 터 를 임의로 선택 하여 no - enviction (추방) 을 탈락 시 킵 니 다. 데 이 터 를 추방 하지 마 십시오.
6. Redis 와 임의의 언어 로 악성 로그 인 보호 코드 를 구현 하 십시오. 1 시간 동안 사용자 Id 당 최대 5 번 만 로그 인 할 수 있 습 니 다.구체 적 인 로그 인 함수 나 기능 은 빈 함수 로 하면 되 며 상세 하 게 쓰 지 않 아 도 됩 니 다.
목록 으로 구현: 목록 의 모든 요 소 는 로그 인 시간 을 대표 합 니 다. 마지막 5 번 째 로그 인 시간 과 현재 시간 차이 가 1 시간 을 초과 하지 않 으 면 로그 인 을 금지 합 니 다. Python 으로 쓴 코드 는 다음 과 같 습 니 다.
#!/usr/bin/env python3
import redis  
import sys  
import time

r = redis.StrictRedis(host=’127.0.0.1′, port=6379, db=0)  
try:  
    id = sys.argv[1]
except:  
    print(‘input argument error’)
    sys.exit(0)

if r.llen(id) >= 5 and time.time() – float(r.lindex(id, 4)) <= 3600:  
    print(“you are forbidden logining”)
else:  
    print(‘you are allowed to login’)
    r.lpush(id, time.time())
    # login_func()

좋은 웹페이지 즐겨찾기