原文:https://blog.csdn.net/Lzy410992/article/details/116094703
伺服器相關命令
ping : 檢測連線是否存活
echo: 在命令列列印一些內容
quit、exit: 退出客戶端
shutdown: 退出伺服器端
info: 返回redis相關資訊
config get dir/* 實時傳遞接收的請求
showlog: 顯示慢查詢
select n: 切換到資料庫n,redis預設有16個資料庫(DB 0~DB 15),預設使用的第0個
dbsize: 檢視當前資料庫大小
move key n: 不同資料庫之間資料是不能互通的,move移動鍵到指定資料庫
flushdb: 清空當前資料庫中的鍵值對。
flushall: 清空所有資料庫的鍵值對。
key相關命令
在redis中無論什麼資料型別,在資料庫中都是以key-value形式儲存,透過進行對Redis-key的操作,來完成對資料庫中資料的操作。
常用命令:
keys * :檢視當前資料庫中所有的key
dbsize: 鍵總數
exists key: 檢查鍵是否存在
del key [key …]: 刪除鍵
expire key seconds: 鍵過期
ttl key: 獲取鍵的有效時長
persist key: 移除鍵的過期時間
type key: 鍵的資料結構型別
randomkey: 隨機返回資料庫中一個鍵
rename key1 key2 : 重新命名
renamex key1 key2 : 當key2不存在時,key1重新命名
程式碼示例:
五大資料型別
Redis是一個開源(BSD許可),記憶體儲存的資料結構伺服器,可用作資料庫,快取記憶體和訊息佇列代理。其透過提供多種鍵值資料型別來適應不同場景下的儲存需求,目前為止Redis支援的鍵值資料型別如下:
字串型別: string
雜湊型別: hash
列表型別: list
集合型別: set
有序集合型別: sortedset(zset)
String(字串)
字串型別是Redis最基礎的資料結構,其它的幾種資料結構都是在字串型別基礎上構建的,字串的值可以是:字串、數字、二進位制,但其值最大不能超過512M。
使用場景: 快取、計數器、物件儲存快取(共享session)、限速
常用命令:
set key value: 設定一個key的value值
setnx key value: 僅當key不存在時進行set
setex key seconds value: set 鍵值對並設定過期時間
mset key value [key value …]: 設定多個key value
msetnx key1 value1 [key2 value2…]: 批次設定鍵值對,僅當引數中所有的key都不存在時執行,原子性操作,一起成功,一起失敗
get key: 返回key的value
mget key [key …] : 批次獲取多個key儲存的值
exists key [key …]: 查詢一個key是否存在
decr/incr key: 將指定key的value數值進行+1/-1(僅對於數字)
incrby/decrbyB key n: 按指定的步長對數值進行加減
incrbyfloat key n: 為數值加上浮點型數值
append key value: 向指定的key的value後追加字串
strlen key: 返回key的string型別value的長度。
getset key value: 設定一個key的value,並獲取設定前的值,如果不存在則返回null
setrange key offset value: 設定指定位置的字元
getrange key start end: 獲取儲存在key上的值的一個子字串
程式碼示例:
List(列表)
Redis列表是簡單的字串列表,按照插入順序排序。你可以新增一個元素到列表的頭部(左邊)或者尾部(右邊),也可以獲取指定範圍指定下標的元素等。一個列表最多可以包含 232 - 1 個元素 (4294967295, 每個列表超過40億個元素)。
兩個特點:
1.列表中的元素是有序的,可以透過索引下標獲取某個元素霍某個某個範圍內的元素列表
2.列表中的元素可以是重複的
使用場景: 訊息佇列、棧、文章列表等。
常用指令:
新增操作
lpush/rpush key value1[value2…]: 從左邊/右邊向列表中PUSH值(一個或者多個)
lpushx/rpushx key value: 向已存在的列名中push值(一個或者多個),list不存在 lpushx失敗
linsert key before|after pivot value: 在指定列表元素的前/後 插入value
查詢操作
lindex key index: 透過索引獲取列表元素
lrange key start end: 獲取list 起止元素 (索引從左往右 遞增)
llen key: 檢視列表長度
刪除操作
lpop/rpop key: 從最左邊/最右邊移除值 並返回
lrem key count value: count >0:從頭部開始搜尋 然後刪除指定的value 至多刪除count個 count < 0:從尾部開始搜尋… count = 0:刪除列表中所有的指定value。
ltrim key start end: 透過下標擷取指定範圍內的列表
rpoplpush source destination: 將列表的尾部(右)最後一個值彈出,並返回,然後加到另一個列表的頭部
修改操作
lset key index value: 透過索引為元素設值
阻塞操作
blpop/brpop key1[key2] timout: 移出並獲取列表的第一個/最後一個元素,如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。
brpoplpush source destination timeout: 和rpoplpush功能相同,如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素為止。
程式碼示例:
Set(集合)
Redis的Set是string型別的無序集合,我們不能透過索引獲取元素。集合成員是唯一的,這就意味著集合中不能出現重複的資料。Redis中集合是透過雜湊表實現的,所以新增,刪除,查詢的複雜度都是O(1)。集合中最大的成員數為 232 - 1 (4294967295, 每個集合可儲存40多億個成員)。
應用場景: 標籤(tag)
常用命令:
集合內操作
sadd key member1[member2…]: 向集合中無序增加一個/多個成員
srem key member1[member2…]: 移除集合中一個/多個成員
scard key: 獲取集合的成員數
smembers key: 返回集合中所有的成員
sismember key member: 查詢member元素是否是集合的成員,若存在返回1,不存在返回0
srandmember key [count]: 隨機返回集合中count個成員,count預設值為1
spop key [count]: 隨機移除並返回集合中count個成員,count預設值為1
集合間操作
sinter key1 [key2…]: 返回所有集合的交集
sinterstore destination key1[key2…]: 在SINTER的基礎上,儲存結果到集合中。覆蓋
sunion key1 [key2…]: 返回所有集合的並集
sunionstore destination key1 [key2…]: 在SUNION的基礎上,儲存結果到及和張。覆蓋
sdiff key1[key2…]: 返回所有集合的差集 key1- key2 - …
sdiffstore destination key1[key2…]: 在SDIFF的基礎上,將結果儲存到集合中。覆蓋
smove source destination member: 將source集合的成員member移動到destination集合
sscan key [MATCH pattern] [COUNT count]: 在大量資料環境下,使用此命令遍歷集合中元素,每次遍歷部分
程式碼示例:
Hash(雜湊)
幾乎所有的程式語言都提供了雜湊(hash)結構,Redis中 hash 是一個string型別的field和value的對映表value={{field1,value1},{field2,value2}…},可以將一個Hash表作為一個物件進行儲存,表中存放物件的資訊。
應用場景: 使用者資訊快取
常用命令:
hset key field value: 將雜湊表 key 中的欄位 field 的值設為 value。重複設定同一個field會覆蓋,返回0
hmset key field1 value1 [field2 value2…]: 同時將多個 field-value (域-值)對設定到雜湊表 key 中。
hsetnx key field value: 只有在欄位 field不存在時,設定雜湊表欄位的值。
hget key field value: 獲取儲存在雜湊表中指定欄位的值
hmget key field1 [field2…]: 獲取所有給定欄位的值
hexists key field: 檢視雜湊表 key 中,指定的欄位是否存在。
hdel key field1 [field2…]: 刪除雜湊表key中一個/多個field欄位
hlen key: 獲取雜湊表中欄位的數量
hkeys key: 獲取所有欄位field
hvals key: 獲取雜湊表中所有值value
hgetall key: 獲取在雜湊表key 的所有欄位和值
hincrby key field n: 為雜湊表 key 中的指定欄位的整數值加上增量n,並返回增量後結果 一樣只適用於整數型欄位
hincrbyfloat key field n: 為雜湊表 key 中的指定欄位的浮點數值加上增量 n。
hscan key cursor [MATCH pattern] [COUNT count]: 迭代雜湊表中的鍵值對。
程式碼示例:
Zset(有序集合)
在有序集合中保留了不能有重複成員的特性,但其中的成員是可以排序的,每一個元素都會關聯一個double型別的分數(score)作為排序依據,score相同時按字典順序排序。redis正是透過分數來為集合中的成員進行從小到大的排序。
應用場景: 排行榜系統,成績單,工資表
常用命令:
集合內
zadd key score member1 [score2 member2]: 向有序集合新增一個或多個成員,或者更新已存在成員的分數
zcard key: 獲取有序集合的成員數
zscore key member: 返回有序集中,成員的分數值
zcount key min max: 計算在有序集合中指定區間score的成員數
zlexcount key min max: 在有序集合中計算指定字典區間內成員數量
zincrby key n member: 有序集合中對指定成員的分數加上增量 n
zscan key cursor [MATCH pattern] [COUNT count]: 迭代有序集合中的元素(包括元素成員和元素分值)
範圍查詢
zrank key member: 返回有序集合中指定成員的索引
zrevrank key member: 返回有序集合中指定成員的索引,從大到小排序
zrange key start end: 透過索引區間返回有序集合成指定區間內的成員
zrevrange key start end: 透過索引區間返回有序集合成指定區間內的成員,分數從高到底
zrangebylex key min max: 透過字典區間返回有序集合的成員
zrevrangebylex key max min: 按字典順序倒序返回有序集合的成員
zrangebyscore key min max: 返回有序集中指定分數區間內的成員 -inf 和 +inf分別表示最小最大值,只支援開區間
zrevrangebyscore key max min: 返回有序集中指定分數區間內的成員,分數從高到低排序
刪除操作
zrem key member1 [member2…]: 移除有序集合中一個/多個成員
zremrangebylex key min max: 移除有序集合中給定的字典區間的所有成員
zremrangebyrank key start stop: 移除有序集合中給定的排名區間的所有成員
zremrangebyscore key min max: 移除有序集合中給定的分數區間的所有成員
集合間操作
zinterstore destination numkeyskey1 [key2 …]: 計算給定的一個或多個有序集的交集並將結果集儲存在新的有序集合 key 中,numkeys:表示參與運算的集合數,將score相加作為結果的score
zunionstore destination numkeys key1 [key2…]: 計算給定的一個或多個有序集的交集並將結果集儲存在新的有序集合 key 中
程式碼示例:
————————————————