>  기사  >  데이터 베이스  >  Redis 공통 데이터 유형 작업 지침 요약

Redis 공통 데이터 유형 작업 지침 요약

coldplay.xixi
coldplay.xixi앞으로
2021-02-19 09:45:081839검색

Redis 공통 데이터 유형 작업 지침 요약

권장(무료): redis tutorial

Redis 명령은 Redis 서비스에서 작업을 수행하는 데 사용됩니다. redis 서비스에서 명령을 실행하려면 redis
클라이언트가 필요합니다. redis-cli 명령을 사용하여 Redis 클라이언트를 시작할 수 있습니다. 전체 시작 명령은 redis-cli -h 호스트 -p 포트 -a 비밀번호입니다. redis-cli命令启动Redis客户端。完整的启动命令是redis-cli -h host -p port -a password

Redis常用的数据类型有五种:stringhashlistsetzset(sorted set有序集合)。学习这些类型之前还需要学习常用命令Key的管理。下面详细介绍这些类型:更详细的API可以参照此处

常用命令Key管理

Key的应用场景:

  • 限时的优惠活动信息。
  • 网站的数据缓存(对于一些需要定时更新的数据,如积分排行榜)
  • 手机验证码
  • 限制网站访客访问频率(例如1分钟最多访问10次)

Key的命名建议:
key名称区分大小写;key不要太长,尽量不超过1024字节,太长会降低查找效率;在一个项目中key最好使用统一的命名模式,如user:id:password

keys pattern           返回满足给定pattern的所有key,可以模糊匹配,如keys abc*代表abc开头的key
exists key            判断一个key是否存在,存在返回1,不存在返回0
expire key second        设定一个key的活动时间(秒)
pexpire key milliseconds    设定一个key的活动时间(毫秒)
del key            删除一个key
ttl key             返回一个key的剩余时间,key不存在时返回-2;key存在但未设置剩余生存时间返回-1
persist key           取消过期时间
select dbindex         选择数据库,默认有16个,索引从0开始
move key, dbindex        移动当前数据库中的key到dbindex数据库
randomkey            随机返回一个key
keyrename key, key2      重命名key
dbsize              返回当前数据库中key的数量
info               查看数据库信息
config get *           实时存储收到的请求,返回相关的配置
type(key)             返回值的类型

flushdb             删除当前选择数据库中的所有key
flushall            删除所有数据库中的所有key

一、字符串String

String是redis最基本的类型,一个键最大能存储523MB。String类型是二进制安全的。意思是redis的String可以包含任何数据。比如图片或者序列化的对象 。

String的应用场景:

  • String通常用于保存单个字符串或JSON字符串数据。
  • 因为String是二进制安全的,可以把图片文件的内容作为字符串来存储。
  • 计数器(常规key-value缓存应用,粉丝数、微博数量,投票等)

INCR 等指令本身就具有原子操作的特性,所以完全可以利用 Redis 的 NCR、INCRBY、DECR、DECRBY 等指令来实现原子计数的效果。假如,在某种场景下有 3 个客户端同时读取了 minum 的值(值为 2),然后对其同时进行了加 1 的操作,那么,最后 bynum 的值一定是 5。不少网站都利用 reds 的这个特性来实现业务上的统计计数需求。

赋值语法
set key value        为key赋予值value,多次设置会覆盖旧值且无视类型
setnx key value       为key赋予值value,如果key已存在,则不设置并返回0,否则设置并返回1。是解决分布式锁的方案之一。
setex key time value    为key赋予值value并设定过期时间time,到期后key和value都清除。
setrange key start end

Redis에는 5가지 일반적으로 사용되는 데이터 유형이 있습니다:

string, hash

, 🎜list🎜, 🎜set🎜 및 🎜zset🎜(정렬된 집합 순서 집합). 이러한 유형을 배우기 전에 공통 명령 키의 관리 방법을 배워야 합니다. 이러한 유형은 아래에 자세히 소개되어 있습니다. 더 자세한 API는 여기를 참조하세요🎜🎜🎜공통 명령 키 관리🎜🎜🎜🎜주요 애플리케이션 시나리오: 🎜🎜
  • 기간 한정 프로모션 정보.
  • 웹사이트의 데이터 캐싱(포인트 순위 등 정기적으로 업데이트해야 하는 일부 데이터의 경우)
  • 휴대폰 인증 코드
  • 빈도 제한 웹사이트 방문자 액세스(예: 1 분당 최대 10회 액세스)
🎜🎜키 이름 지정 제안: 🎜 키 이름은 대소문자를 구분하며 키는 너무 길어서는 안 됩니다. 1024바이트가 너무 길면 프로젝트에서 검색 효율성이 떨어집니다. user:id:password🎜🎜키와 같은 키에 대해 통일된 명명 패턴을 사용하는 것이 가장 좋습니다. 패턴 주어진 패턴을 만족하는 모든 키를 반환하며 퍼지 일치가 가능합니다. 예: keys abc*는 abc로 시작하는 키를 나타냅니다.     지나치게 의지 존재하지 않으면 0으로 반환🎜expire key second code> 키의 활동 시간(초) 설정🎜pexpire key milliseconds 키의 활동 시간 설정 (밀리초)🎜del key키 삭제🎜 ttl key 키가 없으면 -2를 반환하고, 키가 있으면 -2를 반환합니다. 남은 생존 시간이 설정되지 않은 경우 -1을 반환합니다.🎜persist key 만료 시간 취소🎜Dbindex 선택 데이터베이스를 선택합니다. 기본값은 16개이며 인덱스가 시작됩니다. 0에서 키, dbindex 모바일 현재 데이터베이스를 DBindex 데이터베이스로 🎜 Randomkey key🎜keyrename key, key2   키 이름 바꾸기🎜 dbsize                                                       에서 in�� 키를 통해 입력 🎜 *                                           int_ in 필수 구성 🎜type(key) 🎜flush1. 문자열 문자열 🎜🎜🎜🎜문자열은 Redis의 가장 기본적인 유형으로 키 하나에 최대 523MB까지 저장할 수 있습니다. String 유형은 바이너리 안전합니다. 이는 redis의 문자열이 모든 데이터를 포함할 수 있음을 의미합니다. 그림이나 직렬화된 개체 등. 🎜🎜🎜문자열 애플리케이션 시나리오: 🎜🎜
  • 문자열은 일반적으로 단일 문자열 또는 JSON 문자열 데이터를 저장하는 데 사용됩니다.
  • 문자열은 바이너리 안전하므로 이미지 파일의 내용을 문자열로 저장할 수 있습니다.
  • 카운터(일반 키-값 캐싱 애플리케이션, 팬 수, 웨이보 수, 투표 수 등)
🎜🎜INCR과 같은 명령어 자체는 원자 연산의 특성을 가지고 있습니다. , 따라서 Redis의 NCR, INCRBY, DECR, DECRBY 및 기타 지침을 사용하여 원자 계산 효과를 얻는 것이 완전히 가능합니다. 특정 시나리오에서 세 명의 클라이언트가 minum 값(값은 2)을 동시에 읽고 여기에 1을 더하는 경우 bynum의 최종 값은 5가 되어야 합니다. 많은 웹사이트에서는 비즈니스 통계 계산 요구 사항을 충족하기 위해 이 빨간색 기능을 사용합니다. 🎜🎜🎜할당 구문🎜🎜키 값 설정 키에 값을 할당하면 여러 설정이 이전 값을 덮어쓰고 유형🎜setnx 키 값을 무시합니다. 키로 값을 할당합니다. 키가 이미 있으면 설정되지 않고 0을 반환하고, 그렇지 않으면 설정되어 1을 반환합니다. 분산 잠금에 대한 솔루션 중 하나입니다. 🎜setex 키 시간 값  키에 값을 할당하고 만료 시간을 설정하면 키와 값이 모두 지워집니다. 🎜setrange key start end  지정된 범위 내의 값을 설정하며, 아래 첨자는 0부터 시작하여 문자열을 대체합니다. 🎜🎜🎜값 구문🎜🎜

키 가져오기                           키가 존재하지 않으면 nil을 반환합니다get key           获取指定key的value值,key不存在则返回nil
getrange key start end   获取指定key的value的子字符串,包括start和end角标
getbit key offset      对 key 所储存的字符串值,获取指定偏移量的bit(二进制)
getset key value      为key设新值,同时返回旧值,key不存在返回nil
substr(key, start, end)  返回名称为key的string的value的子串
删值语法
del key                  同Key

批量写入
mset k1 v1 k2 v2...kn vn        批量设置多个的值

批量读出

mget k1 k2 ... kn           获取多个key的值
自增自减
incr key                key的value对应+1
incrby key integer           key的value对应+integer
decr key                key的value对应-1
decrby key integer           key的value对应-integer

字符串拼接
append key value            将value附加到指定key的末尾

msetnx(key1, value1...keyN, valueN)  同时设置多个key和value,仅key之前都不存在时生效
字符串长度
strlen key                返回key的字符长度

二、双重键值对Hash

Hash类型是String类型的field和value的映射表。Hash特别适合用于存储对象,相比String可以占用更少的磁盘空间,可以看成具有key和value的map容器。Redis中每个hash可以存储(2^32)-1个键值对。

Hash的应用场景:

  • 通常用来存储一个用户信息对象数据。
  • Redis的Hash实际是将内部存储的value作为一个HashMap。

赋值语法

hset key field value          为指定key设置field和value
hsetnx key field value         为指定key设置field和value,如果key已存在则不生效。
hmset key f1 v1 f2 v2 ... fn vn   同时将多个field-value(域值对)设置到哈希表的key中。

取值语法

hget key field             根据field获取value值
hmget key f1 f2 ... fn        根据多个field获取所有的value值
hgetall key              获取Hash表中所有的字段和值
hkeys key               获取所有Hash表中的字段
hvals key               获取所有Hash表中的字段对应的value
hexists key field           查看Hash表Key中,指定的字段是否存在
hlen key                获取Hash表中字段的数量

删除语法

hdel key field1 field2 ... fieldn  删除一个或多个Hash表的字段
del key                 同Key

增减语法

hincrby key field integer       为Hash表Key中field对应的value增加integer
hincrbyfloat key field increment                                        end >> 키가 존재하지 않으면 nil을 반환합니다.     지정된 키 값의 하위 문자열을 가져옵니다. key start end code> 표준

getbit 키 오프셋                                                   > 키에 저장된 문자열 값에 대해 지정된 오프셋의 비트(바이너리)를 가져옵니다.

getset 키 값    새 값 설정 키에 대해 동시에 반환합니다. 이전 값, 키는 존재하지 않으며 nilsubstr(key, start, end)을 반환합니다. key

Delete라는 문자열 값의 하위 문자열을 반환합니다. 값 구문

del 키                                                                                                                 ded

                                                 일괄
  •   mset k1 v1 k2 v2... .. kn                                                                                         cco Welcome'> 키의 값은 다음에 해당합니다. +1
  • incrby 키 정수  +integer
  • decr 키에 해당                                                                           ccogenelves in string splicing
  • 키 값 추가                                        를 추가해야 합니까?
  • String length
  • strlen key key

2의 문자 길이를 반환합니다. 이중 키-값 쌍 Hash

    Hash 유형은 String 유형의 필드와 값의 매핑 테이블입니다. 해시는 특히 객체를 저장하는 데 적합하며 문자열보다 디스크 공간을 덜 차지하며 키와 값이 있는 맵 컨테이너로 간주될 수 있습니다. Redis의 각 해시는 (2^32)-1 키-값 쌍을 저장할 수 있습니다.

  • 해시 적용 시나리오: 🎜🎜🎜🎜은 일반적으로 사용자 정보 객체 데이터를 저장하는 데 사용됩니다. 🎜🎜Redis의 Hash는 실제로 내부에 저장된 값을 HashMap으로 사용합니다. 🎜🎜🎜🎜할당 구문🎜🎜🎜hset 키 필드 값      지정된 키에 대한 필드 및 값 설정🎜hsetnx 키 필드 값                                    int 존재하는 경우 적용되지 않습니다. 🎜hmset key f1 v1 f2 v2 ... fn vn  해시 테이블의 키에 여러 필드-값(필드 값 쌍)을 동시에 설정합니다. 🎜🎜🎜값 구문🎜🎜🎜hget 키 필드                                                                          업 업 인 인 인                                                                                      up in in in on in 🎜 hgetall key                                    업데이트해야 합니다. 🎜hexists 키 필드                        hlen 키     에 해당하는 값                                                  건강하지 않음 🎜🎜hdel key field1 field2 ... fieldn 하나 이상 삭제 해시 테이블 필드🎜del 키                                                                                                              부터 hincrby 키 필드                                                        cess 핸드 레그 in hincrby 플로트 키 필드 증분 목록🎜🎜🎜🎜목록 유형 연결리스트 구조의 집합이다 주요 기능에는 푸시, 팝 및 요소 가져오기가 포함됩니다. 좀 더 자세히 설명하면 List 유형은 관련 작업을 통해 컬렉션의 헤드 또는 테일 요소를 추가하고 삭제할 수 있는 양방향 연결 목록 구조입니다. 필요합니다. 🎜🎜🎜키가 존재하지 않으면 새 연결 목록을 만듭니다. 🎜🎜키가 이미 존재하는 경우 새 콘텐츠를 추가하세요. 🎜🎜모든 값이 제거되면 해당 키도 사라집니다. 🎜🎜연결 리스트 연산의 효율성은 머리와 꼬리 모두 매우 높지만 중간 요소의 연산 효율성은 매우 낮습니다. 🎜🎜🎜🎜🎜적용 시나리오🎜🎜🎜🎜🎜대량 데이터 수집 데이터 삭제🎜 리스트 데이터 표시, 관심 목록, 팬 목록, 메시지 평가 등... 페이징, 핫뉴스(Top10) 등 페이징 기능은 lrange를 사용하여 쉽게 구현할 수 있습니다. 블로그 시스템에서는 각 블로그 게시물의 댓글을 별도의 목록에 저장할 수도 있습니다. 🎜
  • Task Queue
    웹 클라이언트에서 보낸 명령 요청을 처리할 때 특정 작업의 실행 시간이 예상보다 길어질 수 있습니다. 실행할 작업의 관련 정보를 대기열에 넣고 나중에 처리하면 됩니다. 사용자는 완료하는 데 시간이 걸리는 작업을 연기합니다. 작업 프로세서에 작업을 넘겨주는 방식을 작업 대기열이라고 합니다. 목록은 일반적으로 메시지 대기열을 구현하고 순서를 확인하는 데 사용할 수 있습니다.

할당 구문

lpush key value1 value2 ... valueN 목록의 선두에 하나 이상의 값 삽입(왼쪽부터 추가)lpush key value1 value2 ... valueN    将一个或多个值插入到列表头部(从左侧添加)
rpush key value1 value2 ... valueN     将一个或多个值插入到列表头部(从右侧添加)
lpushx key value              将一个值插入到已存在的列表头部(最左边),如果列表不存在,操作无效。
rpushx key value              将一个值插入到已存在的列表尾部(最右边),如果列表不存在,操作无效。

取值语法

llen key             获取列表长度
lindex key index         通过索引获取列表的元素
lrange key start stop      获取列表指定范围内的元素

删除语法

lpop key            移除并获取列表的第一个元素(从左侧移除)
lpop key            移除并获取列表的最后一个元素(从右侧移除)
lrem key count value      删除count个值为value的key
blpop key1 key2 timeout    移除并获取列表的第一个元素,如果列表没有元素会阻塞列表,直到等待超时或发现可弹出元素为止
brpop key1 key2 timeout    移除并获取列表的最后一个元素,如果列表没有元素会阻塞列表,直到等待超时或发现可弹出元素为止
ltrim key start stop      对一个列表进行修剪,只保留指定区间内的元素,不在指定区间内的元素都删除。

修改语法

lset key index value           通过索引设置列表元素的值
linsert key before|after world value   在列表的某个元素world前或者后插入元素value。

高级命令

rpoplpush source destination        移除source列表的最后一个元素,并将该元素添加到destination列表,并返回。(可以对自己本身操作,类似队列)
brpoplpush source destination timeout   移除source列表的最后一个元素,并将该元素添加到destination列表,并返回;如果source 列表没有元素会阻塞列表知道等待超时或发现可移除元素为止。

四、无序集合Set

Set 是 String 类型的无序集合。集合成员是唯一的,集合中不能出现重复的数据。
Redis 中的集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是 O(1)。
集合中最大的成员数为 232 - 1 (4294967295, 每个集合可存储40多亿个成员)。
类似于JAVA中的 Hashtable集合

  • Redis的set的底层存储结构特别神奇,底层使用了intset和hashtable两种数据结构存储的,intset我们可以理解为数组,hashtable就是普通的哈希表(key为set的值,value为null)。
  • intset内部其实是一个数组(int8_t coentents[]数组),而且存储数据的时候是有序的,因为在查找数据的时候是通过二分查找来实现的。

应用场景

  • 对两个集合间的数据[计算]进行交集、并集、差集运算
  • 以非常方便的实现如共同关注、共同喜好、二度好友等功能。对上面的所有集合操作,你还可以使用不同的命令选择将结果返回给客户端还是存储到一个新的集合中。
  • 利用唯一性,可以统计访问网站的所有独立 IP

赋值语法

sadd key member1 member2 ... memberNrpush key value1 value2 ... valueN 목록의 헤드에 하나 이상의 값을 삽입합니다(오른쪽에서 추가)

lpushx 키 값 ), 목록이 존재하지 않는 경우 작동은 효과가 없습니다.

rpushx 키 값 기존 목록의 끝(가장 오른쪽)에 값을 삽입합니다. 목록이 없으면 작업이 유효하지 않습니다. value syntax

llen key index in index lrange 키 시작 정지 지정된 List🎜🎜🎜Delete Syntax의 지정된 범위에서 요소를 가져옵니다. 🎜🎜🎜lpop 키                                                                                                    신뢰자                                                              ccoute by > 목록의 마지막 요소를 제거하고 가져옵니다(오른쪽에서 제거됨)🎜lrem 키 카운트 값 값이 있는 카운트 키 삭제 🎜blpop key1 key2 timeoutShift 목록의 첫 번째 요소를 제거하고 가져옵니다. 목록에 요소가 없으면 대기 시간이 초과되거나 팝업 요소가 발견될 때까지 목록이 차단됩니다🎜brpop key1 key2 timeout  목록의 마지막 요소를 제거하고 가져옵니다. 목록에 요소가 없으면 대기 시간이 초과되거나 팝업 요소가 발견될 때까지 목록이 차단됩니다🎜ltrim key start stop   목록을 잘라내어 지정된 범위 내의 요소만 유지하고, 지정된 범위 내에 없는 요소는 삭제합니다. 🎜🎜🎜구문 수정🎜🎜🎜lset 키 인덱스 값 목록 요소의 값을 인덱스로 설정 🎜linsert key before|after world value 목록 요소 앞 world 또는 그런 다음 요소 값을 삽입합니다. 🎜🎜🎜고급 명령🎜🎜🎜rpoplpush 소스 대상      소스 목록의 마지막 요소를 제거하고 대상 목록에 요소를 추가한 후 돌아갑니다. (큐와 유사하게 자체적으로 작동할 수 있음) 🎜brpoplpush 소스 대상 시간 제한 소스 목록의 마지막 요소를 제거하고 해당 요소를 대상 목록에 추가한 후 반환합니다. 소스 목록이 차단됩니다. 목록은 시간이 초과되거나 제거 가능한 요소가 발견될 때까지 기다립니다. 🎜🎜🎜4. 순서가 없는 집합 Set🎜🎜
🎜Set은 문자열 형식의 순서가 없는 집합입니다. 집합 구성원은 고유하며 집합에 중복된 데이터가 나타날 수 없습니다. 🎜 Redis의 컬렉션은 해시 테이블을 통해 구현되므로 추가, 삭제, 검색의 복잡성은 O(1)입니다. 🎜 컬렉션의 최대 회원 수는 232 - 1입니다(4294967295, 각 컬렉션은 40억 명 이상의 회원을 저장할 수 있습니다). 🎜 JAVA의 Hashtable 컬렉션과 유사합니다🎜
    🎜 Redis 세트의 기본 저장소 구조는 특히 마술적입니다. 기본 저장소 구조는 intset과 hashtable이라는 두 가지 데이터 구조를 사용하며 배열로 이해될 수 있습니다. 해시 테이블입니다(키는 세트의 값이고 값은 널입니다). 🎜🎜Intset은 실제로 (int8_t coentents[] 배열) 내부의 배열인데, 데이터를 검색할 때 이진 검색을 통해 구현되기 때문에 데이터가 순서대로 저장됩니다. 🎜🎜
🎜🎜응용 시나리오🎜🎜
    🎜두 집합 사이의 데이터[계산]에 대해 교집합, 합집합, 차이 집합 연산을 수행합니다.🎜🎜공통 관심사, 공통 선호도 등 매우 편리한 구현을 사용합니다. 우정 및 기타 기능. 위의 모든 컬렉션 작업에 대해 다양한 명령을 사용하여 결과를 클라이언트에 반환할지 아니면 새 컬렉션에 저장할지 선택할 수도 있습니다. 🎜🎜고유성을 사용하면 웹 사이트에 액세스하는 모든 독립 IP를 계산할 수 있습니다🎜🎜🎜🎜할당 구문🎜🎜🎜sadd key member1 member2 ... memberN  세트에 하나 이상의 멤버 추가🎜🎜🎜 값 구문 가져오기 🎜🎜

    스카드 키                                                                                                                      는 세트의 멤버 수에 대해 조사합니다.        요소가 세트 키의 멤버인지 여부(개발 중: 존재합니다)
    srandmember 키 개수 집합에서 하나 이상의 난수를 반환합니다scard key                  获取集合的成员数
    smembers key                返回集合中的所有成员
    sismember key member           判断 member 元素是否是集合 key 的成员(开发中:验证是否存在判断)
    srandmember key count            返回集合中一个或多个随机数

    删除语法

    srem key member1 member2...memberN     移除集合中一个或多个成员
    spop kye count               移除并返回集合中的一个或多个随机元素

    smove source destincation member      将member元素从source集合移动到destination集合

    差集语法

    sdiff key1 key2               返回给定所有集合的差集(左侧)
    sdiffstore destination key1 key2      返回给定所有集合的差集并存储在 destination 中(destination中原有的数据清除)

    交集语法

    sinter key1 key2               返回给定所有集合的交集(共有数据)
    sinterstore destination key1 key2     返回给定所有集合的交集并存储在 destination 中

    并集语法
    sunion key1 key2               返回所有给定集合的并集
    sunionstore destination key1 key2      所有给定集合的并集存储在 destination 集合中

    五、有序集合Zset

    Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。zset的成员是唯一的,但分数(score)却可以重复。

    • 之前的set是k1 v1 v2
    • 现在的zset是k1 score1 v1 score2 v2

    应用场景

    • 排行榜
      ①twitter 的public timeline可以以发表时间作为score来存储,这样获取时就是自动按时间排好序的。
      ②一个存储全班同学成绩的Sorted Set,其集合value可以是同学的学号,而score就可以是其考试得分,这样在数据插入集合的时候,就已经进行了天然的排序。
      ③用Sorted Set来做带权重的队列,比如普通消息的score为1,重要消息的score为2,然后工作线程可以选择按score的倒序来获取工作任务。让重要的任务优先执行。

    赋值语法
    zadd key score1 member1 score2 member2  向有序集合添加一个或多个成员,或者更新已存在成员的分数

    取值语法
    zcard key                  获取有序集合的成员数
    zcount key min max             计算在有序集合中指定区间分数的成员数
    zrank key member              返回有序集合中指定成员的索引
    zrange key start stop [withscores]     通过索引区间返回有序集合成指定区间内的成员(低到高)
    zrevrange key start stop [withscores]   通过索引区间返回有序集合成指定区间内的成员(高到低)
    zlexcount key,min,max           在有序集合中计算指定字典区间内成员数量

    删除语法
    del key                   移除集合
    zrem key member [member ...]        移除有序集合中的一个或多个成员
    zremrangebyrank key start stop       移除有序集合中给定的排名区间的所有成员(第一名是0)(低到高排序)
    zremrangebyscore key min max        移除有序集合中给定的分数区间的所有成员

    分数自增
    zincrby key ncrement member

    구문 삭제

    srem key member1 member2...memberN                                                         richdieâ €œ 스모크 소스 대상 멤버                                    ulous diff key1 key2 Side)
    sdiffstore 대상 key1 key2 주어진 모든 집합의 차이 집합을 반환하고 대상에 저장합니다(대상의 원본 데이터는 삭제됩니다)

    Intersection 구문

    sinter key1 key2        주어진 모든 집합의 교집합을 반환합니다(공유 데이터)
    sinterstore 대상 key1 key2                                                             대상 키1의 inemaover 주어진 모든 세트(공유 데이터)의 교집합을 반환합니다.
    sinterstore 대상 키1 키2 🎜
    sunion key1 key2 주어진 모든 컬렉션의 합집합을 반환합니다.
    sunionstore 대상 key1 key2 주어진 모든 컬렉션의 합집합은 대상 컬렉션 🎜🎜🎜5에 저장됩니다. Zset🎜🎜
    🎜Redis zset도 set과 마찬가지로 문자열 형식 요소의 모음이며 중복 멤버를 허용하지 않습니다. 차이점은 각 요소가 이중 유형 점수와 연관되어 있다는 것입니다. Redis는 점수를 사용하여 컬렉션 구성원을 작은 것부터 큰 것 순으로 정렬합니다. zset의 멤버는 고유하지만 점수는 반복될 수 있습니다. 🎜
    • 이전 세트는 k1 v1 v2였습니다.
    • 현재 zset은 k1 Score1 v1 Score2 v2입니다.
    🎜🎜응용 시나리오🎜🎜
    • 순위
      ① 트위터의 공개 타임라인은 공개 시간을 점수로 저장하여 검색 시 자동으로 시간별로 정렬되도록 할 수 있습니다.
      ② 학급 전체의 성적을 저장하는 Sorted Set. 설정된 값은 학생 번호, 점수는 시험 점수가 될 수 있습니다. 이렇게 데이터를 세트에 삽입하면 자연스럽게 정렬됩니다. 이미 수행되었습니다.
      ③ Sorted Set을 사용하여 가중치가 적용된 대기열을 생성합니다. 예를 들어 일반 메시지의 점수는 1이고 중요한 메시지의 점수는 2입니다. 그러면 작업자 스레드는 작업 작업을 역순으로 가져오도록 선택할 수 있습니다. 점수. 중요한 작업의 우선순위를 정하세요.
    🎜🎜할당 구문🎜
    zadd key Score1 member1 Score2 member2 하나 이상의 멤버를 정렬된 세트에 추가하거나 기존 멤버의 점수를 업데이트하세요🎜🎜 🎜값 구문🎜
    zcard key         주문 세트의 구성원 수 가져오기
    zcount key min max                                                               주문한 세트
    zcount key min max 회원 수
    zrank 키 멤버 순서 집합에서 지정된 멤버의 인덱스를 반환합니다.
    zrange 키 시작 중지 [withscores] 인덱스 범위를 통해 순서 집합을 반환합니다. 지정된 범위(낮음에서 높음)
    zrevrange 키 시작 중지 [점수 포함] 지정된 범위(높음에서 낮음)의 멤버를 합성하기 위해 인덱스 범위를 통해 순서화된 세트를 반환합니다.
    zlexcount 키,min,max                                                   cess 핸드오버 />zrem 키 멤버 [멤버 ...] 주문한 세트에서 하나 이상의 멤버 제거
    zremrangebyrank key start stop 순서가 지정된 세트 제거 (첫 번째 순위는 0)(낮은 순서에서 높은 순서)
    zremrangebyscore key min max code>      주문 세트에서 지정된 점수 간격의 모든 멤버를 제거합니다 멤버 🎜🎜🎜점수가 증가합니다🎜<br><code>zincrby key ncrement 멤버     주문 세트에서 지정된 멤버의 점수에 increment🎜🎜🎜 6. HyperLoglog🎜🎜🎜Redis 2.8 버전에서는 HyperLoglog 구조가 추가되었습니다. 이 구조는 카디널리티 통계를 수행하는 데 사용되는 알고리즘입니다. 🎜🎜장점: 입력 요소가 아무리 많아도 카디널리티를 계산하는 데 필요한 공간은 항상 고정되어 있으며 매우 작습니다. 🎜🎜단점: 입력 요소의 기본만 계산하고 입력 요소 자체를 저장하지 않습니다. 인덱스는 입력의 각 요소를 집합처럼 반환할 수 없습니다. 🎜

    기본수란 무엇인가요?
    예를 들어 데이터 세트가 {1, 2, 3, 3, 4, 5, 5}인 경우 이 데이터 세트의 카디널리티 세트는 {1, 2, 3, 4, 5}이고 카디널리티는 5입니다. 소위 카디널리티 추정(cardinality estimation)은 허용 가능한 오류 범위 내에서 카디널리티를 빠르게 계산하는 것입니다.
    HyperLogLog를 사용하는 이유는 무엇인가요?
    전통적으로 개체의 카디널리티 값을 계산하려면 12M의 메모리가 필요합니다. 10,000개의 개체를 계산하면 거의 120G의 메모리가 필요하며 이는 빅 데이터 시나리오에서 널리 사용할 수 없습니다. 그러나 HyperLogLog를 사용하면 1억 개의 카디널리티 값을 계산할 수 있습니다. 데이터가 약 12M 정도 필요하므로 메모리 사용량이 크게 줄어듭니다. ​​​sourcekey1 sourcekey2 ...sourcekeyN

    여러 HyperLogLog를 하나의 HyperLogLog로 병합

    Redis 공통 데이터 유형 작업 지침 요약관련 무료 학습 권장 사항:
    redispfadd key element1 element2 ... elementN         添加指定元素到HyperLogLog中
    pfcount key                        返回给定HyperLogLog的基数估算值
    pfmerge destkey sourcekey1 sourcekey2 ...sourcekeyN

위 내용은 Redis 공통 데이터 유형 작업 지침 요약의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
이 기사는 csdn.net에서 복제됩니다. 침해가 있는 경우 admin@php.cn으로 문의하시기 바랍니다. 삭제