Redis筆記整理3

一、Redis的lists
1.基本含義。
 list在redis中是指linked list而非array,linked list有一個好處就是不管list中的數量,在list的head和tail插入一個元素的時間是一樣的。list查找中間元素的速度是比較慢的,而sorted sets則比較快。
2.簡單操作:
  增:lpush  rpush  刪: lpop rpop ltrim rtrim  查:lrange 
3.應用場景
 記錄最新的一些文章或者評論啥的。
 基於生產者消費者模式的進程間通訊。
4.list的阻塞
  有一種情況,基於生產者消費者模式的list,當消費者沒有東西可以消費,那麼這個時候會採用polling(輪詢)的方式進行重新消費,即隔一會兒pop一下取數據,災難來了,輪詢間隔長,那麼會有延時,輪詢太短,那麼會有很多沒用的請求執行。    這個 時候阻塞list的命令來了,brpop和blpop,當list爲空時阻塞。

5.list的創建和空的list的刪除。
所有的aggregate data type的操作都一樣,lists,sets,sorted sets,hashes,都是當集合中要添加元素時創建,當集合中元素爲空時刪除,查看集合元素或者刪除時返回的結果就好像是真的有一個對應key的集合存在。原文如下:


二、Redis中的hashes.
1.命令:
hmset hmget hgetall  hset hget hgetall
2.含義:
感覺hash像是java中的一個有不同field的Object,或者一個JSON對象,也像是mysql數據庫裏的一條記錄。
3.demo:

我們可以通過設置不同的key值,實現一個類似於表的結構,例如author:1 ,author:2,author:3 。
4.hash這種結構在內存中是非常高效的。

三、Redis中的Set
1.含義
存儲無序的strings集合。
2.操作
有插入,聯合,找不不同,去一個隨機的元素。

增:sadd  sunionstore 查:smembers  sismember sinter scard srandmember 刪:spop 


四、Redis中的Sorted Sets
1.含義
Sorted Sets在結構上像是Set和Hash的混合體,其中的每個元素都有一個floating point value叫做score。他是有序的,他 的順序首先是由score決定,如果score相同,那麼由元素內容的lexicographical 決定。
2.操作
增:zadd  
查:zrange  zrangebyscore  zremrangebyscore  zrank  zremrank zrangebylex
3.


五、Redis中的bitmap
1.bitmap不是個真的數據結構,而是基於針對string的位操作的一個set。string可以512M那麼佔用的位,512*1024*1024*8=2的32次方個bits.(40個億)
2.操作:
位操作分爲兩種:固定時間的單個bit操作 和 針對一組bit的操作。
3.優勢
可以做到極限使用空間。一個string可以存儲40個億的bit。例如:512M的內存可以記錄40個億用戶的性別。
應用場景:各種實時的分析。存儲高校利用空間的boolean值。
4.


六、Redis中的HyperLogLogs
直接貼:

這種HLL結構是用來記錄特殊的事務的個數。sets中元素個數的計算,需要用到與元素個數成正比的內存,而用hll可以只用一個常量的空間,最大佔用空間爲12K.如何做到的?是因爲它實際上存儲的是一種關於元素的state. 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章