一 慢查詢
慢查詢是一個先進(jìn)先出的隊(duì)韩容,并且是固定長度的,并保存在內(nèi)存中唐瀑。
slowlog-log-slower-than=1000群凶,慢查詢的閾值,單位是微妙
#默認(rèn)值
config get slowlog-max-len = 128
config get slowlog-log-slower-than = 10000
可通過修改配置文件重啟(不建議)
動態(tài)配置方法
建議閾值值設(shè)置為1毫秒介褥,隊(duì)列長度1000左右
config set slowlog-max-len = 128
config setslowlog-log-slower-than = 1000
其他命令
#1.獲取慢查詢的隊(duì)列
slowlog get [n]
#2.獲取慢查詢隊(duì)列長度
slowlog len
#3.清空慢查詢隊(duì)列
slowlog reset
二 pipeline
pipline是批量操做命令的一個功能,例如set 1000次座掘,不用循環(huán)1000次,每次都做set的操作柔滔,這樣做的好處是減少每次循環(huán)網(wǎng)絡(luò)的請求時間
三 發(fā)布訂閱
角色:發(fā)布者(redis-cli)溢陪、訂閱者(redis-ci)、頻道(redis-server)
類似于生產(chǎn)者與消費(fèi)者的模型睛廊, 發(fā)布者將消息發(fā)布到頻道,訂閱者接收信息
一個訂閱者可訂閱多個頻道,新建的訂閱者無法訂閱到新建時間之前的消息
消息隊(duì)列是 只有一個訂閱者可以獲得消息
API:
1.返回訂閱者個數(shù)
publish channel message
publish channel1 "hello world"
2.返回訂閱者的頻道和改頻道的訂閱個數(shù)形真;以及消息對應(yīng)的頻道及消息內(nèi)容
subscribe [channel] #訂閱一個或多個頻道
subscribe channel1
3.取消訂閱一個或多個頻道
返回 取消訂閱的頻道;取消訂閱頻道的訂閱者個數(shù)
unsubscribe [channel]
unsubscribe channel1
psubscribe ['pattern..'] # 訂閱模式
punsubscribe ['pattern..'] # 退訂指定的模式
pubsub channels # 列出至少有一個訂閱者的頻道
pubsub numsub # 列出給定頻道的訂閱者數(shù)量
四 Bitmap (位圖)
對字符串中的每個字符位的操作超全,最大長度為512MB咆霜,適合于大規(guī)模的數(shù)據(jù)
API
- 給位圖指定索引設(shè)置值
setbit key offset value
返回值 是設(shè)置前的值
set hello world
getbit hello 0
setbit hello 7 1 #一個字節(jié)對應(yīng)8個位,從0開始,7代表word中w的最后一位
注意 如果設(shè)置索引值大于當(dāng)前位嘶朱,則之間的位都會補(bǔ)0蛾坯,如果索引值很大,會非常慢
2.獲取位圖上指定索引的值
返回值 是當(dāng)前偏移量的位的值
getbit key offset
getbit hello 7
3.獲取位圖指定范圍值為1的個數(shù)(單位為字節(jié)疏遏,如果不指定就是獲取全部)
bitcount key [start end]
bitcount hello
4.多個bitmap的and(交集)脉课、or(并集)、not(非)财异、xor(異或)操作并將結(jié)果保存在destkey中
bitop op destkey key [key....] # op = and | or | not | xor
返回值 是destkey中字節(jié)的長度
求兩個位圖的并集
bitop and key key1 key2
5.計(jì)算位圖指定范圍的第一個偏移量對應(yīng)的值等于targetBit的位置(單位是字節(jié)倘零,如果不指定就是獲取全部)
bitpos key targetBit [start] [end]
返回值是 targetBit 的一個位置
bitpos key 1 # 獲取key中值是1的第一個位置
五 HyperLogLog
用極小的空間完成獨(dú)立數(shù)量統(tǒng)計(jì)
API
1.向hyperloglog中添加元素
pfadd key element [element....]
2.計(jì)算獨(dú)立總數(shù)
pfcount key [key.......]
3.合并多個hyperloglog
pfmerge destkey sourcekey [sourcekey.....]
pfadd key1 1 2 3 4
# 返回1 代表添加正常
pfcount key1
# 返回?cái)?shù)量 4
pfadd key2 4 5 6 7
# 返回 1
pfmerge key3 key1 key2
# 返回7 (1,2,3,4,5,6,7 重復(fù)的值只保留一個)
注意:計(jì)算錯誤率0.81%,但對于很大的值來說存在誤差一般是可以接受的
六 GEO(3.2版本以上)
存儲經(jīng)緯度,計(jì)算兩地距離戳寸,范圍等
API
1.增加地理位置信息
返回1 表示添加成功
geo key longitude latitude member [longitude latitude member...]
geoadd city:location 116.28 39.55 beijing
2.獲取地理位置信息
返回值是精度和緯度
geopos key member [member...]
geopos city:location beijing
3.獲取兩個地理位置的距離
geolist key member1 member2 [unit]
返回值 距離
unit: m呈驶、km、mi(英里)疫鹊、ft(尺)
geolist city:location beijing tianjin km
4.算出指定范圍內(nèi)的member(通過經(jīng)緯度)
georadius key longitude latitude unit [withcoord] [withdist] [withhash] [COUNT count] [asc|desc] [store key] [storedist key]
5..算出指定范圍內(nèi)的member(通過一個member)
georadiusbymember key member unit [withcoord] [withdist] [withhash] [COUNT count] [asc|desc] [store key] [storedist key]
withcoord:返回結(jié)果中包含經(jīng)緯度
withdist:返回結(jié)果中包含中心節(jié)點(diǎn)位置
withhash:返回結(jié)果中包含geohash
COUNT count:指定返回結(jié)果的數(shù)量
asc|desc:返回結(jié)果按照距離中心節(jié)點(diǎn)的距離做升序或者降序
store key:將結(jié)果地理位置信息保存到指定鍵
storedist key:將返回結(jié)果距離中心節(jié)點(diǎn)的距離保存到指定鍵