목차
1 简单概述
2 操作命令
데이터 베이스 MySQL 튜토리얼 REDIS学习笔记之STRING数据类型

REDIS学习笔记之STRING数据类型

Jun 07, 2016 pm 04:04 PM
redis string 작가 공부하다 데이터 메모 유형

作者:邹祁峰 邮箱:Qifeng.zou.job@gmail.com 博客:http://blog.csdn.net/qifengzou 日期:2014.10.11 转载请注明来自祁峰的CSDN博客 1 简单概述 String数据类型是Redis中最简单、最基础的数据类型,Redis中所有的KEY和VALUE都是String类型,且其他更为复杂

作者:邹祁峰
邮箱:Qifeng.zou.job@gmail.com
博客:http://blog.csdn.net/qifengzou
日期:2014.10.11
转载请注明来自"祁峰"的CSDN博客

1 简单概述

String数据类型是Redis中最简单、最基础的数据类型,Redis中所有的KEY和VALUE都是String类型,且其他更为复杂的数据类型(LISTS、SETS、SORTED-SETS、HASHES)也均基于String数据类型来存储的。String数据类型是二进制安全的,也就是说String可以包含任何格式的数据,比如:JPG图片、序列化的对象等。

2 操作命令

表1 String类型操作命令 

01 APPEND key value
  功能描述:将KEY对应的VALUE值减1
返回结果:APPEND操作之后,KEY对应VALUE的最终长度
注意事项:
1)时间复杂度:O(1)
2)当KEY存在,且为STRING类型时,将会将value追加到原有值末尾;
3)如果KEY不存在,将会新建KEY/VALUE。
02 DECR key
  功能描述:将KEY对应的VALUE原子性的减1
返回结果:返回执行减1操作后KEY对应的VALUE值
注意事项:
1)时间复杂度:O(1)
2)如果KEY对应VALUE能转化为数字,则执行减1操作;
3)如果KEY对应VALUE不能转化为数字,则返回错误信息;
4)该操作是原子性的。假设:当前KEY对应的VALUE值为100,当3个客户端同时执行该操作时,最终结果将会是97。
03 INCR key
  功能描述:将KEY对应的VALUE原子性的加1
返回结果:返回执行加1操作后KEY对应的VALUE值
注意事项:
1)时间复杂度:O(1)
2)如果KEY对应VALUE能转化为数字,则执行加1操作;
3)如果KEY对应VALUE不能转化为数字,则返回错误信息;
4)该操作是原子性的。假设:当前KEY对应的VALUE值为100,当3个客户端同时执行该操作时,最终结果将会是103。
04 DECRBY key decremen
  功能描述:将KEY对应的VALUE原子性的减decrement
返回结果:返回执行减操作后KEY对应的VALUE值
注意事项:
1)时间复杂度:O(1)
2)如果KEY对应VALUE能转化为数字,则执行减操作;
3)如果KEY对应VALUE不能转化为数字,则返回错误信息;
4)参数decrement不能为浮点数,只能为整数;
5)该操作是原子性的。
05 INCRBY key increment
  功能描述:将KEY对应的VALUE原子性的加increment
返回结果:返回执行加操作后KEY对应的VALUE值
注意事项:
1)时间复杂度:O(1)
2)如果KEY对应VALUE能转化为数字,则执行加操作;
3)如果KEY对应VALUE不能转化为数字,则返回错误信息;
4)参数increment不能为浮点数,只能为整数;
5)该操作是原子性的。
06 INCRBYFLOAT key increment
  功能描述:将KEY对应的VALUE原子性的加increment
返回结果:返回执行加操作后KEY对应的VALUE值
注意事项:
1)时间复杂度:O(1)
2)如果KEY对应VALUE能转化为数字,则执行加操作;
3)如果KEY对应VALUE不能转化为数字,则返回错误信息;
4)此命令的参数increment可以为浮点数,但是请注意此命令的计算精度;
5)暂时没有命令DECRBYFLOAT,如果想进行浮点数的减操作,可以模仿:INCRBYFLOAT key -5.9;
6)该操作是原子性的。
07 SET key value [EX seconds] [PX milliseconds] [NX|XX]
  功能描述:设置KEY对应的VALUE
参数说明:
从 Redis 2.6.12 版本开始, SET 命令的行为可以通过一系列参数来修改:
1)EX second:设置键的过期时间为second秒
SET key value EX second 效果等同于 SETEX key second value。
2)PX millisecond:设置键的过期时间为millisecond毫秒
SET key value PX millisecond 效果等同于 PSETEX key millisecond value。
3)NX :只在键不存在时,才对键进行设置操作
SET key value NX 效果等同于 SETNX key value
4)XX :只在键已经存在时,才对键进行设置操作。
返回结果:
1)在2.6.12版本之前,总是返回OK;
2)在2.6.12版本开始,SET操作完成时才返回OK;
3)如果设置了 NX 或者 XX ,但因为条件没达到而造成设置操作未执行,那么命令返回空批量回复(NULL Bulk Reply)。
注意事项:
1)时间复杂度:O(1)
2)如果KEY已经存在,此操作将直接覆盖旧值,且无视类型;
3)对于某个原本带有生存时间(TTL)的键来说, 当 SET 命令成功在这个键上执行时, 这个键原有的 TTL 将被清除。
08 GET key
  功能描述:获取指定KEY的VALUE
返回结果:指定KEY的VALUE
注意事项:
1)时间复杂度:O(1)
2)如果该KEY不存在,返回NIL;
3)如果该KEY不是String类型,将返回错误信息。
09 GETSET key value
  功能描述:原子性的设置KEY的VALUE,同时获取该KEY的原VALUE
返回结果:该KEY的原VALUE
注意事项:
1)时间复杂度:O(1)
2)如果该KEY不存在,将新建KEY,并返回NIL;
3)如果该KEY不是String类型,将返回错误信息。
10 STRLEN key
  功能描述:获取该KEY的VALUE长度
返回结果:该KEY的VALUE长度
注意事项:
1)时间复杂度:O(1)
2)如果该KEY不存在,将返回0;
3)如果该KEY不是String类型,将返回错误信息。
11 SETEX key seconds value
  功能描述:设置KEY对应值为VALUE,同时设置该KEY的生存时间为SECONDS秒
返回结果:操作完成时才返回OK
注意事项:
1)时间复杂度:O(1)
2)如果KEY已经存在,此操作将直接覆盖旧值;
3)该命令类似如下两条命令:
SET key value
EXPIRE key seconds
不同的是,SETEX是原子性的。关联值和设置生存时间两个动作会在同一时间内完成,该命令在 Redis 用作缓存时,非常实用;
4)当 seconds 参数不合法时,返回错误。
12 SETNX key value
  功能描述:当前仅当KEY不存在时,设置KEY对应值为VALUE
返回结果:设置成功返回1,设置失败返回0
注意事项:
1)时间复杂度:O(1)
2)将 key 的值设为 value ,当且仅当 key 不存在;
3)若给定的 key 已经存在,则 SETNX 不做任何动作;
4)SETNX 是"SET if Not eXists"(如果不存在,则 SET)的简写。
13 SETBIT key offset value
  功能描述:对KEY所储存的字符串值,设置或清除指定偏移量上的位(bit)
返回结果:指定偏移量原来储存的位
注意事项:
1)时间复杂度:O(1)
2)位的设置或清除取决于 value 参数,可以是 0 也可以是 1;
3)当 key 不存在时,自动生成一个新的字符串值;
4)字符串会进行伸展(grown)以确保它可以将 value 保存在指定的偏移量上。当字符串值进行伸展时,空白位置以 0 填充;
5)offset 参数必须大于或等于 0 ,小于 2^32 (bit 映射被限制在 512 MB 之内);
6)对使用大的 offsetSETBIT操作来说,内存分配可能造成 Redis 服务器被阻塞。具体参考SETRANGE 命令,warning(警告)部分。
14 GETBIT key offset
  功能描述:对 key 所储存的字符串值,获取指定偏移量上的位(bit)
返回结果:指定偏移量上的位
注意事项:
1)时间复杂度:O(1)
2)当 offset 比字符串值的长度大,或者 key 不存在时,返回 0 ;
3)当KEY不存在时,进行GETBIT操作将返回0。
15 SETRANGE key offset value
  功能描述:用 value 参数覆写(overwrite)给定 key 所储存的字符串值,从偏移量 offset 开始
返回结果:修改后的字符串长度
注意事项:
1)时间复杂度:对小的字符串,平摊复杂度O(1)。(关于什么字符串是”小”的,请参考 APPEND 命令) 否则为O(M), M 为 value 参数的长度
2)不存在的 key,则将其原值当作空白字符串处理;
3)SETRANGE 命令会确保字符串足够长以便将 value 设置在指定的偏移量上,如果给定 key 原来储存的字符串长度比偏移量小(比如字符串只有 5 个字符长,但你设置的 offset 是 10 ),那么原字符和偏移量之间的空白将用零字节(zerobytes, "\x00" )来填充;
4)注意你能使用的最大偏移量是 2^29-1(536870911) ,因为 Redis 字符串的大小被限制在 512 兆(megabytes)以内。如果你需要使用比这更大的空间,你可以使用多个 key ;
5)当生成一个很长的字符串时,Redis 需要分配内存空间,该操作有时候可能会造成服务器阻塞(block)。在2010年的Macbook Pro上,设置偏移量为 536870911(512MB 内存分配)耗费约 300 毫秒, 设置偏移量为 134217728(128MB 内存分配),耗费约 80 毫秒,设置偏移量 33554432(32MB 内存分配),耗费约 30 毫秒,设置偏移量为 8388608(8MB 内存分配),耗费约 8 毫秒。 注意若首次内存分配成功之后,再对同一个 key 调用 SETRANGE 操作,无须再重新内存。
16 GETRANGE key start end
  功能描述:截取 key 对应字串值的子串
返回结果:截取得出的子串
注意事项:
1)时间复杂度:O(N)(N表示要返回的字串长度)
2)字符串的截取范围由 start 和 end 两个偏移量决定(包括 start 和 end 在内);
3)负数偏移量表示从字符串最后开始计数, -1 表示最后一个字符, -2 表示倒数第二个,以此类推;
4)GETRANGE 通过保证子字符串的值域(range)不超过实际字符串的值域来处理超出范围的值域请求;
5)在
17 MSET key value [key value ...]
  功能描述:同时设置1个或多个KEY-VALUE对
返回结果:总是返回 OK (因为 MSET 不可能失败)
注意事项:
1)时间复杂度:O(N)(N表示 key-value对的数量)
2)如果某个给定 key 已经存在,那么 MSET 会用新值覆盖原来的旧值,如果这不是你所希望的效果,请考虑使用 MSETNX 命令:它只会在所有给定 key 都不存在的情况下进行设置操作;
3)MSET 是一个原子性(atomic)操作,所有给定 key 都会在同一时间内被设置,某些给定 key 被更新而另一些给定 key 没有改变的情况,不可能发生。
18 MSETNX key value [key value ...]
  功能描述:同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在
返回结果:成功返回1,失败返回0
注意事项:
1)时间复杂度:O(N)(N表示 key-value对的数量)
2)即使只有一个给定 key 已存在, MSETNX 也会拒绝执行所有给定 key 的设置操作;
3)MSETNX 是原子性的,因此它可以用作设置多个不同 key 表示不同字段(field)的唯一性逻辑对象(unique logic object),所有字段要么全被设置,要么全不被设置。
19 MGET key [key ...]
  功能描述:返回所有(一个或多个)给定 key 的值
返回结果:一个包含所有给定 key 的值的列表
注意事项:
1)时间复杂度:O(N)(N表示 key-value对的数量)
2)如果给定的 key 里面,有某个 key 不存在,那么这个 key 返回特殊值 nil 。因此,该命令永不失败。
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.

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

뜨거운 도구

메모장++7.3.1

메모장++7.3.1

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

SublimeText3 중국어 버전

SublimeText3 중국어 버전

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

스튜디오 13.0.1 보내기

스튜디오 13.0.1 보내기

강력한 PHP 통합 개발 환경

드림위버 CS6

드림위버 CS6

시각적 웹 개발 도구

SublimeText3 Mac 버전

SublimeText3 Mac 버전

신 수준의 코드 편집 소프트웨어(SublimeText3)

Redis 클러스터 모드를 구축하는 방법 Redis 클러스터 모드를 구축하는 방법 Apr 10, 2025 pm 10:15 PM

Redis Cluster Mode는 Sharding을 통해 Redis 인스턴스를 여러 서버에 배포하여 확장 성 및 가용성을 향상시킵니다. 시공 단계는 다음과 같습니다. 포트가 다른 홀수 redis 인스턴스를 만듭니다. 3 개의 센티넬 인스턴스를 만들고, Redis 인스턴스 및 장애 조치를 모니터링합니다. Sentinel 구성 파일 구성, Redis 인스턴스 정보 및 장애 조치 설정 모니터링 추가; Redis 인스턴스 구성 파일 구성, 클러스터 모드 활성화 및 클러스터 정보 파일 경로를 지정합니다. 각 redis 인스턴스의 정보를 포함하는 Nodes.conf 파일을 작성합니다. 클러스터를 시작하고 Create 명령을 실행하여 클러스터를 작성하고 복제본 수를 지정하십시오. 클러스터에 로그인하여 클러스터 정보 명령을 실행하여 클러스터 상태를 확인하십시오. 만들다

Redis 명령을 사용하는 방법 Redis 명령을 사용하는 방법 Apr 10, 2025 pm 08:45 PM

Redis 지시 사항을 사용하려면 다음 단계가 필요합니다. Redis 클라이언트를 엽니 다. 명령 (동사 키 값)을 입력하십시오. 필요한 매개 변수를 제공합니다 (명령어마다 다름). 명령을 실행하려면 Enter를 누르십시오. Redis는 작업 결과를 나타내는 응답을 반환합니다 (일반적으로 OK 또는 -err).

단일 스레드 레 디스를 사용하는 방법 단일 스레드 레 디스를 사용하는 방법 Apr 10, 2025 pm 07:12 PM

Redis는 단일 스레드 아키텍처를 사용하여 고성능, 단순성 및 일관성을 제공합니다. 동시성을 향상시키기 위해 I/O 멀티플렉싱, 이벤트 루프, 비 블로킹 I/O 및 공유 메모리를 사용하지만 동시성 제한 제한, 단일 고장 지점 및 쓰기 집약적 인 워크로드에 부적합한 제한이 있습니다.

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

Redis에서 모든 키를 보려면 세 가지 방법이 있습니다. 키 명령을 사용하여 지정된 패턴과 일치하는 모든 키를 반환하십시오. 스캔 명령을 사용하여 키를 반복하고 키 세트를 반환하십시오. 정보 명령을 사용하여 총 키 수를 얻으십시오.

Redis로 서버를 시작하는 방법 Redis로 서버를 시작하는 방법 Apr 10, 2025 pm 08:12 PM

Redis 서버를 시작하는 단계에는 다음이 포함됩니다. 운영 체제에 따라 Redis 설치. Redis-Server (Linux/MacOS) 또는 Redis-Server.exe (Windows)를 통해 Redis 서비스를 시작하십시오. Redis-Cli Ping (Linux/MacOS) 또는 Redis-Cli.exe Ping (Windows) 명령을 사용하여 서비스 상태를 확인하십시오. Redis-Cli, Python 또는 Node.js와 같은 Redis 클라이언트를 사용하여 서버에 액세스하십시오.

Redis Lock을 사용하는 방법 Redis Lock을 사용하는 방법 Apr 10, 2025 pm 08:39 PM

Redis를 사용하여 잠금 작업을 사용하려면 SetNX 명령을 통해 잠금을 얻은 다음 만료 명령을 사용하여 만료 시간을 설정해야합니다. 특정 단계는 다음과 같습니다. (1) SETNX 명령을 사용하여 키 값 쌍을 설정하십시오. (2) 만료 명령을 사용하여 잠금의 만료 시간을 설정하십시오. (3) DEL 명령을 사용하여 잠금이 더 이상 필요하지 않은 경우 잠금을 삭제하십시오.

Redis 데이터를 지우는 방법 Redis 데이터를 지우는 방법 Apr 10, 2025 pm 10:06 PM

Redis 데이터를 지우는 방법 : Flushall 명령을 사용하여 모든 키 값을 지우십시오. FlushDB 명령을 사용하여 현재 선택한 데이터베이스의 키 값을 지우십시오. 선택을 사용하여 데이터베이스를 전환 한 다음 FlushDB를 사용하여 여러 데이터베이스를 지우십시오. del 명령을 사용하여 특정 키를 삭제하십시오. Redis-Cli 도구를 사용하여 데이터를 지우십시오.

기본 Redis를 구현하는 방법 기본 Redis를 구현하는 방법 Apr 10, 2025 pm 07:21 PM

Redis는 해시 테이블을 사용하여 데이터를 저장하고 문자열, 목록, 해시 테이블, 컬렉션 및 주문한 컬렉션과 같은 데이터 구조를 지원합니다. Redis는 Snapshots (RDB)를 통해 데이터를 유지하고 WRITE 전용 (AOF) 메커니즘을 추가합니다. Redis는 마스터 슬레이브 복제를 사용하여 데이터 가용성을 향상시킵니다. Redis는 단일 스레드 이벤트 루프를 사용하여 연결 및 명령을 처리하여 데이터 원자력과 일관성을 보장합니다. Redis는 키의 만료 시간을 설정하고 게으른 삭제 메커니즘을 사용하여 만료 키를 삭제합니다.

See all articles