redisAPI整理

来源:http://www.cnblogs.com/xuchenliang/archive/2017/05/11/6842831.html
-Advertisement-
Play Games

全局命令 1、查看所有鍵 keys * 2、鍵總數 dbsize 3、檢查鍵是否存在 exists key 4、刪除鍵 del key del key1 key2 key3 5、鍵過期 expire key seconds 大於0的整數表示剩餘過期時間;-1表示已過期;-2表示鍵不存在;ttl ke ...



全局命令
1、查看所有鍵 keys *
2、鍵總數 dbsize
3、檢查鍵是否存在 exists key
4、刪除鍵 del key del key1 key2 key3
5、鍵過期 expire key seconds 大於0的整數表示剩餘過期時間;-1表示已過期;-2表示鍵不存在;ttl key返回鍵剩餘時間

數據結構和內部編碼
1、查詢內部編碼 object encoding key

字元串
命令
常用命令
1、設置值
set key value[ex seconds] [px milliseconds] [nx|xx]
setex key seconds value
setnx key value
2、獲取值 get key
3、批量設置值 mset key value [key value]
4、批量獲取值 mget key [key ...]
5、計數
incr key
decr key
incrby key increment
decrby key decrement
incrbyfloat key increment
不常用命令
1、追加值 append key value
2、字元串長度 strlen key 每個中文字占用3個位元組
3、設置並返回原值 getset key value
4、設置指定位置的字元 setrange key offeset value
5、獲取部分字元串 getrange key start end

字元串內部編碼
1、int 8個位元組的長整型
2、embstr 小於等於39個位元組的字元串
3、raw 大於39個位元組的字元串

應用場景
1、緩存功能
2、計數
3、共用session
4、限速

哈希
命令
1、設置值 hset key field value 例:hset user:1 name tom
2、獲取值 hget key field 例:hget user:1 name
3、刪除field hdel key field 例:hdel user:1 name
4、計算field個數 hlen key
5、批量設置或獲取field-value hmget key field [field ...]
hmset key field value [field value ...]
6、判斷field是否存在 hexists key field
7、獲取所有field hkeys key
8、獲取所有key hvals key
9、獲取所有的field-value hgetall key
10、hincrby hincrbyfloat
11、計算value的字元串長度 hstrlen key field

內部編碼
1、ziplist field個數比較少且沒有大的value時
2、hashtable 當有value大於64位元組/field個數超過512

使用場景
1、使用hash類型緩存用戶信息
(1)原生字元串類型:每個屬性一個鍵
(2)序列化字元串類型:將用戶信息序列化後用一個鍵保存
Set user:1 serialize(userInfo)
(3)hash類型:每個用戶屬性使用一對field-value,但是只用一個鍵保存

列表
命令
添加操作
(1)從右邊插入元素
rpush key value [value ...]
Lrange 0 -1從左到右獲取列表所有元素
(2)從左邊插入元素
lpush key value[value ...]
(3)向某個元素前或後插入元素
linsert key before|after pivot value
例:linsert listkey before b java
查找
(1)獲取指定範圍內的元素列表
lrange key start end
(2)獲取列表指定索引下標的元素
lindex key index
(3)獲取列表長度
Llen key
刪除
(1)從列表左側彈出元素
(2)從列表右側彈出元素
(3)刪除指定元素
(4)按照索引範圍修剪列表
修改
修改指定索引下標的元素
lset key index newvalue
阻塞操作
blpop key [key ...] timeout
brpop key[key ...] timeout
timeout:阻塞時間(單位:秒)
(1)列表為空:如果timeout=3,那麼客戶端要等到3秒後返回,如果timeout=0,那麼客戶端一直阻塞等下去。
(2)列表不為空:客戶端立即返回。
註意:在使用brpop時,有兩點需要註意
1.如果是多個鍵,那麼brpop會從左到右遍歷鍵,一旦有一個鍵能彈出元素,客戶端立即返回。
2.如果多個客戶端對同一個鍵執行brpop,那麼最先執行brpop命令的客戶端可以獲取到彈出的值。
內部編碼:
(1)元素個數較少且沒有大元素時,內部編碼為ziplist
(2)元素個數超過512個,內部編碼變為linkedlist
(3)某個元素超過64位元組,內部編碼也會變為linkedlist

使用場景
1、消息隊列
2、文章列表

列表使用口訣:
lpush+lpop=Stack
Lpush+rpop=Queue
Lpush+ltrim=Capped Collection
Lpush+brpop=Message Queue

集合(無序,不重覆)
命令
集合內操作
(1)添加元素
sadd key element [element...]
(2)刪除元素
srem key element [element ...]
(3)計算元素個數
scard key
(4)判斷元素是否在集合中
sismember key element
(5)隨機從集合返回指定個數元素
srandmember key [count]
(6)從集合隨機彈出元素
spop key
(7)獲取所有元素
smember key
集合間操作
(1)求多個集合的交集
sinter key [key...]
(2)求多個集合的並集
sunion key [key...]
(3)求多個集合的差集
sdiff key [key...]
(4)將交集、並集、差集的結果保存
sinterstore destination key [key...]
sunionstore destination key[key...]
sdiffstore destination key[key...]
例:sinterstore user:1_2:inter user:1:follow user:2:follow
內部編碼
(1)當元素個數較少且都為整數時,內部編碼為intset
(2)當元素個數超過512個,內部編碼變為hashtable
(3)當元素個數不為整數時,內部編碼為hashtable
使用場景
1、給用戶添加標簽
2、給標簽添加用戶
3、刪除用戶下的標簽
4、刪除標簽下的用戶
5、計算用戶共同感興趣的標簽


有序集合(不重覆,有排序)
命令
集合內
(1)添加成員
zadd key score member [score member...]
例:zadd user:ranking 251 tom
nx:必須不存在,用於添加
xx:必須存在,用於更新
ch:返回此次操作後,有序集合元素和分數發生變化的個數
incr:對score做增加,相當於後面介紹的zincrby
(2)計算成員個數
zcard key
(3)計算某個成員的分數
zscore key member
(4)計算成員排名
zrank key member(從低到高)
zrevrank key member(從高到低)
(5)刪除成員
zrem key member [member...]
(6)增加成員的分數
zincrby key increment member
例:zincrby user:ranking 9 tom
(7)返回指定排名範圍的成員
zrange key start end [withscore]
zrevrange key start end [withscore]
(8)返回指定分數範圍的成員
zrangebyscore key min max [withscores] [limit offset count]
zrevrangebyscore key min max [withscores] [limit offset count]
例:zrangebyscore user:ranking 200 tinf withsore
(9)返回指定分數範圍成員個數
zcount key min max
(10)刪除指定排名內的升序元素
zremrangebyrank key start end
(11)刪除指定分數範圍的成員
zremrangebyscore key min max
集合間操作
(1)交集
zinterstore destination numkeys key [key...] [weights weight [weight...]] [aggregate sum|min|max]
參數說明:
destination:交集計算結果保存到這個鍵
numkeys:需要做交集計算鍵的個數
key [key...]:需要做交集計算的鍵
weights weight [weight...]:每個鍵的權重,在做交集計算時,每個鍵中的每個member會將自己分數乘以這個權重,每個鍵的權重預設是1
aggregate sum|min|max:計算成員交集後,分值可以按照sum、min、max做彙總,預設值是sum
例:
zinterstore user:ranking:1_inter_2 2 user:ranking:1 user:ranking:2
zinterstore user:ranking:1_inter_2 2 user:ranking:1 user:ranking:2 weight 1 0.5 aggregate max
(2)並集
zunionstore destination numkeys ke [key...] [weights weight [weight...]] aggregate sum|min|max
內部編碼
(1)當元素個數較少且每個元素較小時,內部編碼為skiplist
(2)當元素個數超過128個,內部編碼變為ziplist
(3)當某個元素大於64位元組時,內部編碼變為hashtable
使用場景
1、添加用戶贊數
2、取消用戶贊數
3、展示獲取贊數最多的十個用戶
4、展示用戶信息以及用戶分數

鍵管理
單個鍵管理
(1)鍵重命名
rename key newkey
renamenx只有newkey不存在時才被覆蓋
(2)隨機返回一個鍵
randomkey
(3)鍵過期
expire key seconds
expireat key timstamp
ttl/pttl用於查詢鍵剩餘過期時間,pttl精度更高,可以達到毫秒級

毫秒級過期方案:
pexpire key milliseconds:鍵在milliseconds毫秒後過期
pexpire key millseconds-timestamp 鍵在毫秒級時間戳timestamp後過期
註意:
 如果expire key的鍵不存在,返回結果為0
 如果過期時間為負值,鍵會立即被刪除,如del一樣
 persist命令可以將鍵的過期時間清除
 對於字元串類型間,執行set命令會去掉過期時間
 不支持二級數據結構
 setex命令作為set+expire的組合,不但是原子執行,同時減少了一次網路通訊的時間
(4)遷移鍵
 move
move key db
 dump+store
dump key
restore key ttl value
遷移過程如下:
1、在源Redis上執行dump
2、在目標Redis上執行restore
3、migrate(重要,需要深入研究)
遍歷鍵
(1)全量遍歷鍵
keys pattern
(2)漸進式遍歷
scan cursor [match pattern] [count number]
資料庫管理
(1)切換資料庫
select dbIndex
(2)flushdb/flushall


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

-Advertisement-
Play Games
更多相關文章
  • 各位可以按照順序逐條拍錯。 mysql啟動時報錯:Starting MySQL... ERROR! The server quit without updating PID file (/opt/mysql-master/data/mysql.pid) 的解決方法: 1、可能是/opt/mysql- ...
  • 當客戶伺服器不允許直接備份時,往往通過導出資料庫腳本的方式來部署-還原資料庫, 但是當資料庫導出腳本很大,用Microsoft SQL Server Management Studio執行腳本時,往往會遇到“記憶體不足”的提示。 解決辦法: 用微軟自帶的sqlcmd工具,可以導入執行。以SQL Ser ...
  • 一、基礎介紹 1、背景描述 目前我們的高可用DB的代理層採用的是360開源的Atlas,從上線以來,已穩定運行2個多月。無論是從性能上,還是穩定性上,相比其他開源組件(amoeba、cobar、MaxScale、MySQL-Proxy等),還是很出色的。 當初我們之所以選擇Atlas,主要看中它有以 ...
  • 交換分區的操作步驟如下:1. 創建分區表t1,假設有2個分區,P1,P2.2. 創建基表t11存放P1規則的數據。3. 創建基表t12 存放P2規則的數據。4. 用基表t11和分區表T1的P1分區交換。 把表t11的數據放到到P1分區5. 用基表t12 和分區表T1p2 分區交換。 把表t12的數據 ...
  • 1.MySQL多實例介紹 1.1.什麼是MySQL多實例 MySQL多實例就是在一臺機器上開啟多個不同的服務埠(如:3306,3307),運行多個MySQL服務進程,通過不同的socket監聽不同的服務埠來提供各自的服務:; 1.2.MySQL多實例的特點有以下幾點 1:有效利用伺服器資源,當單 ...
  • SQL Server 動態行轉列(參數化表名、分組列、行轉列欄位、欄位值) ...
  • 第一步:下載安裝包 我們首先需要下載 mongodb 的安裝包,直接到官網下載即可。地址為:https://www.mongodb.com/download-center#community。 看下自己的操作系統是32位還是64位選擇不同的安裝包下載。 第二步:安裝軟體 下載完成之後安裝。安裝的時候 ...
  • 近期Office365用戶升級後解決了在Power Pivot中輸入中文的問題,但是同時也帶來了一個新的問題就是表屬性視窗預設為“查詢編輯器”模式,且無法切換回“表預覽”模式。 本文和您分享在這種情況下如何對源數據進行更改操作。 【導入時未進行篩選的情況】 從Excel文件導入數據到PowerPiv ...
一周排行
    -Advertisement-
    Play Games
  • 前言 本文介紹一款使用 C# 與 WPF 開發的音頻播放器,其界面簡潔大方,操作體驗流暢。該播放器支持多種音頻格式(如 MP4、WMA、OGG、FLAC 等),並具備標記、實時歌詞顯示等功能。 另外,還支持換膚及多語言(中英文)切換。核心音頻處理採用 FFmpeg 組件,獲得了廣泛認可,目前 Git ...
  • OAuth2.0授權驗證-gitee授權碼模式 本文主要介紹如何筆者自己是如何使用gitee提供的OAuth2.0協議完成授權驗證並登錄到自己的系統,完整模式如圖 1、創建應用 打開gitee個人中心->第三方應用->創建應用 創建應用後在我的應用界面,查看已創建應用的Client ID和Clien ...
  • 解決了這個問題:《winForm下,fastReport.net 從.net framework 升級到.net5遇到的錯誤“Operation is not supported on this platform.”》 本文內容轉載自:https://www.fcnsoft.com/Home/Sho ...
  • 國內文章 WPF 從裸 Win 32 的 WM_Pointer 消息獲取觸摸點繪製筆跡 https://www.cnblogs.com/lindexi/p/18390983 本文將告訴大家如何在 WPF 裡面,接收裸 Win 32 的 WM_Pointer 消息,從消息裡面獲取觸摸點信息,使用觸摸點 ...
  • 前言 給大家推薦一個專為新零售快消行業打造了一套高效的進銷存管理系統。 系統不僅具備強大的庫存管理功能,還集成了高性能的輕量級 POS 解決方案,確保頁面載入速度極快,提供良好的用戶體驗。 項目介紹 Dorisoy.POS 是一款基於 .NET 7 和 Angular 4 開發的新零售快消進銷存管理 ...
  • ABP CLI常用的代碼分享 一、確保環境配置正確 安裝.NET CLI: ABP CLI是基於.NET Core或.NET 5/6/7等更高版本構建的,因此首先需要在你的開發環境中安裝.NET CLI。這可以通過訪問Microsoft官網下載並安裝相應版本的.NET SDK來實現。 安裝ABP ...
  • 問題 問題是這樣的:第三方的webapi,需要先調用登陸介面獲取Cookie,訪問其它介面時攜帶Cookie信息。 但使用HttpClient類調用登陸介面,返回的Headers中沒有找到Cookie信息。 分析 首先,使用Postman測試該登陸介面,正常返回Cookie信息,說明是HttpCli ...
  • 國內文章 關於.NET在中國為什麼工資低的分析 https://www.cnblogs.com/thinkingmore/p/18406244 .NET在中國開發者的薪資偏低,主要因市場需求、技術棧選擇和企業文化等因素所致。歷史上,.NET曾因微軟的閉源策略發展受限,儘管後來推出了跨平臺的.NET ...
  • 在WPF開發應用中,動畫不僅可以引起用戶的註意與興趣,而且還使軟體更加便於使用。前面幾篇文章講解了畫筆(Brush),形狀(Shape),幾何圖形(Geometry),變換(Transform)等相關內容,今天繼續講解動畫相關內容和知識點,僅供學習分享使用,如有不足之處,還請指正。 ...
  • 什麼是委托? 委托可以說是把一個方法代入另一個方法執行,相當於指向函數的指針;事件就相當於保存委托的數組; 1.實例化委托的方式: 方式1:通過new創建實例: public delegate void ShowDelegate(); 或者 public delegate string ShowDe ...