이 글은 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(单浮点型)
四、不同的编码类型
五、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自定义了一种简单动态字符串的数据结构来存储字符串数。
源码实现:多种数据结构,分别表示可以存储不同长度的字符串。
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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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

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

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

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

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

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

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

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


핫 AI 도구

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

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

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

Clothoff.io
AI 옷 제거제

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

인기 기사

뜨거운 도구

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

메모장++7.3.1
사용하기 쉬운 무료 코드 편집기

드림위버 CS6
시각적 웹 개발 도구

Atom Editor Mac 버전 다운로드
가장 인기 있는 오픈 소스 편집기

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

뜨거운 주제



