Redis學習筆記--常用命令

来源:http://www.cnblogs.com/susufufu/archive/2017/11/17/7854282.html
-Advertisement-
Play Games

以下為本人學習Redis的備忘錄,記錄了大部分常用命令 1.客戶端連接redis服務端: 啟動Redis服務端 redis-server /yourpath/redis.conf 啟動Redis命令行客戶端 建立長連接:redis-cli -h 127.0.0.1 -p 6379 若省略參數則將使用 ...


以下為本人學習Redis的備忘錄,記錄了大部分常用命令

1.客戶端連接redis服務端:

  • ===啟動Redis服務端
  • redis-server /yourpath/redis.conf
  • ===啟動Redis命令行客戶端
  • 建立長連接:redis-cli -h 127.0.0.1 -p 6379
  • 若省略參數則將使用預設值連接伺服器:redis-cli
  • 如果在後面直接跟其它命令,則為臨時連接,返回後即關閉:redis-cli get keyname
  • 關閉服務端:redis-cli shutdown (可選參數:nosave、save)

2.全局命令(按TAB鍵可自動補齊命令,多次按TAB可切換)所有命令名不區分大小寫

  • keys * 遍歷並獲得所有key(可指定匹配模式字元串),含大量key時不要使用
  • dbsize 返回鍵總數變數的值
  • exists key 檢查key是否存在,存在返回1,否則返回0
  • del key [key …] 刪除任意值類型的key,可一次性刪除多個,返回刪除個數
  • ttl key 查看key的過期時間,返回>=0表示過期時間,返回-1表示未設置,返回-2表示不存在的key
  • type key 返回key的結構類型,不存在返回none
  • object encoding key 返回key的值的內部編碼類型
  • SELECT dbindex 選擇當前Redis實例中指定編號的資料庫(不建議使用多資料庫,因為Redis為單線程模型,多資料庫將使用的是同一個CPU,應該使用多個Redis實例),Redis的分散式實現Redis Cluster只允許使用0號資料庫

  •  FLUSHDB 清除當前資料庫(鍵值對多時,會阻塞,且是危險的命令,可用rename-command配置來規避該危險)

  • FLUSHALL 清除所有資料庫

  • ===
  • get key 讀取key對應的value
  • mget key [key …] 批量讀取
  • mset key value [key value ...] 批量添加、更新
  • set key value [EX seconds] [PX milliseconds] [NX|XX] 添加、更新key value,EX、PX表示過期時間,NX表示只添加未存在的key,XX表示只更新已存在的key,成功返回OK,失敗nil
  • setex key seconds value 添加、更新key value,並設置過期時間
  • setnx key value 只添加未存在的key value
  • ===
  • incr key 對key的值自增1,返回自增後的值(若key不存在,則先添加,然後自增),若值為非數字則返回錯誤
  • incrby key increment 自增指定數值,increment可以是負數
  • incrbyfloat key increment 自增指定浮點數值,increment可以是負數(對於浮點數的value,只能用該命令)
  • decr key 自減
  • decrby key increment 自減指定數值,increment可以是負數
  • ===
  • setbit key offset value
  • setrange key offset value 把字元串索引offset處字元替換為指定value
  • getrange key start end 獲取指定索引區域的字元
  • append key value 向字元串尾部追加值,返回追加後的字元串長度
  • strlen key 返回字元串長度
  • getset key value 返回舊值,並設置新值
  • ===
  • RENAME key newkey 重命名鍵,若newkey已存在,則會被覆蓋
  • RENAMENX key newkey 只在newkey不存在時,重命名才會成功,否則返回0
  • RANDOMKEY 返回一個隨機的key
  • ===鍵過期設置
    • 設置過期時間命令在redis內部最終都使用的是PEXPIREAT
    • Redis不支持二級數據結構內部元素的過期功能
    • SET key命令預設會清除過期時間!
    • SETEX key seconds value 是原子執行的,相當於set+expire組合,可減少一次網路請求
  • EXPIRE key seconds 多少秒後過期,過期的key會被自動刪除
  • PEXPIRE key milliseconds
  • EXPIREAT key timestamp 到達指定時間戳時過期(單位是秒)
  • PEXPIREAT key milliseconds-timestamp
  • TTL key 查看key的剩餘過期時間(秒)
  • PTTL key 毫秒
  • PERSIST key 清除過期時間

3.遷移鍵

在源Redis實例的客戶端上執行MIGRATE命令即可遷移,該命令是原子性的(組合了dump、restore、del命令),直接在源Redis實例和目標Redis實例直接傳輸,傳輸完成返回OK時,表示成功遷移,此時源Redis會根據MIGRATE指定的命令選項決定是否刪除自身對應的key

MIGRATE host port key|”” destination-db timeout [COPY] [REPLACE] [KEYS key[key …]]

如:MIGRATE 127.0.0.1 6380 "" 0 1000 copy keys 002 005 z2 set1

  • host port 目標Redis實例地址
  • key|””遷移單個key時就指定該key,多個key時用””
  • destination-db 目標Redis實例資料庫編號
  • timeout 執行遷移的過期時間(毫秒)
  • [COPY] 遷移後保留源key
  • [REPLACE] 不管目標Redis實例是否已存在遷移的key,都進行遷移並覆蓋目標key的value
  • [KEYS key[key …]] 指定要遷移的多個鍵

其它遷移鍵的方式(不建議使用)

move key db 在同一個Redis實例內部的不同資料庫之間遷移數據(僅為了相容舊版)

dump key 和 restore key ttl value 在不同Redis實例之間遷移數據(並非原子性的)

 

4.遍歷鍵

  • ===遍歷鍵的方式1:一次性全量遍歷
  • keys pattern 遍歷所有鍵,返回滿足pattern匹配模式的key(若存在大量鍵,不要使用,阻塞嚴重,可在從節點上執行,這樣就只阻塞從節點,但會影響主從複製)
    • * 代表匹配任意字元
    • ? 代表匹配一個字元
    • [] 代表匹配指定字元列表之一,如[1,3]匹配1或3,[1-10]匹配1到10的任意數字
    • \x 轉義*、?等
  • ===遍歷鍵的方式2:漸進式遍歷SCAN,每次SCAN只掃描一部分鍵,解決了keys的阻塞問題,每次遍歷的時間複雜度O(1),但一般需要多次scan才能達到目的
  • SCAN cursor [MATCH pattern] [COUNT count] 返回當前游標值和遍歷到的所有key
    • cursor 游標,當前遍歷起始點,第一次從0開始,每次遍歷完都會返回當前游標值,便於下一次遍歷,返回0時表示遍歷結束
    • [MATCH pattern] 匹配模式,和keys的pattern一樣
    • [COUNT count] 指定遍歷多少個key,預設為10
    • 註意:SCAN的時候,可能添加、刪除、修改了一些鍵,所以SCAN可能會遍歷不到新的鍵,會遍歷到重覆的鍵
  • HSCAN key cursor [MATCH pattern] [COUNT count] 針對hash的漸進式遍歷
  • SSCAN key cursor [MATCH pattern] [COUNT count] 針對set的漸進式遍歷
  • ZSCAN key cursor [MATCH pattern] [COUNT count] 針對zset的漸進式遍歷 

5.hash相關命令

  • HSET key field value
  • HSETNX key field value
  • HDEL key field [field ...]
  • HEXISTS key field
  • HINCRBY key field increment
  • HINCRBYFLOAT key field increment
  • HKEYS key 獲取所有欄位名
  • HVALS key 獲取所有欄位值
  • HLEN key 獲取欄位總數
  • HSTRLEN key field 獲取欄位值得長度
  • HGET key field
  • HGETALL key 獲取所有(欄位+值)對,應該少用該命令,用HMGET、HSCAN代替
  • HMGET key field [field ...]
  • HMSET key field value [field value ...] 
  • HSCAN key cursor [MATCH pattern] [COUNT count]

6.list列表相關命令(list是有序的、元素可索引訪問、元素可重覆)

  • LPUSH key value [value ...] 左邊插入
  • LPUSHX key value 
  • LPOP key 左邊刪除
  • ===
  • RPUSH key value [value ...] 右邊插入
  • RPUSHX key value
  • RPOP key 右邊刪除
  • RPOPLPUSH source destination
  • ===
  • LINSERT key BEFORE|AFTER pivot value 在pivot的前面、後面插入value
  • LRANGE key start stop 獲取指定索引範圍內的元素(含stop,支持反向索引,0 -1表示返回所有)
  • LSET key index value 修改指定索引處的元素
  • LTRIM key start stop 裁剪列表,只保留start到stop之間的元素(含stop),清空列表:ltrim list 0 0,然後lpop list
  • LINDEX key index 返回指定索引處的value
  • LLEN key 獲取列表長度
  • LREM key count value 刪除指定個數的值為value的元素,count=0表示刪除所有,count>0表示從左到右刪除count個元素,,count<0表示從右到左刪除count個元素
  • BLPOP key [key ...] timeout 阻塞等待timeout秒後,刪除並返回最左邊的元素
    • 當列表為空時:若timeout=0,則會一直阻塞直到有元素插入時才返回,若timeout>0,則時間到後返回nil
    • 當列表不為空時:若timeout=0,則立即返回,若timeout>0,則時間到後返回
    • 如果指定了多個key,則遍歷這些key,只操作第一個有值得key,如 BLPOP list list2 list5 0
  • BRPOP key [key ...] timeout
  • BRPOPLPUSH source destination timeout
  • ===
  • 列表的應用:
    • 棧:lpush + lpop
    • 隊列:lpush + rpop
    • 有限集合:lpush + ltrim
    • 消息隊列:lpush + brpop 

5.無序集合set相關命令(set是無序的、元素不可索引訪問、元素不可重覆)

  • SADD key member [member ...] 添加元素,返回成功添加個數
  • SREM key member [member ...] 刪除元素,返回成功刪除個數
  • SCARD key 返回元素個數
  • SMEMBERS key 返回所有元素
  • SISMEMBER key member 判斷元素是否存在
  • SPOP key [count] 隨機彈出1個元素(刪除)
  • SRANDMEMBER key [count] 隨機獲取指定個數的元素,不指定個數則為1個
  • SMOVE source destination member 把元素member從source移動到destination中
  • ===
  • SINTER key [key ...] 取交集
  • SINTERSTORE destination key [key ...] 取交集,把結構存到destination中
  • SUNION key [key ...] 取並集
  • SUNIONSTORE destination key [key ...]
  • SDIFF key [key ...] 取差集
  • SDIFFSTORE destination key [key ...]
  • ===
  • SSCAN key cursor [MATCH pattern] [COUNT count]

6.有序集合zset的相關命令

zset按元素的score排序的、元素不可索引訪問、元素不可重覆,但元素的score可重覆;
其中的min、max支持開區間“(”和閉區間“[”,而-inf、+inf分別代表無限小、無限大;

  • ZADD key [NX|XX] [CH] [INCR] score member [score member ...] 添加、更新
  • ZCARD key 返回成員總數
  • ZSCORE key member 返回指定成員的score
  • ZCOUNT key min max 返回指定score範圍內成員個數
  • ZLEXCOUNT key min max 返回指定字典區間內成員數量
  • ZINCRBY key increment member 增加指定成員的score
  • ===
  • ZRANK key member 返回成員的排名
  • ZREVRANK key member
  • ===
  • ZRANGE key start stop [WITHSCORES] 返回指定排名範圍內的成員
  • ZREVRANGE key start stop [WITHSCORES]
  • ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] 返回指定score範圍內的成員
  • ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] 
  • ZRANGEBYLEX key min max [LIMIT offset count] 其中的min、max可以為-、+分別代表無限小、無限大
  • ZREVRANGEBYLEX key max min [LIMIT offset count]  返回指定字典區間內成員
  • ===
  • ZREM key member [member ...] 刪除指定成員
  • ZREMRANGEBYLEX key min max 刪除指定字典區間內成員
  • ZREMRANGEBYRANK key start stop 刪除指定排名區間內成員
  • ZREMRANGEBYSCORE key min max 刪除指定score區間內成員
  • ===
  • ZSCAN key cursor [MATCH pattern] [COUNT count]
  • ===
  • ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight[weight …]] [aggregate sum|min|max] 取交集,把結果保存到destination,numkeys做交集計算鍵的個數,WEIGHTS表示每個鍵的權重(預設為1,計算時會把每個成員的score乘以權重),aggregate預設為sum(計算交集後,同名成員的score是如何取值的,求和sum、取小min、取大max)
  • ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight[weight …]] [aggregate sum|min|max] 取並集

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 本文以一個小例子簡單介紹微信小程式開發的相關內容,希望共同學習進步。 ...
  • 今天寫登錄註冊頁面,點擊登錄頁面的“註冊”按鈕後軟體突然崩潰,直接閃退,因為是新手,只能去網上搜。雖然網上解決方法眾多,但也沒找到可行的。想起來可以看Logcat,馬上重新運行應用,查看崩潰時的日誌,發現日誌比較多,還都不認識,只好又複製日誌上網搜索,無果。突發奇想,把註冊頁面有關Toolbar的內 ...
  • 1.ViewController .m 頭部代理 代理方法 2.KKViewController(目標ViewController) 新建一個KKViewController .h .m 頭部代理 手勢代理方法 效果圖 ...
  • RecyclerView做的一個輪播效果,適配器有視圖緩存,避免了一些記憶體問題 首先是藉助 PagerSnapHelper 讓RecyclerView每次只滑動一個,然後添加一個指示器,這裡指示器是動態生成的,自己做了個簡單的view 很簡單的一個效果,直接上代碼 public class Imag ...
  • iOS7 topLayoutGuide/bottomLayoutGuide 創建一個叫做LayoutGuideStudy的工程,我們打開看一下Main.storyboard: storyboard-top_bottom_layoutGuide.png 可以看到View Controller下麵出現t ...
  • 隨著社會經濟的發展,車輛已經成了城鎮居民的必需品,而查駕駛證違章記錄、繳納違章罰款,也已經成了人們的生活常態了。而移動互聯的飛速發展,讓這些以前需要跑銀行、跑交警大隊的事項,如今通過手機APP就能解決了。但是手機APP也有讓人困擾的地方,那就是手動輸入駕駛證信息非常繁瑣,且操作容易出現錯誤,不過當手 ...
  • 效果圖 一、環境設置 1.開發環境:Xocode 7.3.1 2.模擬器環境:iOS 9.3 3.iOS 9 之後不能直接使用 HTTP 進行請求,需要在 Info.plist 新增一段用於控制 ATS 的配置: 也即: 註: bitcode 是 xcode 7 之後新增的配置選項,預設為 YES, ...
  • CK2137-Android Studio-2017最新版p2p金融項目實戰 隨筆背景:在很多時候,很多入門不久的朋友都會問我:我是從其他語言轉到程式開發的,有沒有一些基礎性的資料給我們學習學習呢,你的框架感覺一下太大了,希望有個循序漸進的教程或者視頻來學習就好了。對於學習有困難不知道如何提升自己可 ...
一周排行
    -Advertisement-
    Play Games
  • GoF之工廠模式 @目錄GoF之工廠模式每博一文案1. 簡單說明“23種設計模式”1.2 介紹工廠模式的三種形態1.3 簡單工廠模式(靜態工廠模式)1.3.1 簡單工廠模式的優缺點:1.4 工廠方法模式1.4.1 工廠方法模式的優缺點:1.5 抽象工廠模式1.6 抽象工廠模式的優缺點:2. 總結:3 ...
  • 新改進提供的Taurus Rpc 功能,可以簡化微服務間的調用,同時可以不用再手動輸出模塊名稱,或調用路徑,包括負載均衡,這一切,由框架實現並提供了。新的Taurus Rpc 功能,將使得服務間的調用,更加輕鬆、簡約、高效。 ...
  • 本章將和大家分享ES的數據同步方案和ES集群相關知識。廢話不多說,下麵我們直接進入主題。 一、ES數據同步 1、數據同步問題 Elasticsearch中的酒店數據來自於mysql資料庫,因此mysql數據發生改變時,Elasticsearch也必須跟著改變,這個就是Elasticsearch與my ...
  • 引言 在我們之前的文章中介紹過使用Bogus生成模擬測試數據,今天來講解一下功能更加強大自動生成測試數據的工具的庫"AutoFixture"。 什麼是AutoFixture? AutoFixture 是一個針對 .NET 的開源庫,旨在最大程度地減少單元測試中的“安排(Arrange)”階段,以提高 ...
  • 經過前面幾個部分學習,相信學過的同學已經能夠掌握 .NET Emit 這種中間語言,並能使得它來編寫一些應用,以提高程式的性能。隨著 IL 指令篇的結束,本系列也已經接近尾聲,在這接近結束的最後,會提供幾個可供直接使用的示例,以供大伙分析或使用在項目中。 ...
  • 當從不同來源導入Excel數據時,可能存在重覆的記錄。為了確保數據的準確性,通常需要刪除這些重覆的行。手動查找並刪除可能會非常耗費時間,而通過編程腳本則可以實現在短時間內處理大量數據。本文將提供一個使用C# 快速查找並刪除Excel重覆項的免費解決方案。 以下是實現步驟: 1. 首先安裝免費.NET ...
  • C++ 異常處理 C++ 異常處理機制允許程式在運行時處理錯誤或意外情況。它提供了捕獲和處理錯誤的一種結構化方式,使程式更加健壯和可靠。 異常處理的基本概念: 異常: 程式在運行時發生的錯誤或意外情況。 拋出異常: 使用 throw 關鍵字將異常傳遞給調用堆棧。 捕獲異常: 使用 try-catch ...
  • 優秀且經驗豐富的Java開發人員的特征之一是對API的廣泛瞭解,包括JDK和第三方庫。 我花了很多時間來學習API,尤其是在閱讀了Effective Java 3rd Edition之後 ,Joshua Bloch建議在Java 3rd Edition中使用現有的API進行開發,而不是為常見的東西編 ...
  • 框架 · 使用laravel框架,原因:tp的框架路由和orm沒有laravel好用 · 使用強制路由,方便介面多時,分多版本,分文件夾等操作 介面 · 介面開發註意欄位類型,欄位是int,查詢成功失敗都要返回int(對接java等強類型語言方便) · 查詢介面用GET、其他用POST 代碼 · 所 ...
  • 正文 下午找企業的人去鎮上做貸後。 車上聽同事跟那個司機對罵,火星子都快出來了。司機跟那同事更熟一些,連我在內一共就三個人,同事那一手指桑罵槐給我都聽愣了。司機也是老社會人了,馬上聽出來了,為那個無辜的企業經辦人辯護,實際上是為自己辯護。 “這個事情你不能怪企業。”“但他們總不能讓銀行的人全權負責, ...