以下是Redis支持的所有數(shù)據(jù)結(jié)構(gòu):
- 二進制安全字符串。
- 列表:根據(jù)插入順序排序的字符串元素的集合。它們基本上是鏈表。
- 集合:唯一的、未排序的字符串元素的集合。
- 排序集合,類似于集合,但其中每個字符串元素都與一個浮點值相關(guān)聯(lián),稱為score。元素總是按它們的分數(shù)排序。
- 哈希,它是由與值關(guān)聯(lián)的字段組成的映射。字段和值都是字符串。
- 位數(shù)組(或簡單的位圖):使用特殊命令可以像處理位數(shù)組一樣處理字符串值:您可以設(shè)置和清除單個位,計算所有設(shè)置為 1 的位,找到第一個設(shè)置或未設(shè)置的位,等等。
- HyperLogLogs:這是一種概率數(shù)據(jù)結(jié)構(gòu),用于估計集合的基數(shù)。
- Streams:提供抽象日志數(shù)據(jù)類型的類似地圖條目的僅附加集合。
Redis 字符串
> set mykey somevalue
OK
> get mykey
"somevalue"
請注意,SET將替換已存儲在鍵中的任何現(xiàn)有值。
原子增量:
> set counter 100
OK
> incr counter
(integer) 101
> incr counter
(integer) 102
> incrby counter 50
(integer) 152
在單個命令中設(shè)置或檢索多個鍵的值:
> mset a 10 b 20 c 30
OK
> mget a b c
1) "10"
2) "20"
3) "30"
更改、查詢、刪除:
> set mykey hello
OK
> exists mykey
(integer) 1
> del mykey
(integer) 1
> exists mykey
(integer) 0
Redis 列表
Redis 列表是通過鏈表實現(xiàn)的。這意味著即使列表中有數(shù)百萬個元素,在列表的頭部或尾部添加新元素的操作也是在常數(shù)時間內(nèi)執(zhí)行的。使用LPUSH命令在10個元素的列表頭添加一個新元素的速度與在1000萬個元素的列表頭添加一個元素的速度是一樣的。
有什么缺點?在使用 Array 實現(xiàn)的列表(恒定時間索引訪問)中通過索引訪問元素非??欤谟涉湵韺崿F(xiàn)的列表中則沒有那么快(其中操作需要的工作量與訪問元素的索引成正比)。
LPUSH命令將一個新元素到一個列表,在左側(cè)(在頭部),而RPUSH命令將一個新元素到一個列表,在右側(cè)(在尾部)。LRANGE命令從列表中提取元素范圍:
> rpush mylist A
(integer) 1
> rpush mylist B
(integer) 2
> lpush mylist first
(integer) 3
> lrange mylist 0 -1
1) "first"
2) "A"
3) "B"
Redis 哈希
> hmset user:1000 username antirez birthyear 1977 verified 1
OK
> hget user:1000 username
"antirez"
Redis 集
Redis 集合是無序的字符串集合。
sadd:添加元素。
smembers:返回所有成員。
> sadd myset 1 2 3
(integer) 3
> smembers myset
1. 3
2. 1
3. 2
不同集合的交集:
> sinter tag:1:news tag:2:news tag:10:news tag:27:news
... results here ...
Redis 排序集
有序集合是一種類似于集合和哈?;旌系臄?shù)據(jù)類型。與集合一樣,有序集合由唯一的、不重復(fù)的字符串元素組成,因此在某種意義上,有序集合也是一個集合。ZADD類似于SADD,但需要一個額外的參數(shù)(放置在要添加的元素之前),即分數(shù)。
> zadd hackers 1940 "Alan Kay"
(integer) 1
> zadd hackers 1957 "Sophie Wilson"
(integer) 1
zrange hackers 0 -1 withscores
0 和 -1 表示從元素索引 0 到最后一個元素。
Redis 返回分數(shù)在負無窮大和 1950 之間的所有元素:
zrangebyscore hackers -inf 1950
查詢一個元素在有序元素集中的位置是什么:
zrank hackers "Anita Borg"
(integer) 4
學(xué)習(xí)鏈接:https://redis.io/topics/data-types-intro