찾다
데이터 베이스RedisRedis 데이터 유형 학습: 문자열 원리에 대해 이야기해 보겠습니다.

이 글은 Redis 데이터 유형의 문자열을 이해하고 문자열 데이터 유형의 저장 원리에 대해 이야기하는 데 도움이 되기를 바랍니다.

Redis 데이터 유형 학습: 문자열 원리에 대해 이야기해 보겠습니다.

Redis는 업무에서 자주 사용되는 미들웨어입니다. 풍부한 데이터 구조를 지원하고 매우 강력한 읽기 및 쓰기 성능을 가지며 tps는 100,000+에 도달할 수 있습니다.

오늘의 글은 가장 많이 사용되는 자료구조 중 하나인 String 타입을 분석하고 요약한 것입니다. 본 글은 redis5.0을 기준으로 분석되었습니다. [관련 권장사항: Redis 동영상 튜토리얼]

1. 기본 사용법

set key value [EX seconds] [PX milliseconds] [NX|XX]

1. set은 구문, key는 지정된 이름, value는 저장해야 하는 값입니다

2. 만료 초, PX 만료 시간을 밀리초 단위로 지정합니다

3. NX: 키가 없을 때만 설정이 성공합니다. 4. XX: 키가 있을 때만 설정이 성공합니다. 요약: 5.0에서는 다음과 같은 설정 명령을 지원합니다. 만료 시간 및 존재하지 않음을 지정합니다. 즉, 하나의 명령을 통해 분산 잠금 기능을 실현할 수 있습니다. 이전 버전에서는 키 설정과 만료 시간 설정을 두 개의 명령으로 나누어야 했습니다. 원자성을 보장하는 것이 더 어렵습니다.

2. 사용 시나리오

1. 핫스팟 데이터 캐시, 분산 세션2. Setnx 분산 잠금

3.Incr 전역 ID

5 , 현재 제한 증가分布式锁

3、incr 计数器

4、Incr 全局id

5、Incr 限流

6、bit 操作,位图功能,在线用户统计 0/1标记 

三、支持存储的数据类型

整型,字符型,float(单浮点型) 

四、不同的编码类型

Redis 데이터 유형 학습: 문자열 원리에 대해 이야기해 보겠습니다.

Redis 데이터 유형 학습: 문자열 원리에 대해 이야기해 보겠습니다.

五、String存储原理

在Redis中,数据存储在一个RedisObject类中

typedef struct redisObject {    
//这个类型可以是string,也可以是hash,zset等等
unsigned type:4;    
unsigned encoding:4;    
//记录lru,lfu淘汰算法依赖的访问时间和访问频率    
unsigned lru:LRU_BITS; 
/* LRU time (relative to global lru_clock) or                            * LFU data (least significant 8 bits frequency                            * and most significant 16 bits access time). */
//引用计数器    
int refcount;    
//指向真实数据结构对象    
void *ptr;
} robj;

对于String,Redis自定义了一种简单动态字符串的数据结构来存储字符串数。

源码实现:多种数据结构,分别表示可以存储不同长度的字符串。

Redis 데이터 유형 학습: 문자열 원리에 대해 이야기해 보겠습니다.

len:代表已经使用的长度

alloc:分配的总内存大小

flags:代表存储类型

buf[]:实际的数据

六、三种编码存储区别

1、embstr的RedisObject,SDS内存在一块,只要创建时分配一次内存,销毁时释放一次内存,查找方便

2、raw则RedisObject,SDS内存不在一块,需要创建时分配两次内存,销毁时释放两次内存

3、embstr的结构,决定了他需要增加长度时,RedisObject,SDS都需要重新分配内存。因此embstr编码的数据是不能修改的,只读的。 

七、int,embstr编码什么时候转换成raw

1、int类型的数据不再是int类型,转成raw

2、长度大于2^63-1转成embstr

3、embstr字符超过44字节,转成raw 

八、SDS数据结构的优点

1、二进制安全的 可以存储图片 整形,浮点型

2、String 的三种编码,充分利用内存,提高内存利用率

  • int 存储8个字节长整形 long ,2^63-1
  • Embstr embstr格式的SDS simple Dynamic String 内存空间是连续的,只读的,只要执行修改就会转成raw
  •  Raw,SDS,存储大于44个字节的字符串

3、不用担心内存溢出,sds具备自动扩容能力

4、获取字符串长度时间复杂度O(1),存储了len属性

5、通过空间预分配惰性空间释放防止多次分配内存

6、判断是否结束使用len属性,可以包含'

위 내용은 Redis 데이터 유형 학습: 문자열 원리에 대해 이야기해 보겠습니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명
이 기사는 掘金社区에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제
Redis 버전 번호를 보는 방법Redis 버전 번호를 보는 방법Apr 10, 2025 pm 04:09 PM

redis에서 버전 번호를 보는 두 가지 방법이 있습니다. 1. "redis -cli -v"명령을 사용하여 버전 번호를 직접 출력하십시오. 2. "redis-cli info server"명령을 사용하여 버전 번호를 포함하여보다 자세한 정보를 출력하십시오.

Redis 버전 번호보기 명령 세부 사항Redis 버전 번호보기 명령 세부 사항Apr 10, 2025 pm 04:06 PM

Redis 버전 번호를 볼 수있는 명령은 다음과 같습니다. Info Info Serverecho Echo Echo 버전 클리어 목록 및 Connected_Since 값을 계산합니다 (Redis 서버 실행에만 적용 가능)

명령 줄을 통해 Redis 버전을 봅니다명령 줄을 통해 Redis 버전을 봅니다Apr 10, 2025 pm 04:03 PM

Redis 버전을 보는 방법? 단계는 다음과 같습니다. redis 클라이언트를 시작하고 redis_version 필드를 찾기 위해 정보 명령을 실행하고 그 값은 redis 버전 번호입니다.

Redis 버전 번호 비교Redis 버전 번호 비교Apr 10, 2025 pm 04:00 PM

Redis 버전 번호를 보는 방법에는 다음이 포함됩니다. 명령 줄 도구 사용 Redis-Cli, Redis Info 명령, Redis Manager 및 환경 변수 사용. REDIS-CLI-Version은 로컬 및 원격 인스턴스에 적합한 반면 Redis-Cli Info | grep redis_version은 더 많은 정보를 제공하지만 로컬 인스턴스에만 제공합니다. Redis Manager는 그래픽 인터페이스를 제공하지만 타사 도구가 필요합니다. 환경 변수 echo $ redis_version은 docker와 같은 특정 환경에서 유용합니다.

Redis 버전 번호를 알아야하는 이유Redis 버전 번호를 알아야하는 이유Apr 10, 2025 pm 03:57 PM

Redis 버전 번호를 이해하는 것은 호환성, 보안, 성능 최적화, 버그 수정 및 문서와 관련이 있기 때문에 중요합니다. 응용 프로그램이 Redis 버전과 호환되는지 확인하십시오. 보안 취약점을 식별하고 해결합니다. 애플리케이션 성능을 최적화하고 새로운 최적화를 활용하십시오. 애플리케이션 안정성을 향상시키기 위해 버그 수정을 얻으십시오. 특정 버전의 정보 및 지원 리소스에 액세스하십시오.

Redis 버전 호환성 문제Redis 버전 호환성 문제Apr 10, 2025 pm 03:54 PM

Redis 버전 호환성은 다른 버전간에 통신하는 능력을 나타냅니다. 호환성은 다음 수준으로 나뉩니다. 뒤로 호환성 : 새 서버는 이전 클라이언트 명령을 처리 할 수 ​​있습니다. 상향 호환성 : 이전 클라이언트는 새로운 서버에 연결할 수 있지만 새로운 기능을 사용할 수는 없습니다. 완전히 호환 가능 : 다른 버전의 무제한 상호 작용. 호환성은 프로토콜 변경, 데이터 구조 변경 및 새로운 기능에 의해 영향을받습니다. 통합 버전, 테스트 및 호환 라이브러리를 사용하여 호환성 문제를 피할 수 있습니다.

Redis에서 모든 키를 보는 방법Redis에서 모든 키를 보는 방법Apr 10, 2025 pm 03:51 PM

Redis에서 모든 키를 보는 방법은 다음과 같습니다. 키 이름을 키즈 명령과 일치시키는 방법; 스캔 명령으로 모든 키를 반복합니다. 덤프 및 복원 명령으로 핵심 값을 덤프 및 복원; redisinsight 도구를 사용하여 키를 탐색합니다. Redis 클러스터에 대한 클러스터 키 슬롯 및 클러스터 GetKeysInslot 명령 사용; LUA 스크립트를 사용하여 모든 키가 포함 된 테이블을 생성합니다.

Redis는 모든 주요 명령을 봅니다Redis는 모든 주요 명령을 봅니다Apr 10, 2025 pm 03:48 PM

Redis의 키 명령은 모든 키를 보는 데 사용될 수 있습니다. 명령 구문 : 키 패턴 명령 매개 변수 : 패턴 * (임의 문자) 및와 같은 키를 검색 할 때 사용할 수있는 와일드 카드 패턴을 지정합니다. (단일 문자). 결과 : 패턴과 일치하는 모든 키 목록을 반환합니다. 예 : 키 *는 모든 키를 반환합니다. 팁 : 빈 모드 "*"를 사용하여 모든 키를 보거나 변수 길이 와일드 카드를 사용할 수 있습니다. ":"여러 문자와 일치합니다. 복잡성 : O (n), 여기서 n은 데이터베이스의 키 수입니다.

See all articles

핫 AI 도구

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

무료로 이미지를 벗다

Clothoff.io

Clothoff.io

AI 옷 제거제

AI Hentai Generator

AI Hentai Generator

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

인기 기사

R.E.P.O. 에너지 결정과 그들이하는 일 (노란색 크리스탈)
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 최고의 그래픽 설정
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. 아무도들을 수없는 경우 오디오를 수정하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25 : Myrise에서 모든 것을 잠금 해제하는 방법
3 몇 주 전By尊渡假赌尊渡假赌尊渡假赌

뜨거운 도구

SecList

SecList

SecLists는 최고의 보안 테스터의 동반자입니다. 보안 평가 시 자주 사용되는 다양한 유형의 목록을 한 곳에 모아 놓은 것입니다. SecLists는 보안 테스터에게 필요할 수 있는 모든 목록을 편리하게 제공하여 보안 테스트를 더욱 효율적이고 생산적으로 만드는 데 도움이 됩니다. 목록 유형에는 사용자 이름, 비밀번호, URL, 퍼징 페이로드, 민감한 데이터 패턴, 웹 셸 등이 포함됩니다. 테스터는 이 저장소를 새로운 테스트 시스템으로 간단히 가져올 수 있으며 필요한 모든 유형의 목록에 액세스할 수 있습니다.

메모장++7.3.1

메모장++7.3.1

사용하기 쉬운 무료 코드 편집기

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

Atom Editor Mac 버전 다운로드

Atom Editor Mac 버전 다운로드

가장 인기 있는 오픈 소스 편집기

SublimeText3 중국어 버전

SublimeText3 중국어 버전

중국어 버전, 사용하기 매우 쉽습니다.