91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Redis有哪些基本數據結構和操作

發布時間:2021-11-11 14:33:08 來源:億速云 閱讀:136 作者:iii 欄目:關系型數據庫

這篇文章主要講解了“Redis有哪些基本數據結構和操作”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“Redis有哪些基本數據結構和操作”吧!

基本結構

一個String類型的key、value最大上限均是512M。其基本結構如下:基本語法

Redis中字符串的基本操作如下表所示。

使用場景-統計用戶上線天數

Bitmap 對于一些特定類型的計算非常有效。

假設現在我們希望記錄自己網站上的用戶的上線頻率,比如說,計算用戶 A 上線了多少天,用戶 B 上線了多少天,諸如此類,以此作為數據,從而決定讓哪些用戶參加 beta 測試等活動 —— 這個模式可以使用 SETBIT 和 BITCOUNT 來實現。

比如說,每當用戶在某一天上線的時候,我們就使用 SETBIT ,以用戶名作為 key ,將那天所代表的網站的上線日作為 offset 參數,并將這個 offset 上的為設置為 1 。

舉個例子,如果今天是網站上線的第 100 天,而用戶 peter 在今天閱覽過網站,那么執行命令 SETBIT peter 100 1 ;如果明天 peter 也繼續閱覽網站,那么執行命令 SETBIT peter 101 1 ,以此類推。

當要計算 peter 總共以來的上線次數時,就使用 BITCOUNT 命令:執行 BITCOUNT peter ,得出的結果就是 peter 上線的總天數。

基本結構

Redis有哪些基本數據結構和操作

操作 語法 說明
BLPOP BLPOP key [key …] timeout BLPOP 是列表的阻塞式(blocking)彈出原語.它是 LPOP 命令的阻塞版本,當給定列表內沒有任何元素可供彈出的時候,連接將被 BLPOP 命令阻塞.
BRPOP BRPOP key [key …] timeout 它是 RPOP 命令的阻塞版本,當給定列表內沒有任何元素可供彈出的時候,連接將被 BRPOP 命令阻塞.
BRPOPLPUSH BRPOPLPUSH source destination timeout BRPOPLPUSH 是 RPOPLPUSH 的阻塞版本,當給定列表 source 不為空時, BRPOPLPUSH 的表現和 RPOPLPUSH 一樣。當列表 source 為空時, BRPOPLPUSH 命令將阻塞連接,直到等待超時,或有另一個客戶端對 source 執行 LPUSH 或 RPUSH 命令為止。
LINDEX LINDEX key index 返回列表 key 中,下標為 index 的元素。
LINSERT LINSERT key BEFORE/AFTER pivot value 將值 value 插入到列表 key 當中,位于值 pivot 之前或之后。當 pivot 不存在于列表 key 時,不執行任何操作。當 key 不存在時, key 被視為空列表,不執行任何操作。如果 key 不是列表類型,返回一個錯誤。
LLEN LLEN key 返回列表 key 的長度。
LPOP LPOP key 移除并返回列表 key 的頭元素。
LPUSH LPUSH key value [value …] 將一個或多個值 value 插入到列表 key 的表頭
LPUSHX LPUSHX key value 將值 value 插入到列表 key 的表頭,當且僅當 key 存在并且是一個列表
LRANGE LRANGE key start stop 返回列表 key 中指定區間內的元素,區間以偏移量 start 和 stop 指定
LREM LREM key count value 根據參數 count 的值,移除列表中與參數 value 相等的元素
LSET LSET key index value 將列表 key 下標為 index 的元素的值設置為 value
LTRIM LTRIM key start stop 對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除。舉個例子,執行命令 LTRIM list 0 2 ,表示只保留列表 list 的前三個元素,其余元素全部刪除。
RPOP RPOP key 移除并返回列表 key 的尾元素
RPOPLPUSH RPOPLPUSH source destination 命令 RPOPLPUSH 在一個原子時間內,執行以下兩個動作:將列表 source 中的最后一個元素(尾元素)彈出,并返回給客戶端。將 source 彈出的元素插入到列表 destination ,作為 destination 列表的的頭元素。
RPUSH RPUSH key value [value …] 將一個或多個值 value 插入到列表 key 的表尾(最右邊)
RPUSHX RPUSHX key value 將值 value 插入到列表 key 的表尾,當且僅當 key 存在并且是一個列表。和 RPUSH 命令相反,當 key 不存在時, RPUSHX 命令什么也不做。

舉一些例子:

127.0.0.1:6379> lpush stack "a" "b" "c" (integer) 3 127.0.0.1:6379> rpop stack "a"
		1	
		2	
		3	
		4	
  • 隊列

127.0.0.1:6379> lpush queue "a" "b" "c" (integer) 3 127.0.0.1:6379> lpop queue "c" 
		1	
		2	
		3	
		4	
		5	
  • BLPOP

127.0.0.1:6379> exists job
(integer) 0 127.0.0.1:6379> blpop job 5 #一直阻塞到5s超時 (nil)
(5.03s)
		1	
		2	
		3	
		4	
		5	
  • LINDEX

127.0.0.1:6379> lpush myjob "my" "job" "is" "iter" (integer) 4 127.0.0.1:6379> lindex myjob -1 "my"
		1	
		2	
		3	
		4	

3. 哈希表Hash

存儲的是一個field與value的映射表,即存儲的是一個Map,每一條數據可以看做是key-field-value的格式,field-value對應的是Map的一個鍵值對。

基本語法

使用場景-存儲社交關系

比如新浪的關注列表, 粉絲列表都是由hash實現的。

基本結構

Redis有哪些基本數據結構和操作

操作 語法 說明
SADD SADD key member [member …] 將一個或多個 member 元素加入到集合 key 當中,已經存在于集合的 member 元素將被忽略.
SCARD SCARD key 返回集合 key 的基數(集合中元素的數量).
SDIFF SDIFF key [key …] 返回一個集合的全部成員,該集合是所有給定集合之間的差集.
SDIFFSTORE SDIFFSTORE destination key [key …] 這個命令的作用和 SDIFF 類似,但它將結果保存到 destination 集合,而不是簡單地返回結果集.
SINTER SINTER key [key …] 返回一個集合的全部成員,該集合是所有給定集合的交集.
SINTERSTORE SINTERSTORE destination key [key …] 這個命令類似于 SINTER 命令,但它將結果保存到 destination 集合,而不是簡單地返回結果集.
SISMEMBER SISMEMBER key member 判斷 member 元素是否集合 key 的成員.
SMEMBERS SMEMBERS key 返回集合 key 中的所有成員.
SMOVE SMOVE source destination member 將 member 元素從 source 集合移動到 destination 集合.
SPOP SPOP key 移除并返回集合中的一個隨機元素.
SRANDMEMBER SRANDMEMBER key [count] 如果 count 為正數,且小于集合基數,那么命令返回一個包含 count 個元素的數組,數組中的元素各不相同。如果 count 大于等于集合基數,那么返回整個集合。如果 count 為負數,那么命令返回一個數組,數組中的元素可能會重復出現多次,而數組的長度為 count 的絕對值.
SREM SREM key member [member …] 移除集合 key 中的一個或多個 member 元素,不存在的 member 元素會被忽略.
SUNION SUNION key [key …] 返回一個集合的全部成員,該集合是所有給定集合的并集.
SUNIONSTORE SUNIONSTORE destination key [key …] 這個命令類似于 SUNION 命令,但它將結果保存到 destination 集合,而不是簡單地返回結果集.
SSCAN SSCAN key cursor [MATCH pattern] [COUNT count] 詳細信息請參考 SCAN 命令.

舉一些例子

  • 差集

127.0.0.1:6379> sadd set1 "a1" "a2" "a3" (integer) 3 127.0.0.1:6379> sadd set2 "a1" "a3" "a4" (integer) 3 127.0.0.1:6379> sdiff set1 set2 1) "a2" 127.0.0.1:6379> sdiffstore set set1 set2
(integer) 1 127.0.0.1:6379> smembers set 1) "a2" 
		1	
		2	
		3	
		4	
		5	
		6	
		7	
		8	
		9	
		10	
		11	
  • 并集

127.0.0.1:6379> sadd set1 "a1" "a2" "a3" (integer) 3 127.0.0.1:6379> sadd set2 "a1" "a3" "a4" (integer) 3 127.0.0.1:6379> sunion set1 set2 1) "a4" 2) "a1" 3) "a3" 4) "a2" 
		1	
		2	
		3	
		4	
		5	
		6	
		7	
		8	
		9	
		10	
  • 交集

127.0.0.1:6379> sadd set1 "a1" "a2" "a3" (integer) 3 127.0.0.1:6379> sadd set2 "a1" "a3" "a4" (integer) 3 127.0.0.1:6379> smembers set 1) "a2" 127.0.0.1:6379> sinter set1 set2 1) "a3" 2) "a1" 127.0.0.1:6379> sinterstore set set1 set2
(integer) 2 127.0.0.1:6379> smembers set 1) "a1" 2) "a3" 
		1	
		2	
		3	
		4	
		5	
		6	
		7	
		8	
		9	
		10	
		11	
		12	
		13	
		14	
		15	

5. 有序集合SortedSet

和set一樣sorted set也是string類型元素的集合,不同的是每個元素都會關聯一個double類型的score,所以sorted set是一個有序的集合。

基本語法

使用場景-用戶得分排行榜

和Sets相比,Sorted Sets是將 Set 中的元素增加了一個權重參數 score,使得集合中的元素能夠按 score 進行有序排列,比如一個存儲全班同學成績的 Sorted Sets,其集合 value 可以是同學的學號,而 score 就可以是其考試得分,這樣在數據插入集合的時候,就已經進行了天然的排序。另外還可以用 Sorted Sets 來做帶權重的隊列,比如普通消息的 score 為1,重要消息的 score 為2,然后工作線程可以選擇按 score 的倒序來獲取工作任務。讓重要的任務優先執行。 
帶有權重的元素,比如一個游戲的用戶得分排行榜

感謝各位的閱讀,以上就是“Redis有哪些基本數據結構和操作”的內容了,經過本文的學習后,相信大家對Redis有哪些基本數據結構和操作這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平罗县| 蓬溪县| 拉萨市| 古田县| 营山县| 安福县| 南靖县| 静海县| 边坝县| 潮安县| 辽宁省| 陕西省| 广昌县| 江华| 济宁市| 封丘县| 凉城县| 冀州市| 清远市| 固安县| 卢湾区| 河源市| 惠水县| 邯郸县| 永吉县| 莲花县| 莆田市| 浦江县| 平阳县| 安泽县| 栾城县| 平罗县| 华坪县| 宜都市| 依安县| 南通市| 巨鹿县| 韩城市| 黄冈市| 徐水县| 洛南县|