目錄
Redis支持五種數據類型:String, Hash, List, Set, ZSet,這個系列介紹一下如何使用這些數據類型,本篇介紹使用命令行模式以及python客戶端對redis進行操作,實際項目的過程中也大多是一模一樣的用法。
相關內容:
Redis系列(一)、CentOS7下安裝Redis6.0.3穩定版
------------------------Redis列表類型----------------------
介紹
Redis列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部(左邊)或者尾部(右邊)一個列表最多可以包含 2^32 - 1 個元素 (4294967295, 每個列表超過40億個元素)。
因此也有項目直接使用redis做消息隊列,我們之前介紹filebeat+logstash+redis的時候也使用redis存儲filebeat採集的日誌進redis的列表類型中,由logstash從其中消費,傳送門。
命令行模式
進入命令行模式:
redis-cli -a password_value
redis-cli -a password_value --raw
--raw 避免中文顯示亂碼
help
使用下面的命令查看手冊:
help @list
增
lpush
從左邊插入元素,從左邊依次追加進棧,先進後出,後進先出:
LPUSH key element [element ...]
lpush mylist 'wyk'
lpush mylist '28' 'csdn' '[email protected]'
rpush
從右邊插入元素,從右邊依次追加進隊列,先進先出,後進後出:
RPUSH key element [element ...]
rpush mylist2 'wyk'
rpush mylist2 '28' 'csdn' '[email protected]'
lpushx
與sting類型中的nx類似,只有當list存在時纔會從左邊依次追加元素:
LPUSHX key element [element ...]
rpushx
與lpushx類似,只有當list存在時纔會從右邊依次追加元素:
RPUSHX key element [element ...]
linsert
從list中指定的元素的前/後 插入一個新元素:
LINSERT key BEFORE|AFTER pivot element
刪
lrem
從列表左側開始移除count個指定的元素,返回刪除的個數:
LREM key count element
lrem mylist2 1 wyk
lrem mylist2 2 new_val
lrem mylist2 3 new_val2
改
lset
根據下標修改元素內容,下標從左邊算起,以0開始:
LSET key index element
ltrim
將原列表截取爲從下標start到下標stop閉區間的列表,即原列表變爲一個第start+1個到第stop+1個元素的列表:
LTRIM key start stop
查
llen
查看列表中元素的個數:
LLEN key
lrange
根據起止下標查詢列表元素,負數表示從後往前,跟python裏一樣:
LRANGE key start stop
lrange key 0 -1 #表示查看全部元素
lrange key -1 -1 #表示查看最右邊的元素
lindex
根據指定的index下標查看列表中的元素,下標從0開始:
LINDEX key index
lpop
從左邊消費列表中的元素,消費完之後從列表中刪除:
LPOP key
rpop
從右邊消費列表中的元素,消費完之後從列表中刪除:
RPOP key
rpoplpush
消費列表A的最右邊的元素返回,然後追加到列表B的最左邊:
RPOPLPUSH source destination
RPOPLPUSH List_A List_B
blpop
從列表中左側查詢元素,返回列表的key和左側第一個元素,若所有查詢的列表中都沒有元素,則會阻塞等待至設置的timeout秒之後返回空,若在這期間,這些列表新增了元素,則會立刻消費並返回該元素:
BLPOP key [key ...] timeout
brpop
與blpop類似,區別是brpop從右側消費:
BRPOP key [key ...] timeout
brpoplpush
結合brpop和lpush,阻塞消費並將消費到的元素添加至target列表的最左側:
BRPOPLPUSH source destination timeout
應用
棧:先進後出
lpush + lpop
隊列:先進先出
lpush + rpop
有限集合
lpush + ltrim
消息隊列
lpush + brpop
Python客戶端與命令行函數基本上完全一致,篇幅太長因此不再過多的展示。
希望本文對你有幫助,請點個贊鼓勵一下作者吧~ 謝謝!