redis field 是什麽意思 跟key是什麽關系,比如lpush(key,field,value)應該怎麽設置
先說redisredis是壹個類似memcached的key/value存儲系統,它支持存儲的value類型相對較多,包括string(字符串)、list(鏈表)、set(集合)和zset(有序集合)。在此基礎上,redis支持各種不同方式的排序。與memcached壹樣,為了保證效率,數據都是緩存在內存中。區別的是redis會周期性的把更新的數據寫入磁盤或者把修改操作寫入追加的記錄文件(這點兒個人覺得redis比memcache在數據保存上要安全壹些),並且在此基礎上實現了master-slave(主從)同步。redis的存取性能很高,SET操作每秒鐘110000次,GET操作每秒鐘81000次(速度很爽!)。Redis針對不同的存儲類型對象提供了不同的命令。redis目前提供四種數據類型:string,list,set及zset(sortedset)。string是最簡單的類型,妳可以理解成與Memcached壹模壹個的類型,壹個key對應壹個value,其上支持的操作與Memcached的操作類似。但它的功能更豐富。list是壹個鏈表結構,主要功能是push、pop、獲取壹個範圍的所有值等等。操作中key理解為鏈表的名字。set是集合,和我們數學中的集合概念相似,對集合的操作有添加刪除元素,有對多個集合求交並差等操作。操作中key理解為集合的名字。zset是set的壹個升級版本,他在set的基礎上增加了壹個順序屬性,這壹屬性在添加修改元素的時候可以指定,每次指定後,zset會自動重新按新的值調整順序。可以理解了有兩列的mysql表,壹列存value,壹列存順序。操作中key理解為zset的名字。下面提供redis命令:適合全體類型的命令EXISTSkey判斷壹個鍵是否存在;存在返回1;否則返回0;DELkey刪除某個key,或是壹系列key;DELkey1key2key3key4TYPEkey返回某個key元素的數據類型(none:不存在,string:字符,list,set,zset,hash)KEYSpattern返回匹配的key列表(KEYSfoo*:查找foo開頭的keys)RANDOMKEY隨機獲得壹個已經存在的key,如果當前數據庫為空,則返回空字符串RENAMEoldnamenewname更改key的名字,新鍵如果存在將被覆蓋RENAMENXoldnamenewname更改key的名字,如果名字存在則更改失敗DBSIZE返回當前數據庫的key的總數EXPIRE設置某個key的過期時間(秒),(EXPIREbruce1000:設置bruce這個key1000秒後系統自動刪除)註意:如果在還沒有過期的時候,對值進行了改變,那麽那個值會被清除。TTL查找某個key還有多長時間過期,返回時間秒SELECTindex選擇數據庫MOVEkeydbindex將指定鍵從當前數據庫移到目標數據庫dbindex。成功返回1;否則返回0(源數據庫不存在key或目標數據庫已存在同名key);FLUSHDB清空當前數據庫中的所有鍵FLUSHALL清空所有數據庫中的所有鍵處理字符串的命令SETkeyvalue給壹個鍵設置字符串值。SETkeynamedatalengthdata(SETbruce10paitoubing:保存key為burce,字符串長度為10的壹個字符串paitoubing到數據庫),data最大不可超過1G。GETkey獲取某個key的value值。如key不存在,則返回字符串“nil”;如key的值不為字符串類型,則返回壹個錯誤。GETSETkeyvalue可以理解成獲得的key的值然後SET這個值,更加方便的操作(SETbruce10paitoubing,這個時候需要修改bruce變成1234567890並獲取這個以前的數據paitoubing,GETSETbruce101234567890)MGETkey1key2…keyN壹次性返回多個鍵的值SETNXkeyvalueSETNX與SET的區別是SET可以創建與更新key的value,而SETNX是如果key不存在,則創建key與value數據MSETkey1value1key2value2…keyNvalueN在壹次原子操作下壹次性設置多個鍵和值MSETNXkey1value1key2value2…keyNvalueN在壹次原子操作下壹次性設置多個鍵和值(目標鍵不存在情況下,如果有壹個以上的key已存在,則失敗)INCRkey自增鍵值INCRBYkeyinteger令鍵值自增指定數值DECRkey自減鍵值DECRBYkeyinteger令鍵值自減指定數值處理lists的命令RPUSHkeyvalue從List尾部添加壹個元素(如序列不存在,則先創建,如已存在同名Key而非序列,則返回錯誤)LPUSHkeyvalue從List頭部添加壹個元素LLENkey返回壹個List的長度LRANGEkeystartend從自定的範圍內返回序列的元素(LRANGEtestlist02;返回序列testlist前012元素)LTRIMkeystartend修剪某個範圍之外的數據(LTRIMtestlist02;保留012元素,其余的刪除)LINDEXkeyindex返回某個位置的序列值(LINDEXtestlist0;返回序列testlist位置為0的元素)LSETkeyindexvalue更新某個位置元素的值LREMkeycountvalue從List的頭部(count正數)或尾部(count負數)刪除壹定數量(count)匹配value的元素,返回刪除的元素數量。LPOPkey彈出List的第壹個元素RPOPkey彈出List的最後壹個元素RPOPLPUSHsrckeydstkey彈出_srckey_中最後壹個元素並將其壓入_dstkey_頭部,key不存在或序列為空則返回“nil”處理集合(sets)的命令(有索引無序序列)SADDkeymember增加元素到SETS序列,如果元素(membe)不存在則添加成功1,否則失敗0;(SADDtestlist3/none)SREMkeymember刪除SETS序列的某個元素,如果元素不存在則失敗0,否則成功1(SREMtestlist3/None)SPOPkey從集合中隨機彈出壹個成員SMOVEsrckeydstkeymember把壹個SETS序列的某個元素移動到另外壹個SETS序列(SMOVEtestlisttest3/ntwo;從序列testlist移動元素two到test中,testlist中將不存在two元素)SCARDkey統計某個SETS的序列的元素數量SISMEMBERkeymember獲知指定成員是否存在於集合中SINTERkey1key2…keyN返回key1,key2,…,keyN中的交集SINTERSTOREdstkeykey1key2…keyN將key1,key2,…,keyN中的交集存入dstkeySUNIONkey1key2…keyN返回key1,key2,…,keyN的並集SUNIONSTOREdstkeykey1key2…keyN將key1,key2,…,keyN的並集存入dstkeySDIFFkey1key2…keyN依據key2,…,keyN求key1的差集。官方例子:key1=x,a,b,ckey2=ckey3=a,dSDIFFkey1,key2,key3=>x,bSDIFFSTOREdstkeykey1key2…keyN依據key2,…,keyN求key1的差集並存入dstkeySMEMBERSkey返回某個序列的所有元素SRANDMEMBERkey隨機返回某個序列的元素處理有序集合(sortedsets)的命令(zsets)ZADDkeyscoremember添加指定成員到有序集合中,如果目標存在則更新score(分值,排序用)ZREMkeymember從有序集合刪除指定成員ZINCRBYkeyincrementmember如果成員存在則將其增加_increment_,否則將設置壹個score為_increment_的成員ZRANGEkeystartend返回升序排序後的指定範圍的成員ZREVRANGEkeystartend返回降序排序後的指定範圍的成員ZRANGEBYSCOREkeyminmax返回所有符合score>=min和score=min和score形式的數據,通過key進行任何操作。ttserver可以將數據持久化保存,memcached全部是保存在內存中,memcached會自動刪除過期數據,最長不超過30天。memcached在和壹些api配合時,能自動進行數據的出入序列化,讀取反序列化。ttserver有主從復制的功能,操作日誌等,這完全是數據庫才有的東西。據說memcached正在對整體架構做調整,到時候支持plugin機制.會把網絡,事件處理,內存存儲剝離開來.以後要做基於磁盤的key-value存儲就可以寫壹個存儲引擎就成了。memcached的二次開發又步入壹個小高潮。