redis數據結構

Redis支持哪些數據結構?html

string,hash,list,set,Sortedset(初級水平)redis

HyperLogLog,Geo,Pub/Sub (中級水平)緩存

Redis Module , BloomFilter(避免緩存擊穿),RedisSearch, Redis-M(高級水平)數據結構

  • String類型

Value能夠說是String也能夠是數字spa

通常作一些複雜的計數功能的緩存htm

操做:對象

1) 賦值和取值blog

Set Key Value索引

Get Keyrem

2) 遞增數字

存儲的字符串是數字 場合

INCR Key

 

假設

客戶端A  INCR num ,5-》6

 同時客戶端B INCR num 5-》6?7?

會不會出現數據不一致的情況

       答案是不會,每一個redis的命令都是原子操做

 

Redis對Key的命名沒有特殊規定,方便起見最好「對象類型:對象ID:對象屬性」,好比「USER:1:FRIENDS」

   另外還有一些經常使用命令:

INCRBY KEY increment

DECR KEY

DECRBY KEY increment

INCRBYFLOAT KEY increment

APPEND KEY Value

STRLEN KEY

MGET KEY [KEY…]

 例如:MGET KEY1 KEY2

MSET KEY VALUE [KEY VALUE…]

GETBIT KEY OFFSET

SETBIT KEY OFFSET VALUE

BITCOUNT KEY [start] [end]

BITOP operation destkey key [key…]

注意:位操做索引從0開始

  • Hash類型

Hash類型是一個String類型的field和value的鍵值對,每一個hash能夠存儲232 - 1 鍵值對(40多億)。

hash類型的(key, field, value)的結構與對象的(對象id, 屬性, 值)的結構類似

 

應用場景

好比購物車:

以用戶id爲key,商品id爲field,商品數量爲value,剛好構成了購物車的3個要素,以下圖所示。

 

 |filed1|--|value|

Key--|filed2|--|value|

 |filed3|--|value|

操做:

  HSET Key field value

  HGET Key field

  HMSET Key field value [field value]

  HMGET Key field [field…]

  HGETALL key

  HEXISTS key field

  HSETNX key field value

  HINCRBY key field increment

  HDEL key field [field…]

  HKEYS Key

  HVALS key

  HLEN key

 

  • 集合

集合中每一個元素的值不一樣,而且沒有順序。

操做

 SADD key member1 [member2] 集合中添加一個或多個成員

 SCARD key 獲取集合的成員數

 SDIFF key1 [key2] 返回給定全部集合的差集

 另外還有 求並集,交集的操做

  還有其餘一些操做參考https://www.runoob.com/redis/redis-sets.html

   應用場景

     好比 微博中關注好友,共同好友,共同關注

  • 有序集合

和集合同樣,不一樣的是元素是有序的

 

 

參考:

https://www.cnblogs.com/pangzizhe/p/10657801.html

《redis入門指南》

相關文章
相關標籤/搜索