redis link 鍊錶結構

2021-07-25 19:29:59 字數 3143 閱讀 6627

lpush key value

作用: 把值插入到鏈結頭部

rpop key

作用: 返回並刪除鍊錶尾元素

rpush,lpop: 不解釋

lrange key start  stop

作用: 返回鍊錶中

[start ,stop]

中的元素

規律: 左數從0開始

,右數從

-1開始

lrem key count value

作用: 從

key鍊錶中刪除

value值

注: 刪除

count

的絕對值個

value

後結束

count>0 從表頭刪除

count<0 從表尾刪除

ltrim key start stop

作用: 剪下

key對應的鏈結,切

[start,stop]一段,

並把該段重新賦給

key

lindex key index

作用: 返回

index

索引上的值,

如  lindex key 2

llen key

作用:計算鏈結表的元素個數

redis 127.0.0.1:6379> llen task

(integer) 3

redis 127.0.0.1:6379>

linsert  key after|before search value

作用: 在

key鍊錶中尋找』search』,並在

search

值之前|

之後,.

插入value

注: 一旦找到乙個

search後,

命令就結束了

,因此不會插入多個

value

rpoplpush source dest

作用: 把

source

的尾部拿出,放在

dest

的頭部,

並返回該單元值

場景: task + bak 雙鏈表完成安全佇列

task列表                             

bak列表

業務邏輯:

1:rpoplpush task bak

2:接收返回值

,並做業務處理

3:如果成功

,rpop bak

清除任務

.如不成功

,下次從

bak表裡取任務

brpop ,blpop  key timeout

作用:等待彈出

key的尾

/頭元素,

timeout為等待超時時間

如果timeout為

0,則一直等待

場景: 長輪詢

ajax,

,能夠用到

setbit 的實際應用

場景: 1億個使用者

,每個使用者 登陸

/做任意操作  

,記為 今天活躍

,否則記為不活躍

每週評出: 有獎活躍使用者:連續

7天活動

每月評,等等

...

思路:

userid   dt  active

1        2013-07-27  1

1       2013-0726   1

如果是放在表中, 1:表急劇增大

,2:要用

group ,sum運算,

計算較慢

用: 位圖法

bit-map

log0721:  『011001...............0』

log0726 :   『011001...............0』

log0727 :  『0110000.............1』

1: 記錄使用者登陸:

每天按日期生成乙個位圖, 使用者登陸後,把

user_id

位上的bit

值置為1

2: 把

1周的點陣圖  

and計算,

位上為1的

,即是連續登陸的使用者

redis 127.0.0.1:6379> setbit mon 100000000 0

(integer) 0

redis 127.0.0.1:6379> setbit mon 3 1

(integer) 0

redis 127.0.0.1:6379> setbit mon 5 1

(integer) 0

redis 127.0.0.1:6379> setbit mon 7 1

(integer) 0

redis 127.0.0.1:6379> setbit thur 100000000 0

(integer) 0

redis 127.0.0.1:6379> setbit thur 3 1

(integer) 0

redis 127.0.0.1:6379> setbit thur 5 1

(integer) 0

redis 127.0.0.1:6379> setbit thur 8 1

(integer) 0

redis 127.0.0.1:6379> setbit wen 100000000 0

(integer) 0

redis 127.0.0.1:6379> setbit wen 3 1

(integer) 0

redis 127.0.0.1:6379> setbit wen 4 1

(integer) 0

redis 127.0.0.1:6379> setbit wen 6 1

(integer) 0

redis 127.0.0.1:6379> bitop and  res mon feb wen

(integer) 12500001

如上例,優點:

1: 節約空間

, 1億人每天的登陸情況,用

1億bit,

約1200wbyte,

約10m

的字元就能表示

2: 計算方便

線性結構 鍊錶

鍊錶 一元多項式求導 20分 設計函式求一元多項式的導數。以指數遞降方式輸入多項式非零項係數和指數 絕對值均為不超過1000的整數 數字間以空格分隔。以與輸入相同的格式輸出導數多項式非零項的係數和指數。數字間以空格分隔,但結尾不能有多餘空格。3 4 5 2 6 1 2 012 3 10 1 6 0 ...

常見鍊錶結構

線性表,有順序儲存結構 和鏈式儲存結構兩種,常見實現為一維陣列和單鏈表。效能對比查詢 插入和刪除 順序 o 1 順序 o n 單鏈表 o n 單鏈表 o 1 顯然,順序儲存結構適用於查詢,鏈式儲存結構適合於插入和刪除操作,各有優缺點。上述兩種都比較簡單,實現本文不介紹,略提一下優缺點。接下來介紹其他...

迴圈鍊錶結構

在單鏈表結構上,在第1個節點插入和刪除,只不過是第i個節點的插入和刪除的特殊情況。這些情況只所以特殊,是因為head指標必須重置。可以使用乙個帶有啞頭節點迴圈鍊錶結構來簡化這些操作。迴圈鍊錶結構包含了從結構中的最後乙個節點返回到第乙個節點的鏈結。在這個實現中,至少總是有乙個節點。這個節點也就是啞頭節...