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入門指南》