?
listÀàÐÍ-ÌØµã
list ÊÇÒ»¸öÁ´±í½á¹¹£¬Ö÷Òª¹¦ÄÜÊÇ push¡¢pop¡¢»ñȡһ¸ö·¶Î§µÄËùÓÐÖµµÈµÈ£¬²Ù×÷ÖÐ keyÀí½âΪÁ´±íµÄÃû×Ö¡£
Redis µÄ listÀàÐÍÆäʵ¾ÍÊÇÒ»¸öÿ¸ö×ÓÔªËØ¶¼ÊÇ string ÀàÐ͵ÄË«ÏòÁ´±í¡£Á´±íµÄ×î´ó³¤¶ÈÊÇ(2µÄ 32 ´Î·½)¡£ÎÒÃÇ¿ÉÒÔͨ¹ý push,pop ²Ù×÷´ÓÁ´±íµÄÍ·²¿»òÕßβ²¿Ìí¼Óɾ³ýÔªËØ¡£ÕâʹµÃ list¼È¿ÉÒÔÓÃ×÷Õ»£¬Ò²¿ÉÒÔÓÃ×÷¶ÓÁС£
ÓÐÒâ˼µÄÊÇ list µÄ pop ²Ù×÷»¹ÓÐ×èÈû°æ±¾µÄ£¬µ±ÎÒÃÇ[lr]pop Ò»¸ö list ¶ÔÏóʱ£¬Èç¹û list Êǿգ¬»òÕß²»´æÔÚ£¬»áÁ¢¼´·µ»Ø nil¡£µ«ÊÇ×èÈû°æ±¾µÄ b[lr]pop ¿ÉÒÔÔò¿ÉÒÔ×èÈû£¬µ±È»¿ÉÒÔ¼Ó³¬Ê±Ê±¼ä£¬³¬Ê±ºóÒ²»á·µ»Ø nil¡£ÎªÊ²Ã´Òª×èÈû°æ±¾µÄ pop ÄØ£¬Ö÷ÒªÊÇΪÁ˱ÜÃâÂÖѯ¡£¾Ù¸ö¼òµ¥µÄÀý×ÓÈç¹ûÎÒÃÇÓà list À´ÊµÏÖÒ»¸ö¹¤×÷¶ÓÁС£ Ö´ÐÐÈÎÎñµÄ thread ¿ÉÒÔµ÷ÓÃ×èÈû°æ±¾µÄ pop È¥»ñÈ¡ÈÎÎñÕâÑù¾Í¿ÉÒÔ±ÜÃâÂÖѯȥ¼ì²éÊÇ·ñÓÐÈÎÎñ´æÔÚ¡£µ±ÈÎÎñÀ´Ê±ºò¹¤×÷Ï߳̿ÉÒÔÁ¢¼´·µ»Ø£¬Ò²¿ÉÒÔ±ÜÃâÂÖѯ´øÀ´µÄÑÓ³Ù¡£
listÀàÐÍ-Ó¦Óó¡¾°
Redis listÓ¦Óó¡¾°·Ç³£¶à£¬Ò²ÊÇRedis×îÖØÒªµÄÊý¾Ý½á¹¹Ö®Ò»£¬±ÈÈç΢²©µÄ¹Ø×¢ÁÐ±í£¬·ÛË¿ÁбíµÈ¶¼¿ÉÒÔÓÃRedisµÄlist½á¹¹À´ÊµÏÖ£»²©¿ÍʵÏÖÖУ¬¿ÉΪÿƪÈÕÖ¾ÉèÖÃÒ»¸ölist£¬ÔÚ¸ÃlistÖÐÍÆÈë½ø²©¿ÍÆÀÂÛ£»Ò²¿ÉÒÔʹÓÃRedis listʵÏÖÏûÏ¢¶ÓÁС£
listÖеÄÊý¾ÝÂß¼ÉÏ´æÔÚ˳Ðò¹ØÏµ£¨Êý×éµÄÏÂ±í£©£¬Êʺϴ洢´øÓÐ˳ÐòÌØÐÔ£¨¿Õ¼ä¡¢Ê±¼äÊôÐÔ£©µÄÊý¾Ý¡£±ÈÈ磬¼Ç¼Óû§ÔÚÍøÕ¾ÉÏä¯ÀÀÉÌÆ·id£¬ÕâÖÖ´øÊ±¼äÊôÐÔµÄÊý¾Ý¿ÉÒÔÓÃÀ´·ÖÎöÓû§µÄ¹ºÎïÐÐΪ¡£
list×÷Ϊqueue£¬Ò»¶Ë¼ÓÈëÊý¾Ý£¬ÁíÒ»¶Ë¶ÁÈ¡Êý¾Ý£¬×îµäÐ͵ľÍÊÇÉú²úÕß/Ïû·ÑÕßÄ£ÐÍ£¬±ÈÈ磺ÉÌÆ·Ãëɱ£¬´ÓÒѾ³õʼ»¯¶ÓÁÐÖÐpop³öÊý¾Ý£¬Ö±µ½¶ÓÁÐΪ¿Õ¡£
list×÷Ϊstack£¬Ö»²Ù×÷listµÄÒ»¶Ë£¬Êý¾ÝÏȽøºó³ö¡£
list³£¼ûÃüÁî
LPUSH
LPUSH key value [value ¡]
½«Ò»¸ö»ò¶à¸öÖµ value ²åÈëµ½Áбí key µÄ±íÍ·Èç¹ûÓжà¸ö value Öµ£¬ÄÇô¸÷¸ö value Öµ°´´Ó×óµ½ÓÒµÄ˳ÐòÒÀ´Î²åÈëµ½±íÍ·£º±ÈÈç˵£¬¶Ô¿ÕÁбí mylistÖ´ÐÐÃüÁî LPUSH mylist a b c £¬ÁбíµÄÖµ½«ÊÇ c b a £¬ÕâµÈͬÓÚÔ×ÓÐÔµØÖ´ÐÐ LPUSH mylist a ¡¢LPUSH mylist b ºÍ LPUSH mylist c Èý¸öÃüÁî¡£
Èç¹û key ²»´æÔÚ£¬Ò»¸ö¿ÕÁбí»á±»´´½¨²¢Ö´ÐÐLPUSH ²Ù×÷¡£
µ± key ´æÔÚµ«²»ÊÇÁбíÀàÐÍʱ£¬·µ»ØÒ»¸ö´íÎó¡£
ʱ¼ä¸´ÔÓ¶È£º O(1)
·µ»ØÖµ£º Ö´ÐÐLPUSH ÃüÁîºó£¬ÁбíµÄ³¤¶È¡£
127.0.0.1:6379[15]> LPUSH languages python
(integer) 1
127.0.0.1:6379[15]> LPUSH languages python
(integer) 2
127.0.0.1:6379[15]> LRANGE languages 0 -1
1) "python"
2) "python"
127.0.0.1:6379[15]> LPUSH mylist a b c
(integer) 3
127.0.0.1:6379[15]> LRANGE mylist 0 -1
1) "c"
2) "b"
3) "a"
LPUSHX
LPUSHX key value
½«Öµ value ²åÈëµ½Áбí key µÄ±íÍ·£¬µ±ÇÒ½öµ± key ´æÔÚ²¢ÇÒÊÇÒ»¸öÁÐ±í¡£
ºÍLPUSH ÃüÁîÏà·´£¬µ± key ²»´æÔÚʱ£¬LPUSHX ÃüÁîʲôҲ²»×ö¡£
ʱ¼ä¸´ÔÓ¶È£º O(1)
·µ»ØÖµ£º LPUSHX ÃüÁîÖ´ÐÐÖ®ºó£¬±íµÄ³¤¶È¡£
127.0.0.1:6379[15]> LLEN greet (integer) 0 127.0.0.1:6379[15]> LPUSHX greet "hello" (integer) 0 127.0.0.1:6379[15]> LPUSH greet "hello" (integer) 1 127.0.0.1:6379[15]> LPUSHX greet "good morning" (integer) 2 127.0.0.1:6379[15]> LRANGE greet 0 -1 1) "good morning" 2) "hello"
RPUSH
RPUSH key value [value ¡]
½«Ò»¸ö»ò¶à¸öÖµ value ²åÈëµ½Áбí key µÄ±íβ (×îÓÒ±ß)¡£
Èç¹ûÓжà¸ö value Öµ£¬ÄÇô¸÷¸ö value Öµ°´´Ó×óµ½ÓÒµÄ˳ÐòÒÀ´Î²åÈëµ½±íβ£º±ÈÈç¶ÔÒ»¸ö¿ÕÁбí mylistÖ´ÐÐ RPUSH mylist a b c £¬µÃ³öµÄ½á¹ûÁбíΪ a b c £¬µÈͬÓÚÖ´ÐÐÃüÁî RPUSH mylist a ¡¢RPUSH mylist b ¡¢RPUSH mylist c ¡£
Èç¹û key ²»´æÔÚ£¬Ò»¸ö¿ÕÁбí»á±»´´½¨²¢Ö´ÐÐRPUSH ²Ù×÷¡£
µ± key ´æÔÚµ«²»ÊÇÁбíÀàÐÍʱ£¬·µ»ØÒ»¸ö´íÎó¡£
ʱ¼ä¸´ÔÓ¶È£º O(1)
·µ»ØÖµ£º Ö´ÐÐRPUSH ²Ù×÷ºó£¬±íµÄ³¤¶È¡£
127.0.0.1:6379[15]> RPUSH languages c (integer) 1 127.0.0.1:6379[15]> RPUSH languages c (integer) 2 127.0.0.1:6379[15]> LRANGE languages 0 -1 1) "c" 2) "c" 127.0.0.1:6379[15]> RPUSH mylist a b c (integer) 3 127.0.0.1:6379[15]> LRANGE mylist 0 -1 1) "a" 2) "b" 3) "c"
RPUSHX
RPUSHX key value
½«Öµ value ²åÈëµ½Áбí key µÄ±í⣬µ±ÇÒ½öµ± key ´æÔÚ²¢ÇÒÊÇÒ»¸öÁÐ±í¡£
ºÍRPUSH ÃüÁîÏà·´£¬µ± key ²»´æÔÚʱ£¬RPUSHX ÃüÁîʲôҲ²»×ö¡£
ʱ¼ä¸´ÔÓ¶È£º O(1)
·µ»ØÖµ£º RPUSHX ÃüÁîÖ´ÐÐÖ®ºó£¬±íµÄ³¤¶È¡£
127.0.0.1:6379[15]> LLEN greet (integer) 0 127.0.0.1:6379[15]> LPUSHX greet "hello" (integer) 0 127.0.0.1:6379[15]> LPUSH greet "hello" (integer) 1 127.0.0.1:6379[15]> LPUSHX greet "good morning" (integer) 2 127.0.0.1:6379[15]> LRANGE greet 0 -1 1) "good morning" 2) "hello"
LPOP
LPOP key
ÒÆ³ý²¢·µ»ØÁбí key µÄÍ·ÔªËØ¡£
ʱ¼ä¸´ÔÓ¶È£º O(1)
·µ»ØÖµ£º
¡¡¡¡ÁбíµÄÍ·ÔªËØ¡£
¡¡¡¡µ± key ²»´æÔÚʱ£¬·µ»Ø nil ¡£
127.0.0.1:6379[15]> LLEN course (integer) 0 127.0.0.1:6379[15]> RPUSH course algorithm001 (integer) 1 127.0.0.1:6379[15]> RPUSH course c++101 (integer) 2 127.0.0.1:6379[15]> LPOP course "algorithm001"
RPOP
RPOP key
ÒÆ³ý²¢·µ»ØÁбí key µÄÎ²ÔªËØ¡£
ʱ¼ä¸´ÔÓ¶È£º O(1)
·µ»ØÖµ£º
¡¡¡¡ÁбíµÄÎ²ÔªËØ¡£
¡¡¡¡µ± key ²»´æÔÚʱ£¬·µ»Ø nil ¡£
127.0.0.1:6379[15]> RPUSH mylist "one" (integer) 1 127.0.0.1:6379[15]> RPUSH mylist "two" (integer) 2 127.0.0.1:6379[15]> RPUSH mylist "three" (integer) 3 127.0.0.1:6379[15]> RP