go redis使用之List列表

2021-10-07 15:21:19 字數 4896 閱讀 1844

->go-redis string字串操作詳解?

->go-redis hash雜湊操作詳解?

->go-redis set集合操作詳解?

->go-redis zset有序集合操作詳解?

基本的資料型別:list 列表

在redis裡,可以把list作為棧、佇列、阻塞佇列

在redis裡,所有的list命令都是l開頭的~

func

getredisclient()

*redis.client)}

// redislisttest list(列表操作)

func

redislisttest

(cli *redis.client)

// 將乙個切片新增到列表的頭部

cli.

lpush

("mylist"

,s1)

// 獲取list的長度

fmt.

println

(cli.

llen

("mylist").

val())

//6// 獲取list中的元素:起始索引~結束索引,當結束索引 > llen(list)或=-1時,取出全部資料

// 遍歷list,獲取每乙個元素

// 注意取出來的順序!!!

// 注意取出來的順序!!!

// 注意取出來的順序!!!

s2:=cli.

lrange

("mylist",0

,-1)

.val()

for_

, i :=

range s2

fmt.

println

(cli.

lrange

("mylist",0

,3).

val())

// [val4 val3 val2 val1]

fmt.

println

(cli.

lrange

("mylist",0

,100).

val())

// [val4 val3 val2 val1 val99 val100]

// 移除list的第乙個元素(頭元素)

cli.

lpop

("mylist"

) fmt.

println

(cli.

lrange

("mylist",0

,-1)

.val()

)// [val3 val2 val1 val99 val100]

// 移除list的最後乙個元素(尾元素)

cli.

rpop

("mylist"

) fmt.

println

(cli.

lrange

("mylist",0

,-1)

.val()

)// [val3 val2 val1 val99]

// 移除list 指定個數的指定值

cli.

lpush

("mylist"

,"val3"

,"val3"

,"val3"

,"val2"

) fmt.

println

(cli.

lrange

("mylist",0

,-1)

.val()

) fmt.

println

(cli.

llen

("mylist"))

//llen mylist: 8

// 此時的mylist: [val2 val3 val3 val3 val3 val2 val1 val99]

//移除list中的1個val3

cli.

lrem

("mylist",1

,"val3"

) fmt.

println

(cli.

lrange

("mylist",0

,-1)

.val()

)// [val2 val3 val3 val3 val2 val1 val99]

// 移除剩下的3個值:val3(當移除的個數count大於該值的實際個數時,全部移除)

cli.

lrem

("mylist"

,100

,"val3"

) fmt.

println

(cli.

lrange

("mylist",0

,-1)

.val()

)// [val2 val2 val1 val99]

//擷取list(通過下標,前閉後閉,會修改原資料)

cli.

ltrim

("mylist",1

,2) fmt.

println

(cli.

lrange

("mylist",0

,-1)

.val()

)// [val2 val1]

// 擷取的結束下標大於list長度或者-1時,一直擷取到末尾

cli.

ltrim

("mylist",1

,100

) fmt.

println

(cli.

lrange

("mylist",0

,-1)

.val()

)// [val1]

cli.

rpush

("mylist"

,"val2"

,"val3"

)//檢查資料庫是否存在此list,1:存在 0:不存在

fmt.

println

(cli.

exists

("mylist2").

val())

// 0

//移除list的最後乙個元素,並移動到另乙個列表(若沒有此列表則建立)

cli.

rpoplpush

("mylist"

,"mylist2"

) fmt.

printf

("mylist=%v\n"

,cli.

lrange

("mylist",0

,-1)

.val()

)// mylist=[val1 val2]

fmt.

printf

("mylist2=%v\n"

,cli.

lrange

("mylist2",0

,-1)

.val()

)// mylist2=[val3]

// 通過下標更新list的值

cli.

lset

("mylist",1

,"val200"

) fmt.

println

(cli.

lrange

("mylist",0

,-1)

.val()

)//[val1 val200]

// 更新的下標》list的長度會觸發panic

//err:=cli.lset("mylist",2,"val3").err()

//if err != nil

// 當前list不存在,會觸發panic

//err:=cli.lset("mylist3",1,"qqqqq").err()

//if err != nil

// 在列表指定的值之前或者之後插入值

cli.

linsertbefore

("mylist"

,"val1"

,"qqq"

) fmt.

println

(cli.

lrange

("mylist",0

,-1)

.val()

)// [qqq val1 val200]

cli.

linsertafter

("mylist"

,"qqq"

,"hello~"

) fmt.

println

(cli.

lrange

("mylist",0

,-1)

.val()

)// [qqq hello~ val1 val200]

// 當標誌位不存在時,插入值失敗

cli.

linsertafter

("mylist"

,"gogo"

,"golang").

err(

) fmt.

println

(cli.

lrange

("mylist",0

,-1)

.val()

)// [qqq hello~ val1 val200]

// 當刪除鍊錶內的所有值時,空鍊錶也就不存在了

for cli.

llen

("mylist").

val(

)>

0// 檢視當前資料庫所有key

fmt.

println

(cli.

keys

("*").

val())

// [mylist2]

}func

main()

小結

go redis使用之Hash字典

go redis list列表使用詳解 go redis string字串使用詳解 go redis set集合使用詳解 go redis zset使用詳解 在redis中,hash雜湊被稱為字典 dictionary redis的字典使用雜湊表作為底層實現 hash更適合用來儲存物件,例如 use...

go redis使用之String字串

go redis list列表使用詳解 go redis hash使用詳解 go redis set集合使用詳解 go redis zset有序集合使用詳解 基本型別 字串操作 單個字串最大512m func getredisclient redis.client func redistest cl...

容器list使用之erase

程式裡面使用了list容器,其中用到了erase 函式。花了點時間,搞清楚了erase 函式的機理。常用的刪除容器中元素的方法是如下 方法1 list int list list int iterator iter for iter list.begin iter list.end else 也可以...