pika支持的redis接口及兼容情況

2018-09-26 11:07 更新

pika當(dāng)前支持的redis接口 pika支持redis五種類型(分別為string、hash、list、set、zset)的接口,先列出其對(duì)redis的五種數(shù)據(jù)結(jié)構(gòu)兼容統(tǒng)計(jì)。

統(tǒng)計(jì)所用的標(biāo)記含義如下:

圖標(biāo)含義
o該接口完全支持,使用方式與redis沒有任何區(qū)別
!功能支持,但使用或輸出與redis有部分差異,需注意
×當(dāng)前還未支持

string

接口setgetdelexistsexpireexpireatpersistttlappend
狀態(tài)ooooooooo
接口decrdecrbygetrangegetsetincrincrbyincrbyfloatmgetmset
狀態(tài)ooooooooo
接口setexsetnxsetrangestrlenpexpirepexpireatpttlrenamerenamenx
狀態(tài)oooo!!oxx
接口bitopgetbitpsetexsetbitdumpkeysmigratemoveobject
狀態(tài)!!x!xoxxx
接口scanrestoresorttypebitpospfaddpfcountpfmerge
狀態(tài)!xx!!ooo

備注:

  • pexpire:無法精確到毫秒,底層會(huì)自動(dòng)截?cái)喟疵爰?jí)別進(jìn)行處理;
  • pexpireat:無法精確到毫秒,底層會(huì)自動(dòng)截?cái)喟疵爰?jí)別進(jìn)行處理;
  • scan:會(huì)順序迭代當(dāng)前db的快照,由于pika允許重名五次,所以scan有優(yōu)先輸出順序,依次為:string -> hash -> list -> zset -> set;
  • type:另外由于pika允許重名五次,所以type有優(yōu)先輸出順序,依次為:string -> hash -> list -> zset -> set,如果這個(gè)key在string中存在,那么只輸出sting,如果不存在,那么則輸出hash的,依次類推。
  • bit操作:與redis不同,pika的bit操作范圍為2^18

hash

接口hdelhexistshgethgetallhincrbyhincrbyfloathkeyshlenhmgethmset
狀態(tài)oooooooooo
接口hsethsetnxhvalshscanhstrlen
狀態(tài)ooooo

list

接口lindexlinsertllenlpoplpushlpushxlrangelremlsetltrim
狀態(tài)oooooooooo
接口rpoprpoplpushrpushrpushblpopbrpopbrpoplpush
狀態(tài)ooooxxx

set

接口saddscardsdiffsdiffstoresintersinterstoresismembersmemberssmovespop
狀態(tài)oooooooooo
接口srandmembersremsunionsunionstoresscan
狀態(tài)!oooo

備注:

  • srandmember:時(shí)間復(fù)雜度O( n ),耗時(shí)較多

zset

接口zaddzcardzcountzincrbyzrangezrangebyscorezrankzremzremrangebyrankzremrangebyscore
狀態(tài)oooooooooo
接口zrevrangezrevrangebyscorezrevrankzscorezunionstorezinterstorezscanzrangebylexzlexcountzremrangebylex
狀態(tài)ooo!oooooo

備注:

  • zscore:目前支持的數(shù)據(jù)范圍是[-10^13, 10^13]。精度支持10e-5(小數(shù)點(diǎn)后5位),小于Redis的數(shù)據(jù)范圍;

hyperloglog

接口pfaddpfcountpfmerge
狀態(tài)ooo

備注:

  • 50w以內(nèi)誤差均小于1%, 100w以內(nèi)誤差小于3%, 但付出了時(shí)間代價(jià).

geo

geoaddgeodistgeohashgeoposgeoradiusgeoradiusbymember
狀態(tài)oooooo

備注:

  • GEO實(shí)現(xiàn)依賴zset數(shù)據(jù)結(jié)構(gòu), 所以HASH位數(shù)只有13位, 較Redis精度有所差距.
  • georadius和georadiusbymember默認(rèn)輸出是無序的.

管理命令(這里僅列出pika兼容的)

接口infoconfigclientpingbgsaveshutdownselect
狀態(tài)!!!ooo!

備注:

  • info:info支持全部輸出,也支持匹配形式的輸出,例如可以通過info stats查看狀態(tài)信息,需要注意的是key space與redis不同,pika對(duì)于key space的展示選擇了分類型展示而非redis的分庫展示(因?yàn)閜ika沒有庫),pika對(duì)于key space的統(tǒng)計(jì)是被動(dòng)的,需要手動(dòng)觸發(fā),然后pika會(huì)在后臺(tái)進(jìn)行統(tǒng)計(jì),pika的key space統(tǒng)計(jì)是精確的。觸發(fā)方式為執(zhí)行:keyspace命令即可,然后pika會(huì)在后臺(tái)統(tǒng)計(jì),此時(shí)可以使用:keyspace readonly命令來進(jìn)行查看,readonly參數(shù)可以避免反復(fù)進(jìn)行統(tǒng)計(jì),如果當(dāng)前數(shù)據(jù)為0,則證明還在統(tǒng)計(jì)中;
  • config:當(dāng)前config僅僅支持個(gè)別參數(shù)的get、set,不支持rewrite;
  • client:當(dāng)前client命令支持client list及client kill,client list顯示的內(nèi)容少于redis;
  • select:該命令為擺設(shè),可以執(zhí)行,會(huì)返回成功,但無任何效果。

重要說明

  • 重名問題:由于pika每個(gè)類型獨(dú)立運(yùn)作, 所以允許重名。例如在key abc在string中存在的時(shí)候也同樣允許在hash中存在,一個(gè)key最多重名5次(5大類型),但在同一接口中是無法重名的。所以建議在使用的時(shí)候?qū)τ诓煌愋筒灰褂猛耆嗤膋ey;
  • 長(zhǎng)度問題:pika kv的key value長(zhǎng)度沒有限制,其他數(shù)據(jù)結(jié)構(gòu)hash zset set list 的key長(zhǎng)度限制255, value沒有限制。
  • 分庫問題:pika不支持redis的多個(gè)庫功能(db0,db1,db2),對(duì)于pika只有一個(gè)庫,也就是db0,select命令在pika中可以執(zhí)行,但實(shí)際上沒有任何效果。
  • 數(shù)據(jù)展示:pika對(duì)于keyspace的展示選擇了分類型展示而非redis的分庫展示(因?yàn)閜ika沒有分庫概念),pika對(duì)于keyspace的統(tǒng)計(jì)是被動(dòng)的,需要手動(dòng)觸發(fā)并不會(huì)立即輸出,命令為:info keyspace [ 0|1 ],默認(rèn)為0不觸發(fā),pika的keyspace統(tǒng)計(jì)是精確的。
以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)