Redis_ 데이터 유형

다음과 같은 주요 데이터 유형의 레디 스 지원은 다음과 같습니다 :

  • String 형
  • 해시 유형
  • 목록 유형
  • 컬렉션 유형
  • 인덱스 컬렉션

 

 문자열 유형

       레디 스 문자열 형식은 데이터의 가장 기본적인 유형, 그것은 이진 데이터를 포함하는 문자열의 모든 종류를 저장할 수 있습니다. 키는 문자열 타입의 512MB 최대 용량의 데이터를 저장 할 수 있습니다.

 

1, 명령의 문자열

 

1.1 배열 및 값

SET 키 값

키 GET

다음 예는 다음과 같다 :


팁 : 키를 명명 레디 스 필수는 아니지만 좋은 연습은 "개체 유형 : 개체 ID : 개체 속성"을 사용하는 이름으로, 구분 된 여러 단어를 사용하는 것이 좋습니다. "."

 

1.2 디지털 단위

INCR 키

문자열이 명령 INCR을 허용하여, 정수 형태로 저장하면 현재 키를 증가, 예를 들면, 증가 된 값을 반환합니다 :


 

INCRBY 키 증가

INCRBY 명령 INCR 명령 전자는, 예를 들면 특정 할 수있는 파라미터의 증분 값만큼 증가되고, 기본적으로 동일하다 :


 

감소 1.3 디지털

DECR 키

DECRBY 키 감소

DECR 현재 키 명령은 감소가 DECREBY 명령은 예를 들어 감소 된 값이 동일하고 사용 INCRBY 명령을 지정 :


 

1.4 증가, 지정된 float

INCRBYFLOAT 키 증가

예를 들어, 부동 소수점 숫자로 배정 밀도를 증가하기위한 INCRBYFLOAT 명령


 

값 1.5은 꼬리에 추가

키 값을 추가

APPEND 함수 값을 키 값의 끝에 추가되고, 키의 값은 키가 값이 아닌 경우, 반환 값은 추가적인 문자열의 전체 길이를 변경 설정. 예 :


 

1.6 가져 오기 문자열 길이

STRLEN 키

키가 0, 예를 반환없는 경우 STRLEN 명령은 키의 길이를 반환합니다 :


 

동시에 1.7 / 여러 키를 설정하세요

MGET 키 [키 ...]

MSET 키 값 [키 값 ...]

MGET 별도로 사용되거나 MSET 키 세트, 예 다수의 키를 획득하기 위해 명령


 

해시의 두 번째 유형

       散列类型的键值是一种字典结构,其存储了字段(field)和字段值的映射,但字段值只能是字符串,不支持其他数据类型。散列类型适合存储对象:使用对象类别和ID构成键名,使用字段表示对象的属性,字段值则存储属性值。例如要存储ID为2的汽车对象,可以设置键为car:2,键值为name:"奥迪",其中键值中"name"为字段,"奥迪"为字段值。

 

1、散列常用命令

 

1.1 赋值与取值

HSET key field value

HGET key field 

这两个命令分别用来给字段赋值和获得字段的值,HSET命令不区分是对字段的插入还是更新操作,当字段不存在时为插入操作,当字段存在时为更新操作,示例如下:

提示:在Redis中每个键都属于一个明确的数据类型,如通过HSET命令建立的键是散列类型,通过SET命令建立的键是字符串类型等。使用一个数据类型的命令操作另一种数据类型的键会提示错误:(error) WRONGTYPE Operation against a key holding the wrong kind of value。但也不是所有命令都是如此,如SET命令可以覆盖已经存在的键,不论键原来是什么类型。

 

HMSET key field value [field value ...]

HMGET key field [field ...]

当需要同时设置或获取多个字段的值时,可以使用HMSET/HMGET命令,示例如下:


 

HGETALL key

HGETALL命令可以获取键中的所有字段和字段值,示例如下:


 

1.2 判断字段是否存在

HEXISTS key field

HEXISTS命令用来判断一个字段是否存在,存在则返回1,否则返回0,示例如下:

 

1.3 当字段不存在时赋值

HSETNX key field value

如果字段已经存在,HSETNX命令将不执行任何操作,示例如下:

 

1.4 增加数字

HINCRBY key field increment

HINCRBY命令可使字段增加指定的整数,示例如下:

 

 1.5 删除字段

HDEL key field [field ...]

HDEL命令可以删除一个或多个字段,返回值是被删除的字段个数,示例如下:

 

1.6 只获取字段名或字段值

HKEYS key

HVALS key

 

1.7 获取字段数量

HLEN key

 

 

三、 列表类型 

  列表类型可以存储一个有序的字符串列表,常用的操作是向列表两端添加元素,或者获得列表的某一个片段。列表类型内部是使用双向链表实现的,所以向列表两端添加元素的时间复杂度为O(1),获取越接近两端的元素速度越快。

 

1、列表常用命令

 

1.1 向列表两端增加元素

LPUSH key value [value ... ]

RPUSH key value [value ... ]

LPUSH命令和RPUSH命令分别用来向列表左边和右边增加元素,返回值表示增加元素后的列表长度,示例如下:

 

 

1.2 从列表两端弹出元素

LPOP key

RPOP key

LPOP命令可以从列表的左边弹出一个元素,LPOP命令执行步骤:第一步是将列表左边的元素从列表中移除,第二步是返回被移除的元素值,RPOP命令类似,示例如下:

 

1.3 获取列表中元素的个数

LLEN key

当键不存在时LLEN会返回0,示例如下:

 

 1.4 获取列表片段

LRANGE key start stop

LRANGE命令能够获取列表中的某一片段,返回索引从start到stop之间的所有元素(包括两端的元素),Redis的列表起始索引为0。

 

 

 LRANGE命令也支持负索引,表示从右边开始取数,如"-1"表示最右边第一个元素,依次类推。

 

 注意两种特殊情况:

(1)如果start的索引位置比stop的索引位置靠后,则会返回空列表

(2)如果stop大于实际的索引范围,则会返回到列表最右边的元素

 

 1.5 删除列表中指定的值

LREM key count value

LREM命令会删除列表中前count个值为value的元素,返回值是实际删除的元素个数,根据count值的不同,LREM命令的执行方式会有差异:

(1)当count>0时LREM命令会从列表左边开始删除前count个值为value的元素;

(2)当count<0时LREM命令会从列表右边开始删除前|count|个值为value的元素;

(3)当count=0时LREM命令会删除所有为value的元素。

 

 1.6 获取/设置指定索引的元素值

LINDEX key index

LSET key index value

LINDEX命令用来返回指定索引的元素,索引从0开始

 

 如果index是负数则表示从右边开始计算的索引,最右边元素的索引为-1

 

 LSET命令是为指定索引设置值

 

 1.7 只保留列表指定片段

LTRIM key start end

LTRIM命令可以删除指定索引范围之外的所有元素,示例:

 

 1.8 向列表中插入元素

LINSERT key BEFORE|AFTER pivot value

LINSERT命令首先会在列表中从左到右查找值为pivot的元素,然后根据第二个参数是BEFORE还是AFTER来决定value插入到该元素的前面还是后面,返回值是插入后列表的元素个数

 

 1.9 将元素从一个列表转到另一个列表中

RPOPLPUSH source destination

RPOPLPUSH命令会先从source列表的右边弹出一个元素,然后将其加入到destination列表的左边,并返回这个元素的值,整个过程是原子的。

当把列表类型作为队列使用时,RPOPLPUSH命令可以很直观地在多个队列中传递数据。当source和destination相同时,RPOPLPUSH命令会不断地将队尾地元素移到队首。

 

 四、集合类型

  集合中的每个元素都是唯一的,且没有顺序。集合类型的常用操作是向集合中加入或删除元素、判断某个元素是否存在等,且多个集合之间还可以进行并集、交集和差集运算。

 

1、集合常用命令

 

1.1 增加/删除元素

SADD key member [member ... ]

SREM key member [member ... ]

SADD命令用来向集合中增加一个或多个元素,如果键不存在则会自动创建。因为集合中的元素是唯一的,如果要加入的元素已经存在于集合中就会忽略这个元素,返回值是成功加入的元素数量。

 

 SREM命令用来从集合中删除一个或多个元素,并返回成功删除的元素个数。

 

 

1.2 获取集合中的所有元素

SMEMBERS key

SMEMBERS命令会返回集合中的所有元素,示例如下:

 

 

1.3 判断元素是否存在集合中

SISMEMBER key member

 

 

1.4 集合间运算

SDIFF key [key ... ]

SDIFF命令用来对多个集合执行差集运算。集合A与集合B的差集表示为A-B,代表所有属于A且不属于B的元素构成的集合,示例如下:

 

 SDIFF命令还支持同时传入多个键

 

SINTER key [key ... ]

SINTER命令用来对多个集合执行交集运算。

 

SUNION key [key ... ]

SUNION命令用来对多个集合执行并集运算。

 

1.5 获取集合中元素个数

SCARD key

SCARD命令用来获取集合中的元素个数。

 

1.6 进行集合运算并将结果存储

SDIFFSTORE destination key [key .... ]

SINTERSTORE destination key [key ... ]

SUNIONSTORE destination key [key ... ]

SDIFFSTORE命令和SDIFF命令类似,区别在于SIDFFSTORE命令不会直接返回运算结果,而是将结果存储在destination键中,常用于需要进行多步集合运算的场景中,如需要先计算差集再将结果和其他键计算交集等。

 

1.7 随机获取集合中的元素

SRANDMEMBER key [count]

SRANDMEMBER命令用来随机从集合中获取一个元素,如:

 

 还可以根据count参数来一次随机获取count个元素,根据count的正负不同,表现不同。

(1)当count为正数时,SRANDMEMBER会随机从集合中获取count个不重复的元素。如果count的值大于集合中的元素个数,则返回集合中的所有元素

 

 (2)当count为负数时,SRANDMEMBER会随机从集合中获取|count|个元素,元素有可能相同。

 

 1.8 从集合中弹出一个元素

SPOP key

SPOP命令会从集合中随机选择一个元素弹出。

 

 

五、有序集合类型

 

1、介绍

  在集合的基础上,有序集合类型为集合中的每个元素都关联了一个分数,使得我们不仅可以完成插入、删除元素和判断元素是否存在等类型的操作,还能够获得分数最高的前N个元素、获得指定分数范围内的元素等与分数有关的操作。

 

2、有序集合与列表的区别

(1)列表类型是通过链表实现的,获取靠近两端的数据速度较快,而当元素增多后,访问中间数据的速度会较慢,所以更适合实现如“新鲜事”、“日志”这样很少访问中间元素的应用。

(2)有序集合类型是使用散列表和跳跃表实现的,所以即使读取位于中间部分的数据速度也很快。

    提示:散列表(Hash table,也叫哈希表),是根据关键码值(Key value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中一个位置来访问记录,以加快查找的速度。

(3)列表中不能简单地调整某个元素的位置,有序集合可通过更改元素的分数进行调整。

(4)有序集合比列表类型更耗费内存。

 

3、有序集合常用命令

 

 3.1 增加元素

ZADD key score member [score member ... ]

ZADD命令用来向有序集合中加入一个元素和该元素的分数,如果元素已经存在,则会用新的分数替换原来的分数。返回值是加入到集合中的元素个数。

 

 3.2 获取元素的分数

ZSCORE key member

 

 3.3 获取排名在某个范围内的元素列表

ZRANGE key start stop [WITHSCORES]

ZREVRANGE key start stop [WITHSCORES]

ZRANGE命令会按照元素分数从小到大返回索引从start到stop之间的所有元素(包含两端的元素,同时支持负数索引)。

 

 如果需要在获取元素的同时获得元素的分数,可在ZRANGE命令后加上WITHSCORES参数。

 如果两个元素的分数相同,Redis会按照字段顺序进行排序("0"<"9"<"A"<"Z"<"a"<"z")

 

3.4 获取指定分数范围的元素

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]

ZRANGEBYSCORE命令按照元素分数从小到大的顺序返回分数在min和max之间的元素(包含min和max)。

 

 如果希望分数范围不包含端点值,可以在分数前加上"("符号,示例如下:

 

 [LIMIT offset count]参数的作用:在获取的元素列表的基础上向后偏移offset个元素,并且只获取前count个元素。

 

 3.5 增加某个元素的分数

ZINCRBY key increment member

ZINCRBY命令可以增加一个元素的分数,返回值是更改后的分数。如果指定元素不存在,Redis在执行命令前会先建立它并将它的分数赋值为0再执行操作。

 

 3.6 获取集合中元素的数量

ZCARD key

 

 3.7 获取指定分数范围内的元素个数

ZCOUNT key min max

 

 3.8 删除一个或多个元素

ZREM key member [member ... ]

 

 3.9 按照排名范围删除元素

ZREMRANGEBYRANK key start stop

ZREMRANGEBYRANK命令按照元素分数从小到大的顺序删除处在指定排名范围内的所有元素,并返回删除的元素数量。

 

 3.10 按照分数范围删除元素

ZREMRANGEBYSCORE 키 분 최대

 

 3.11 순위 소자를 얻을

ZRANK 핵심 멤버

ZREVRANK 핵심 멤버

작은 요소에서 지정된 순위를 획득하기 위하여 따른 구성 요소의 많은 부분에 ZRANK 명령 (최소 점수 순위 요소가 0), ZREVRANK 명령 콘트라스트 (최대 스코어 랭킹 요소는 0이다).

 

 3.12 계산 교차로가 설정 순서화

ZINTERSTORE 대상 numkeys 키 [키 ...] [무게 무게 [무게 ...]] [집계 SUM | MIN | MAX]

ZINTERSTORE 교차로 및 대상 키의 복수의 정렬 된 세트의 존재의 결과를 계산하는 명령, 리턴 값은 대상 키의 요소 수이다. 주요 대상 포인트는 AGGREAGTE 매개 변수에 의해 결정된다.

AGGREGATE SUM 인 경우 (1)에있어서, 점수는 기본 SUM에 의해 스코어의 계산에 포함 된 각 요소의 세트의 주요 요소의 목적지이다.

 

최소 AGGREGATE 인 경우 (2), 대상 핵심 요소 점수는 각각의 계산에 관련된 요소들의 세트의 최소 점이다.

 

 (3) 골재 MAX는 분획물 대상 키 요소 세트의 산출에 관련된 각 요소의 스코어의 최대 값 인 경우.

 

 ZINTERSTORE 명령은 각 세트의 점수 적절한 중량 세트의 산출에 관련된 요소를 곱하여 가중치 파라미터의 각 세트의 무거운 중량에 의해 제공 될 수있다.

 ZUNINONSTORE 명령 세트는 계산과 유사한 명령 ZINTERSTORE을 설정하는 데 사용됩니다.

 

추천

출처www.cnblogs.com/nzhk/p/11695348.html