ããRedis常ç¨æ°æ®ç±»å
ããRedisæ为常ç¨çæ°æ®ç±»å主è¦æ以ä¸äºç§ï¼
ããString
ããHash
ããList
ããSet
ããSorted set
ããå¨å
·ä½æè¿°è¿å ç§æ°æ®ç±»åä¹åï¼æ们å
éè¿ä¸å¼ å¾äºè§£ä¸Rediså
é¨å
å管çä¸æ¯å¦ä½æè¿°è¿äºä¸åæ°æ®ç±»åçï¼
ããé¦å
Rediså
é¨ä½¿ç¨ä¸ä¸ªredisObject对象æ¥è¡¨ç¤ºææçkeyåvalue,redisObjectæ主è¦çä¿¡æ¯å¦ä¸å¾æ示ï¼type代表ä¸ä¸ªvalue对象å
·ä½æ¯ä½ç§æ°æ®ç±»åï¼encodingæ¯ä¸åæ°æ®ç±»åå¨rediså
é¨çåå¨æ¹å¼ï¼æ¯å¦ï¼type=string代表valueåå¨çæ¯ä¸ä¸ªæ®éå符串ï¼é£ä¹å¯¹åºçencodingå¯ä»¥æ¯rawæè
æ¯int,å¦ææ¯intå代表å®é
rediså
é¨æ¯ææ°å¼åç±»åå¨å表示è¿ä¸ªå符串çï¼å½ç¶åææ¯è¿ä¸ªå符串æ¬èº«å¯ä»¥ç¨æ°å¼è¡¨ç¤ºï¼æ¯å¦ï¼â123â â456âè¿æ ·çå符串ã
ããè¿ééè¦ç¹æ®è¯´æä¸ä¸vmå段ï¼åªææå¼äºRedisçèæå
ååè½ï¼æ¤å段æä¼çæ£çåé
å
åï¼è¯¥åè½é»è®¤æ¯å
³éç¶æçï¼è¯¥åè½ä¼å¨åé¢å
·ä½æè¿°ãéè¿ä¸å¾æ们å¯ä»¥åç°Redis使ç¨redisObjectæ¥è¡¨ç¤ºææçkey/valueæ°æ®æ¯æ¯è¾æµªè´¹å
åçï¼å½ç¶è¿äºå
å管çææ¬çä»åºä¸»è¦ä¹æ¯ä¸ºäºç»Redisä¸åæ°æ®ç±»åæä¾ä¸ä¸ªç»ä¸ç管çæ¥å£ï¼å®é
ä½è
ä¹æä¾äºå¤ç§æ¹æ³å¸®å©æ们尽éèçå
å使ç¨ï¼æ们éåä¼å
·ä½è®¨è®ºã
ããä¸é¢æ们å
æ¥éä¸çåæä¸è¿äºç§æ°æ®ç±»åç使ç¨åå
é¨å®ç°æ¹å¼ï¼
ããString
ãã常ç¨å½ä»¤ï¼
ããset,get,decr,incr,mget çã
ããåºç¨åºæ¯ï¼
ããStringæ¯æ常ç¨çä¸ç§æ°æ®ç±»åï¼æ®éçkey/valueåå¨é½å¯ä»¥å½ä¸ºæ¤ç±»ï¼è¿éå°±ä¸æå解éäºã
ããå®ç°æ¹å¼ï¼
ããStringå¨rediså
é¨åå¨é»è®¤å°±æ¯ä¸ä¸ªå符串ï¼è¢«redisObjectæå¼ç¨ï¼å½éå°incr,decrçæä½æ¶ä¼è½¬ææ°å¼åè¿è¡è®¡ç®ï¼æ¤æ¶redisObjectçencodingå段为intã
ããHash
ãã常ç¨å½ä»¤ï¼
ããhget,hset,hgetall çã
ããåºç¨åºæ¯ï¼
ããæ们ç®å举个å®ä¾æ¥æè¿°ä¸Hashçåºç¨åºæ¯ï¼æ¯å¦æ们è¦åå¨ä¸ä¸ªç¨æ·ä¿¡æ¯å¯¹è±¡æ°æ®ï¼å
å«ä»¥ä¸ä¿¡æ¯ï¼
ããç¨æ·ID为æ¥æ¾çkeyï¼åå¨çvalueç¨æ·å¯¹è±¡å
å«å§åï¼å¹´é¾ï¼çæ¥çä¿¡æ¯ï¼å¦æç¨æ®éçkey/valueç»ææ¥åå¨ï¼ä¸»è¦æ以ä¸2ç§åå¨æ¹å¼ï¼
ãã常ç¨å
åä¼åæ段ä¸åæ°
ããéè¿æ们ä¸é¢çä¸äºå®ç°ä¸çåæå¯ä»¥çåºrediså®é
ä¸çå
å管çææ¬é常é«ï¼å³å ç¨äºè¿å¤çå
åï¼ä½è
对è¿ç¹ä¹é常æ¸
æ¥ï¼æ以æä¾äºä¸ç³»åçåæ°åæ段æ¥æ§å¶åèçå
åï¼æ们åå«æ¥è®¨è®ºä¸ã
ããé¦å
æéè¦çä¸ç¹æ¯ä¸è¦å¼å¯RedisçVMé项ï¼å³èæå
ååè½ï¼è¿ä¸ªæ¬æ¥æ¯ä½ä¸ºRedisåå¨è¶
åºç©çå
åæ°æ®çä¸ç§æ°æ®å¨å
åä¸ç£çæ¢å
¥æ¢åºçä¸ä¸ªæä¹
åçç¥ï¼ä½æ¯å
¶å
å管çææ¬ä¹é常çé«ï¼å¹¶ä¸æ们åç»ä¼åææ¤ç§æä¹
åçç¥å¹¶ä¸æçï¼æ以è¦å
³éVMåè½ï¼è¯·æ£æ¥ä½ çredis.confæä»¶ä¸ vm-enabled 为 noã
ããå
¶æ¬¡æ好设置ä¸redis.confä¸çmaxmemoryé项ï¼è¯¥é项æ¯åè¯Rediså½ä½¿ç¨äºå¤å°ç©çå
ååå°±å¼å§æç»åç»çåå
¥è¯·æ±ï¼è¯¥åæ°è½å¾å¥½çä¿æ¤å¥½ä½ çRedisä¸ä¼å 为使ç¨äºè¿å¤çç©çå
åè导è´swap,æç»ä¸¥éå½±åæ§è½çè³å´©æºã
ããå¦å¤Redis为ä¸åæ°æ®ç±»ååå«æä¾äºä¸ç»åæ°æ¥æ§å¶å
å使ç¨ï¼æ们å¨åé¢è¯¦ç»åæè¿Redis Hashæ¯valueå
é¨ä¸ºä¸ä¸ªHashMapï¼å¦æ该Mapçæåæ°æ¯è¾å°ï¼åä¼éç¨ç±»ä¼¼ä¸ç»´çº¿æ§çç´§åæ ¼å¼æ¥åå¨è¯¥Map, å³çå»äºå¤§éæéçå
åå¼éï¼è¿ä¸ªåæ°æ§å¶å¯¹åºå¨redis.confé
ç½®æ件ä¸ä¸é¢2项ï¼
ããhash-max-zipmap-entries 64
ããhash-max-zipmap-value 512
ããhash-max-zipmap-entries
ããå«ä¹æ¯å½valueè¿ä¸ªMapå
é¨ä¸è¶
è¿å¤å°ä¸ªæåæ¶ä¼éç¨çº¿æ§ç´§åæ ¼å¼åå¨ï¼é»è®¤æ¯64,å³valueå
é¨æ64个以ä¸çæåå°±æ¯ä½¿ç¨çº¿æ§ç´§ååå¨ï¼è¶
è¿è¯¥å¼èªå¨è½¬æçæ£çHashMapã
ããhash-max-zipmap-value å«ä¹æ¯å½ valueè¿ä¸ªMapå
é¨çæ¯ä¸ªæåå¼é¿åº¦ä¸è¶
è¿å¤å°åèå°±ä¼éç¨çº¿æ§ç´§ååå¨æ¥èç空é´ã
ãã以ä¸2个æ¡ä»¶ä»»æä¸ä¸ªæ¡ä»¶è¶
è¿è®¾ç½®å¼é½ä¼è½¬æ¢æçæ£çHashMapï¼ä¹å°±ä¸ä¼åèçå
åäºï¼é£ä¹è¿ä¸ªå¼æ¯ä¸æ¯è®¾ç½®çè¶å¤§è¶å¥½å¢ï¼çæ¡å½ç¶æ¯å¦å®çï¼HashMapçä¼å¿å°±æ¯æ¥æ¾åæä½çæ¶é´å¤æ度é½æ¯Oï¼1ï¼çï¼èæ¾å¼Hashéç¨ä¸ç»´åå¨åæ¯Oï¼nï¼çæ¶é´å¤æ度ï¼å¦æ
ããæåæ°éå¾å°ï¼åå½±åä¸å¤§ï¼å¦åä¼ä¸¥éå½±åæ§è½ï¼æ以è¦æ衡好è¿ä¸ªå¼ç设置ï¼æ»ä½ä¸è¿æ¯ææ ¹æ¬çæ¶é´ææ¬å空é´ææ¬ä¸çæè¡¡ã
ããåæ ·ç±»ä¼¼çåæ°è¿æï¼
ããlist-max-ziplist-entries 512
ãã说æï¼listæ°æ®ç±»åå¤å°èç¹ä»¥ä¸ä¼éç¨å»æéçç´§ååå¨æ ¼å¼ã
ããlist-max-ziplist-value 64
ãã说æï¼listæ°æ®ç±»åèç¹å¼å¤§å°å°äºå¤å°åèä¼éç¨ç´§ååå¨æ ¼å¼ã
ããset-max-intset-entries 512
ãã说æï¼setæ°æ®ç±»åå
é¨æ°æ®å¦æå
¨é¨æ¯æ°å¼åï¼ä¸å
å«å¤å°èç¹ä»¥ä¸ä¼éç¨ç´§åæ ¼å¼åå¨ã
ããæåæ³è¯´çæ¯Rediså
é¨å®ç°æ²¡æ对å
ååé
æ¹é¢åè¿å¤çä¼åï¼å¨ä¸å®ç¨åº¦ä¸ä¼åå¨å
åç¢çï¼ä¸è¿å¤§å¤æ°æ
åµä¸è¿ä¸ªä¸ä¼æ为Redisçæ§è½ç¶é¢ï¼ä¸è¿å¦æå¨Rediså
é¨åå¨ç大é¨åæ°æ®æ¯æ°å¼åçè¯ï¼Rediså
é¨éç¨äºä¸ä¸ªshared integerçæ¹å¼æ¥çå»åé
å
åçå¼éï¼å³å¨ç³»ç»å¯å¨æ¶å
åé
ä¸ä¸ªä»1~n é£ä¹å¤ä¸ªæ°å¼å¯¹è±¡æ¾å¨ä¸ä¸ªæ± åä¸ï¼å¦æåå¨çæ°æ®æ°å¥½æ¯è¿ä¸ªæ°å¼èå´å
çæ°æ®ï¼åç´æ¥ä»æ± åéååºè¯¥å¯¹è±¡ï¼å¹¶ä¸éè¿å¼ç¨è®¡æ°çæ¹å¼æ¥å
±äº«ï¼è¿æ ·å¨ç³»ç»åå¨äºå¤§éæ°å¼ä¸ï¼ä¹è½ä¸å®ç¨åº¦ä¸èçå
å并ä¸æé«æ§è½ï¼è¿ä¸ªåæ°å¼nç设置éè¦ä¿®æ¹æºä»£ç ä¸çä¸è¡å®å®ä¹REDIS_SHARED_INTEGERSï¼è¯¥å¼é»è®¤æ¯10000ï¼å¯ä»¥æ ¹æ®èªå·±çéè¦è¿è¡ä¿®æ¹ï¼ä¿®æ¹åéæ°ç¼è¯å°±å¯ä»¥äºã
ããRedisçæä¹
åæºå¶
ããRedisç±äºæ¯æé常丰å¯çå
åæ°æ®ç»æç±»åï¼å¦ä½æè¿äºå¤æçå
åç»ç»æ¹å¼æä¹
åå°ç£çä¸æ¯ä¸ä¸ªé¾é¢ï¼æ以Redisçæä¹
åæ¹å¼ä¸ä¼ ç»æ°æ®åºçæ¹å¼ææ¯è¾å¤çå·®å«ï¼Redisä¸å
±æ¯æåç§æä¹
åæ¹å¼ï¼åå«æ¯ï¼
ããå¨è®¾è®¡æè·¯ä¸ï¼å两ç§æ¯åºäºå
¨é¨æ°æ®é½å¨å
åä¸ï¼å³å°æ°æ®éä¸æä¾ç£çè½å°åè½ï¼èå两ç§æ¹å¼åæ¯ä½è
å¨å°è¯åå¨æ°æ®è¶
è¿ç©çå
åæ¶ï¼å³å¤§æ°æ®éçæ°æ®åå¨ï¼æªæ¢å°æ¬æï¼å两ç§æä¹
åæ¹å¼ä»ç¶æ¯å¨å®éªé¶æ®µï¼å¹¶ä¸vmæ¹å¼åºæ¬å·²ç»è¢«ä½è
æ¾å¼ï¼æ以å®é
è½å¨ç产ç¯å¢ç¨çåªæå两ç§ï¼æ¢å¥è¯è¯´Redisç®åè¿åªè½ä½ä¸ºå°æ°æ®éåå¨ï¼å
¨é¨æ°æ®è½å¤å è½½å¨å
åä¸ï¼ï¼æµ·éæ°æ®åå¨æ¹é¢å¹¶ä¸æ¯Redisææ
é¿çé¢åãä¸é¢åå«ä»ç»ä¸è¿å ç§æä¹
åæ¹å¼ï¼
ããå®æ¶å¿«ç
§æ¹å¼ï¼snapshotï¼ï¼
ãã该æä¹
åæ¹å¼å®é
æ¯å¨Rediså
é¨ä¸ä¸ªå®æ¶å¨äºä»¶ï¼æ¯éåºå®æ¶é´å»æ£æ¥å½åæ°æ®åççæ¹å次æ°ä¸æ¶é´æ¯å¦æ»¡è¶³é
ç½®çæä¹
å触åçæ¡ä»¶ï¼å¦æ满足åéè¿æä½ç³»ç»forkè°ç¨æ¥å建åºä¸ä¸ªåè¿ç¨ï¼è¿ä¸ªåè¿ç¨é»è®¤ä¼ä¸ç¶è¿ç¨å
±äº«ç¸åçå°å空é´ï¼è¿æ¶å°±å¯ä»¥éè¿åè¿ç¨æ¥éåæ´ä¸ªå
åæ¥è¿è¡åå¨æä½ï¼è主è¿ç¨åä»ç¶å¯ä»¥æä¾æå¡ï¼å½æåå
¥æ¶ç±æä½ç³»ç»æç
§å
å页ï¼pageï¼ä¸ºåä½æ¥è¿è¡copy-on-writeä¿è¯ç¶åè¿ç¨ä¹é´ä¸ä¼äºç¸å½±åã
ãã该æä¹
åç主è¦ç¼ºç¹æ¯å®æ¶å¿«ç
§åªæ¯ä»£è¡¨ä¸æ®µæ¶é´å
çå
åæ åï¼æ以系ç»éå¯ä¼ä¸¢å¤±ä¸æ¬¡å¿«ç
§ä¸éå¯ä¹é´ææçæ°æ®ã
ããåºäºè¯å¥è¿½å æ¹å¼ï¼aofï¼ï¼
ããaofæ¹å¼å®é
类似mysqlçåºäºè¯å¥çbinlogæ¹å¼ï¼å³æ¯æ¡ä¼ä½¿Rediså
åæ°æ®åçæ¹åçå½ä»¤é½ä¼è¿½å å°ä¸ä¸ªlogæ件ä¸ï¼ä¹å°±æ¯è¯´è¿ä¸ªlogæ件就æ¯Redisçæä¹
åæ°æ®ã
ããaofçæ¹å¼ç主è¦ç¼ºç¹æ¯è¿½å logæ件å¯è½å¯¼è´ä½ç§¯è¿å¤§ï¼å½ç³»ç»éå¯æ¢å¤æ°æ®æ¶å¦ææ¯aofçæ¹å¼åå è½½æ°æ®ä¼é常æ
¢ï¼å åGçæ°æ®å¯è½éè¦å å°æ¶æè½å è½½å®ï¼å½ç¶è¿ä¸ªèæ¶å¹¶ä¸æ¯å 为ç£çæ件读åé度æ
¢ï¼èæ¯ç±äºè¯»åçææå½ä»¤é½è¦å¨å
åä¸æ§è¡ä¸éãå¦å¤ç±äºæ¯æ¡å½ä»¤é½è¦ålog,æ以使ç¨aofçæ¹å¼ï¼Redisç读åæ§è½ä¹ä¼ææä¸éã
ããèæå
åæ¹å¼ï¼
ããèæå
åæ¹å¼æ¯Redisæ¥è¿è¡ç¨æ·ç©ºé´çæ°æ®æ¢å
¥æ¢åºçä¸ä¸ªçç¥ï¼æ¤ç§æ¹å¼å¨å®ç°çææä¸æ¯è¾å·®ï¼ä¸»è¦é®é¢æ¯ä»£ç å¤æï¼éå¯æ
¢ï¼å¤å¶æ
¢ççï¼ç®åå·²ç»è¢«ä½è
æ¾å¼ã
ããdiskstoreæ¹å¼ï¼
ããdiskstoreæ¹å¼æ¯ä½è
æ¾å¼äºèæå
åæ¹å¼åéæ©çä¸ç§æ°çå®ç°æ¹å¼ï¼ä¹å°±æ¯ä¼ ç»çB-treeçæ¹å¼ï¼ç®åä»å¨å®éªé¶æ®µï¼åç»æ¯å¦å¯ç¨æ们å¯ä»¥æç®ä»¥å¾
ã
ããRedisæä¹
åç£çIOæ¹å¼åå
¶å¸¦æ¥çé®é¢
ããæRedis线ä¸è¿ç»´ç»éªç人ä¼åç°Rediså¨ç©çå
å使ç¨æ¯è¾å¤ï¼ä½è¿æ²¡æè¶
è¿å®é
ç©çå
åæ»å®¹éæ¶å°±ä¼åçä¸ç¨³å®çè³å´©æºçé®é¢ï¼æ人认为æ¯åºäºå¿«ç
§æ¹å¼æä¹
åçforkç³»ç»è°ç¨é æå
åå ç¨å åè导è´çï¼è¿ç§è§ç¹æ¯ä¸åç¡®çï¼å 为fork è°ç¨çcopy-on-writeæºå¶æ¯åºäºæä½ç³»ç»é¡µè¿ä¸ªåä½çï¼ä¹å°±æ¯åªææåå
¥çè页ä¼è¢«å¤å¶ï¼ä½æ¯ä¸è¬ä½ çç³»ç»ä¸ä¼å¨çæ¶é´å
ææç页é½åçäºåå
¥è导è´å¤å¶ï¼é£ä¹æ¯ä»ä¹åå 导è´Rediså´©æºçå¢ï¼
ããçæ¡æ¯Redisçæä¹
å使ç¨äºBuffer IOé æçï¼æè°Buffer IOæ¯æRedis对æä¹
åæ件çåå
¥å读åæä½é½ä¼ä½¿ç¨ç©çå
åçPage Cache,è大å¤æ°æ°æ®åºç³»ç»ä¼ä½¿ç¨Direct IOæ¥ç»è¿è¿å±Page Cache并èªè¡ç»´æ¤ä¸ä¸ªæ°æ®çCacheï¼èå½Redisçæä¹
åæ件è¿å¤§ï¼å°¤å
¶æ¯å¿«ç
§æ件ï¼ï¼å¹¶å¯¹å
¶è¿è¡è¯»åæ¶ï¼ç£çæ件ä¸çæ°æ®é½ä¼è¢«å è½½å°ç©çå
åä¸ä½ä¸ºæä½ç³»ç»å¯¹è¯¥æ件çä¸å±Cache,èè¿å±Cacheçæ°æ®ä¸Rediså
åä¸ç®¡ççæ°æ®å®é
æ¯éå¤åå¨çï¼è½ç¶å
æ ¸å¨ç©çå
åç´§å¼ æ¶ä¼åPage Cacheçåé¤å·¥ä½ï¼ä½å
æ ¸å¾å¯è½è®¤ä¸ºæåPage Cacheæ´éè¦ï¼èè®©ä½ çè¿ç¨å¼å§Swap ,è¿æ¶ä½ çç³»ç»å°±ä¼å¼å§åºç°ä¸ç¨³å®æè
å´©æºäºãæ们çç»éªæ¯å½ä½ çRedisç©çå
å使ç¨è¶
è¿å
åæ»å®¹éç3/5æ¶å°±ä¼å¼å§æ¯è¾å±é©äºã
ããå®æ¶å¿«ç
§æ¹å¼ï¼snapshotï¼
ããåºäºè¯å¥è¿½å æ件çæ¹å¼ï¼aofï¼
ããèæå
åï¼vmï¼
ããDiskstoreæ¹å¼
ãã第ä¸ç§æ¹å¼å°ç¨æ·IDä½ä¸ºæ¥æ¾key,æå
¶ä»ä¿¡æ¯å°è£
æä¸ä¸ªå¯¹è±¡ä»¥åºååçæ¹å¼åå¨ï¼è¿ç§æ¹å¼ç缺ç¹æ¯ï¼å¢å äºåºåå/ååºååçå¼éï¼å¹¶ä¸å¨éè¦ä¿®æ¹å
¶ä¸ä¸é¡¹ä¿¡æ¯æ¶ï¼éè¦ææ´ä¸ªå¯¹è±¡ååï¼å¹¶ä¸ä¿®æ¹æä½éè¦å¯¹å¹¶åè¿è¡ä¿æ¤ï¼å¼å
¥CASçå¤æé®é¢ã
ãã第äºç§æ¹æ³æ¯è¿ä¸ªç¨æ·ä¿¡æ¯å¯¹è±¡æå¤å°æåå°±åæå¤å°ä¸ªkey-value对å¿ï¼ç¨ç¨æ·ID+对åºå±æ§çå称ä½ä¸ºå¯ä¸æ è¯æ¥åå¾å¯¹åºå±æ§çå¼ï¼è½ç¶çå»äºåºååå¼éå并åé®é¢ï¼ä½æ¯ç¨æ·ID为éå¤åå¨ï¼å¦æåå¨å¤§éè¿æ ·çæ°æ®ï¼å
å浪费è¿æ¯é常å¯è§çã
ããé£ä¹Redisæä¾çHashå¾å¥½ç解å³äºè¿ä¸ªé®é¢ï¼RedisçHashå®é
æ¯å
é¨åå¨çValue为ä¸ä¸ªHashMapï¼å¹¶æä¾äºç´æ¥ååè¿ä¸ªMapæåçæ¥å£ï¼å¦ä¸å¾ï¼
ããä¹å°±æ¯è¯´ï¼Keyä»ç¶æ¯ç¨æ·ID, valueæ¯ä¸ä¸ªMapï¼è¿ä¸ªMapçkeyæ¯æåçå±æ§åï¼valueæ¯å±æ§å¼ï¼è¿æ ·å¯¹æ°æ®çä¿®æ¹åååé½å¯ä»¥ç´æ¥éè¿å
¶å
é¨MapçKeyï¼Redisé称å
é¨Mapçkey为fieldï¼ï¼ ä¹å°±æ¯éè¿ keyï¼ç¨æ·IDï¼ + fieldï¼å±æ§æ ç¾ï¼ å°±å¯ä»¥æä½å¯¹åºå±æ§æ°æ®äºï¼æ¢ä¸éè¦éå¤åå¨æ°æ®ï¼ä¹ä¸ä¼å¸¦æ¥åºååå并åä¿®æ¹æ§å¶çé®é¢ãå¾å¥½ç解å³äºé®é¢ã
ããè¿éåæ¶éè¦æ³¨æï¼Redisæä¾äºæ¥å£ï¼hgetallï¼å¯ä»¥ç´æ¥åå°å
¨é¨çå±æ§æ°æ®ï¼ä½æ¯å¦æå
é¨Mapçæåå¾å¤ï¼é£ä¹æ¶åå°éåæ´ä¸ªå
é¨Mapçæä½ï¼ç±äºRediså线ç¨æ¨¡åçç¼æ
ï¼è¿ä¸ªéåæä½å¯è½ä¼æ¯è¾èæ¶ï¼èå¦å
¶å®å®¢æ·ç«¯ç请æ±å®å
¨ä¸ååºï¼è¿ç¹éè¦æ ¼å¤æ³¨æã
ããå®ç°æ¹å¼ï¼
ããä¸é¢å·²ç»è¯´å°Redis Hash对åºValueå
é¨å®é
å°±æ¯ä¸ä¸ªHashMapï¼å®é
è¿éä¼æ2ç§ä¸åå®ç°ï¼è¿ä¸ªHashçæåæ¯è¾å°æ¶Redis为äºèçå
åä¼éç¨ç±»ä¼¼ä¸ç»´æ°ç»çæ¹å¼æ¥ç´§ååå¨ï¼èä¸ä¼éç¨çæ£çHashMapç»æï¼å¯¹åºçvalue redisObjectçencoding为zipmap,å½æåæ°éå¢å¤§æ¶ä¼èªå¨è½¬æçæ£çHashMap,æ¤æ¶encoding为htã
ããList
ãã常ç¨å½ä»¤ï¼
ããlpush,rpush,lpop,rpop,lrangeçã
ããåºç¨åºæ¯ï¼
ããRedis listçåºç¨åºæ¯é常å¤ï¼ä¹æ¯Redisæéè¦çæ°æ®ç»æä¹ä¸ï¼æ¯å¦twitterçå
³æ³¨å表ï¼ç²ä¸å表çé½å¯ä»¥ç¨Redisçlistç»ææ¥å®ç°ï¼æ¯è¾å¥½ç解ï¼è¿éä¸åéå¤ã
ããå®ç°æ¹å¼ï¼
ããRedis listçå®ç°ä¸ºä¸ä¸ªååé¾è¡¨ï¼å³å¯ä»¥æ¯æååæ¥æ¾åéåï¼æ´æ¹ä¾¿æä½ï¼ä¸è¿å¸¦æ¥äºé¨åé¢å¤çå
åå¼éï¼Rediså
é¨çå¾å¤å®ç°ï¼å
æ¬åéç¼å²éåçä¹é½æ¯ç¨çè¿ä¸ªæ°æ®ç»æã
ããSet
ãã常ç¨å½ä»¤ï¼
ããsadd,spop,smembers,sunion çã
ããåºç¨åºæ¯ï¼
ããRedis set对å¤æä¾çåè½ä¸list类似æ¯ä¸ä¸ªå表çåè½ï¼ç¹æ®ä¹å¤å¨äºsetæ¯å¯ä»¥èªå¨æéçï¼å½ä½ éè¦åå¨ä¸ä¸ªå表æ°æ®ï¼åä¸å¸æåºç°éå¤æ°æ®æ¶ï¼setæ¯ä¸ä¸ªå¾å¥½çéæ©ï¼å¹¶ä¸setæä¾äºå¤ææ个æåæ¯å¦å¨ä¸ä¸ªsetéåå
çéè¦æ¥å£ï¼è¿ä¸ªä¹æ¯listæä¸è½æä¾çã
ããå®ç°æ¹å¼ï¼
ããset çå
é¨å®ç°æ¯ä¸ä¸ª valueæ°¸è¿ä¸ºnullçHashMapï¼å®é
å°±æ¯éè¿è®¡ç®hashçæ¹å¼æ¥å¿«éæéçï¼è¿ä¹æ¯setè½æä¾å¤æä¸ä¸ªæåæ¯å¦å¨éåå
çåå ã
ããSorted set
ãã常ç¨å½ä»¤ï¼
ããzadd,zrange,zrem,zcardç
ãã使ç¨åºæ¯ï¼
ããRedis sorted setç使ç¨åºæ¯ä¸set类似ï¼åºå«æ¯setä¸æ¯èªå¨æåºçï¼èsorted setå¯ä»¥éè¿ç¨æ·é¢å¤æä¾ä¸ä¸ªä¼å
级ï¼scoreï¼çåæ°æ¥ä¸ºæåæåºï¼å¹¶ä¸æ¯æå
¥æåºçï¼å³èªå¨æåºãå½ä½ éè¦ä¸ä¸ªæåºç并ä¸ä¸éå¤çéåå表ï¼é£ä¹å¯ä»¥éæ©sorted setæ°æ®ç»æï¼æ¯å¦twitter çpublic timelineå¯ä»¥ä»¥å表æ¶é´ä½ä¸ºscoreæ¥åå¨ï¼è¿æ ·è·åæ¶å°±æ¯èªå¨ææ¶é´æ好åºçã
ããå®ç°æ¹å¼ï¼
ããRedis sorted setçå
é¨ä½¿ç¨HashMapåè·³è·è¡¨ï¼SkipListï¼æ¥ä¿è¯æ°æ®çåå¨åæåºï¼HashMapéæ¾çæ¯æåå°scoreçæ å°ï¼èè·³è·è¡¨éåæ¾çæ¯ææçæåï¼æåºä¾æ®æ¯HashMapéåçscore,使ç¨è·³è·è¡¨çç»æå¯ä»¥è·å¾æ¯è¾é«çæ¥æ¾æçï¼å¹¶ä¸å¨å®ç°ä¸æ¯è¾ç®åã
温馨提示:答案为网友推荐,仅供参考