Breakdown: 은 캐시에서 찾을 수 없는 단일 키를 의미합니다. 이렇게 하면 데이터의 양이 많지 않거나 동시성이 크지 않은 경우입니다. 괜찮아요.
데이터베이스의 데이터 양이 많고 동시성이 높으면 데이터베이스에 과도한 부담을 주어 데이터베이스가 붕괴될 수 있습니다
참고: 이것은 단일 키에 대한 높은 동시성을 의미합니다!!!(권장 학습) : Redis 비디오 튜토리얼)
해결책:
1) 동기화+이중 확인 메커니즘을 통해: 특정 키는 하나의 스레드에서만 쿼리할 수 있으며 다른 스레드는 차단됩니다.
동기화 블록에서 계속해서 판단하고 DB가 존재하지 않는지 확인하십시오.
예:
private static volaite Object lockHelp=new Object(); public String getValue(String key){ String value=redis.get(key,String.class); if(value=="null"||value==null||StringUtils.isBlank(value){ synchronized(lockHelp){ value=redis.get(key,String.class); if(value=="null"||value==null||StringUtils.isBlank(value){ value=db.query(key); redis.set(key,value,1000); } } } return value; }
단점: 다른 스레드를 차단합니다.
2) 값이 만료되지 않도록 설정합니다.
이 방법은 가장 안정적이고 안전하다고 할 수 있지만 공간 소모가 크고 데이터를 최신 상태로 유지할 수 없습니다. 이는 특정 비즈니스 로직에 따라 수행되어야 합니다. 개인적으로 데이터를 최신 상태로 유지하려면 이 방법을 사용하십시오. 참조 전용:
예약된 작업을 시작하거나 TimerTask Timing을 사용하면 이러한 값은 매 기간마다 캐시에서 쿼리되고 업데이트됩니다. 물론 데이터베이스에 과도한 부담을 주지 않는다는 전제가 있습니다. 매우 중요합니다)
3) 뮤텍스 키 사용
업계에서 일반적인 관행은 뮤텍스를 사용하는 것입니다. 간단히 말하면, 캐시가 실패했을 때(꺼낸 값이 비어 있다고 판단되는 경우) 즉시 db를 로딩하는 것이 아니라 먼저 성공적인 작업 반환 값을 갖는 캐싱 도구의 일부 작업(예: Redis의 SETNX 또는 Memcache)을 사용합니다. ADD)를 사용하여 뮤텍스 키를 설정합니다. 작업이 성공적으로 반환되면 db 로드 작업을 수행하고 캐시를 복원합니다. 그렇지 않으면 전체 캐시 가져오기 메서드를 다시 시도합니다.
SETNX는 "SET if Not eXists"의 약어로, 존재하지 않는 경우에만 설정된다는 의미입니다. 잠금 효과를 얻기 위해 사용할 수 있습니다. redis2.6.1 이전 버전에서는 setnx의 만료 시간이 구현되지 않았으므로 여기에 두 가지 버전 코드 참조가 있습니다.
public String get(key) { String value = redis.get(key); if (value == null) { //代表缓存值过期 //设置3min的超时,防止del操作失败的时候,下次缓存过期一直不能load db if (redis.setnx(key_mutex, 1, 3 * 60) == 1) { //代表设置成功 value = db.get(key); redis.set(key, value, expire_secs); redis.del(key_mutex); return value; } else { //这个时候代表同时候的其他线程已经load db并回设到缓存了,这时候重试获取缓存值即可 sleep(10); get(key); //重试 } } else { return value; } }
더 많은 Redis 관련 기술 기사를 보려면
Redis 데이터베이스 사용 튜토리얼 소개칼럼을 방문하여 알아보세요!
위 내용은 Redis 고장을 해결하는 방법의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

Redis是现在最热门的key-value数据库,Redis的最大特点是key-value存储所带来的简单和高性能;相较于MongoDB和Redis,晚一年发布的ES可能知名度要低一些,ES的特点是搜索,ES是围绕搜索设计的。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于redis的一些优势和特点,Redis 是一个开源的使用ANSI C语言编写、遵守 BSD 协议、支持网络、可基于内存、分布式存储数据库,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis Cluster集群收缩主从节点的相关问题,包括了Cluster集群收缩概念、将6390主节点从集群中收缩、验证数据迁移过程是否导致数据异常等,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis实现排行榜及相同积分按时间排序,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于原子操作中命令原子性的相关问题,包括了处理并发的方案、编程模型、多IO线程以及单命令的相关内容,下面一起看一下,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了bitmap问题,Redis 为我们提供了位图这一数据结构,位图数据结构其实并不是一个全新的玩意,我们可以简单的认为就是个数组,只是里面的内容只能为0或1而已,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了Redis实现排行榜及相同积分按时间排序,本文通过实例代码给大家介绍的非常详细,下面一起来看一下,希望对大家有帮助。

本篇文章给大家带来了关于redis的相关知识,其中主要介绍了关于实现秒杀的相关内容,包括了秒杀逻辑、存在的链接超时、超卖和库存遗留的问题,下面一起来看一下,希望对大家有帮助。


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

안전한 시험 브라우저
안전한 시험 브라우저는 온라인 시험을 안전하게 치르기 위한 보안 브라우저 환경입니다. 이 소프트웨어는 모든 컴퓨터를 안전한 워크스테이션으로 바꿔줍니다. 이는 모든 유틸리티에 대한 액세스를 제어하고 학생들이 승인되지 않은 리소스를 사용하는 것을 방지합니다.

DVWA
DVWA(Damn Vulnerable Web App)는 매우 취약한 PHP/MySQL 웹 애플리케이션입니다. 주요 목표는 보안 전문가가 법적 환경에서 자신의 기술과 도구를 테스트하고, 웹 개발자가 웹 응용 프로그램 보안 프로세스를 더 잘 이해할 수 있도록 돕고, 교사/학생이 교실 환경 웹 응용 프로그램에서 가르치고 배울 수 있도록 돕는 것입니다. 보안. DVWA의 목표는 다양한 난이도의 간단하고 간단한 인터페이스를 통해 가장 일반적인 웹 취약점 중 일부를 연습하는 것입니다. 이 소프트웨어는

SublimeText3 영어 버전
권장 사항: Win 버전, 코드 프롬프트 지원!

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

SublimeText3 Linux 새 버전
SublimeText3 Linux 최신 버전
