Äú¿ÉÒÔ¾èÖú£¬Ö§³ÖÎÒÃǵĹ«ÒæÊÂÒµ¡£

1Ôª 10Ôª 50Ôª





ÈÏÖ¤Â룺  ÑéÖ¤Âë,¿´²»Çå³þ?Çëµã»÷Ë¢ÐÂÑéÖ¤Âë ±ØÌî



  ÇóÖª ÎÄÕ ÎÄ¿â Lib ÊÓÆµ iPerson ¿Î³Ì ÈÏÖ¤ ×Éѯ ¹¤¾ß ½²×ù Model Center   Code  
»áÔ±   
   
 
     
   
 ¶©ÔÄ
  ¾èÖú
ѧRedisÕâÆª¾Í¹»ÁË
 
×÷ÕߣºÍõÒ¯¿Æ¼¼
  2221  次浏览      45
2020-5-7
 
±à¼­ÍƼö:
±¾ÎÄÖ÷Òª½éÉÜRedis Êý¾ÝÀàÐÍ£¬Í¨¹ýʵÀýÑÝʾÁË·¢²¼¶©ÔÄÊÇÈçºÎ¹¤×÷µÄ,²¢¶ÔRedis ÊÂÎñÃüÁ³Ö¾Ã»¯¡¢ÉÚ±ø¡¢·ÖƬ½øÐÐÁ˲ûÊö£¬Ï£Íû¶ÔÄúÓÐËù°ïÖú¡£
±¾ÎÄÀ´×Ô½ñÈÕÍ·Ìõ£¬ÓÉ»ðÁú¹ûÈí¼þAlice±à¼­¡¢ÍƼö¡£

Redis ¼ò½é

Redis ÊÇÍêÈ«¿ªÔ´Ãâ·ÑµÄ£¬×ñÊØ BSD ЭÒ飬ÊÇÒ»¸ö¸ßÐÔÄÜµÄ key - value Êý¾Ý¿â

Redis Óë ÆäËû key - value »º´æ²úÆ·ÓÐÒÔÏÂÈý¸öÌØµã£º

Redis Ö§³ÖÊý¾Ý³Ö¾Ã»¯£¬¿ÉÒÔ½«ÄÚ´æÖеÄÊý¾Ý±£´æÔÚ´ÅÅÌÖУ¬ÖØÆôµÄʱºò¿ÉÒÔÔٴμÓÔØ½øÐÐʹÓá£

Redis ²»½ö½öÖ§³Ö¼òµ¥µÄ key - value ÀàÐ͵ÄÊý¾Ý£¬Í¬Ê±»¹Ìṩ list£¬set£¬zset£¬hash µÈÊý¾Ý½á¹¹µÄ´æ´¢

Redis Ö§³ÖÊý¾ÝµÄ±¸·Ý£¬¼´ master - slave ģʽµÄÊý¾Ý±¸·Ý

Redis ÓÅÊÆ

ÐÔÄܼ«¸ß ¨C Redis ¶ÁµÄËÙ¶ÈÊÇ 110000 ´Î /s, дµÄËÙ¶ÈÊÇ 81000 ´Î /s ¡£

·á¸»µÄÊý¾ÝÀàÐÍ - Redis Ö§³Ö¶þ½øÖư¸ÀýµÄ Strings, Lists, Hashes, Sets ¼° Ordered Sets Êý¾ÝÀàÐͲÙ×÷¡£

Ô­×ÓÐÔ - Redis µÄËùÓвÙ×÷¶¼ÊÇÔ­×ÓÐԵģ¬Òâ˼¾ÍÊÇҪô³É¹¦Ö´ÐÐҪôʧ°ÜÍêÈ«²»Ö´ÐС£µ¥¸ö²Ù×÷ÊÇÔ­×ÓÐԵġ£¶à¸ö²Ù×÷Ò²Ö§³ÖÊÂÎñ£¬¼´Ô­×ÓÐÔ£¬Í¨¹ý MULTI ºÍ EXEC Ö¸Áî°üÆðÀ´¡£

ÆäËûÌØÐÔ - Redis »¹Ö§³Ö publish/subscribe ֪ͨ£¬key ¹ýÆÚµÈÌØÐÔ¡£

Redis Êý¾ÝÀàÐÍ

Redis Ö§³Ö 5 ÖÐÊý¾ÝÀàÐÍ£ºstring£¨×Ö·û´®£©£¬hash£¨¹þÏ££©£¬list£¨ÁÐ±í£©£¬set£¨¼¯ºÏ£©£¬zset£¨sorted set£ºÓÐÐò¼¯ºÏ£©¡£

string

string ÊÇ redis ×î»ù±¾µÄÊý¾ÝÀàÐÍ¡£Ò»¸ö key ¶ÔÓ¦Ò»¸ö value¡£

string ÊǶþ½øÖư²È«µÄ¡£Ò²¾ÍÊÇ˵ redis µÄ string ¿ÉÒÔ°üº¬ÈκÎÊý¾Ý¡£±ÈÈç jpg ͼƬ»òÕßÐòÁл¯µÄ¶ÔÏó¡£

string ÀàÐÍÊÇ redis ×î»ù±¾µÄÊý¾ÝÀàÐÍ£¬string ÀàÐ͵ÄÖµ×î´óÄÜ´æ´¢ 512 MB¡£

Àí½â£ºstring ¾ÍÏñÊÇ java ÖÐµÄ map Ò»Ñù£¬Ò»¸ö key ¶ÔÓ¦Ò»¸ö value

 

127.0.0.1:6379> set hello world
OK
127.0.0.1:6379> get hello
"world"

hash

Redis hash ÊÇÒ»¸ö¼üÖµ¶Ô£¨key - value£©¼¯ºÏ¡£

Redis hash ÊÇÒ»¸ö string ÀàÐ굀 key ºÍ value µÄÓ³Éä±í£¬hash ÌØ±ðÊʺÏÓÃÓÚ´æ´¢¶ÔÏó¡£

Àí½â£º¿ÉÒÔ½« hash ¿´³ÉÒ»¸ö key - value µÄ¼¯ºÏ¡£Ò²¿ÉÒÔ½«ÆäÏë³ÉÒ»¸ö hash ¶ÔÓ¦×Ŷà¸ö string¡£

Óë string Çø±ð£ºstring ÊÇ Ò»¸ö key - value ¼üÖµ¶Ô£¬¶ø hash ÊǶà¸ö key - value ¼üÖµ¶Ô¡£

// hash-key ¿ÉÒÔ¿´³ÉÊÇÒ»¸ö¼üÖµ¶Ô¼¯ºÏµÄÃû×Ö,ÔÚÕâÀï·Ö±ðΪÆäÌí¼ÓÁË sub-key1 : value1¡¢
sub-key2 : value2¡¢sub-key3 : value3 ÕâÈý¸ö¼üÖµ¶Ô
127.0.0.1:6379> hset hash-key sub-key1 value1
(integer) 1
127.0.0.1:6379> hset hash-key sub-key2 value2
(integer) 1
127.0.0.1:6379> hset hash-key sub-key3 value3
(integer) 1
// »ñÈ¡ hash-key Õâ¸ö hash ÀïÃæµÄËùÓмüÖµ¶Ô
127.0.0.1:6379> hgetall hash-key
1) "sub-key1"
2) "value1"
3) "sub-key2"
4) "value2"
5) "sub-key3"
6) "value3"
// ɾ³ý hash-key Õâ¸ö hash ÀïÃæµÄ sub-key2 ¼üÖµ¶Ô
127.0.0.1:6379> hdel hash-key sub-key2
(integer) 1
127.0.0.1:6379> hget hash-key sub-key2
(nil)
127.0.0.1:6379> hget hash-key sub-key1
"value1"
127.0.0.1:6379> hgetall hash-key
1) "sub-key1"
2) "value1"
3) "sub-key3"
4) "value3"

list

Redis ÁбíÊǼòµ¥µÄ×Ö·û´®ÁÐ±í£¬°´ÕÕ²åÈë˳ÐòÅÅÐò¡£ÎÒÃÇ¿ÉÒÔÍøÁбíµÄ×ó±ß»òÕßÓÒ±ßÌí¼ÓÔªËØ¡£

127.0.0.1:6379> rpush list-key v1
(integer) 1
127.0.0.1:6379> rpush list-key v2
(integer) 2
127.0.0.1:6379> rpush list-key v1
(integer) 3
127.0.0.1:6379> lrange list-key 0 -1
1) "v1"
2) "v2"
3) "v1"
127.0.0.1:6379> lindex list-key 1
"v2"
127.0.0.1:6379> lpop list
(nil)
127.0.0.1:6379> lpop list-key
"v1"
127.0.0.1:6379> lrange list-key 0 -1
1) "v2"
2) "v1"

ÎÒÃÇ¿ÉÒÔ¿´³ö list ¾ÍÊÇÒ»¸ö¼òµ¥µÄ×Ö·û´®¼¯ºÏ£¬ºÍ Java ÖÐµÄ list Ïà²î²»´ó£¬Çø±ð¾ÍÊÇÕâÀïµÄ list ´æ·ÅµÄÊÇ×Ö·û´®¡£list ÄÚµÄÔªËØÊÇ¿ÉÖØ¸´µÄ¡£

set

redis µÄ set ÊÇ×Ö·û´®ÀàÐ͵ÄÎÞÐò¼¯ºÏ¡£¼¯ºÏÊÇͨ¹ý¹þÏ£±íʵÏֵģ¬Òò´ËÌí¼Ó¡¢É¾³ý¡¢²éÕҵĸ´ÔӶȶ¼ÊÇ O£¨1£©¡£

127.0.0.1:6379> sadd k1 v1
(integer) 1
127.0.0.1:6379> sadd k1 v2
(integer) 1
127.0.0.1:6379> sadd k1 v3
(integer) 1
127.0.0.1:6379> sadd k1 v1
(integer) 0
127.0.0.1:6379> smembers k1
1) "v3"
2) "v2"
3) "v1"
127.0.0.1:6379>
127.0.0.1:6379> sismember k1 k4
(integer) 0
127.0.0.1:6379> sismember k1 v1
(integer) 1
127.0.0.1:6379> srem k1 v2
(integer) 1
127.0.0.1:6379> srem k1 v2
(integer) 0
127.0.0.1:6379> smembers k1
1) "v3"
2) "v1"

redis µÄ set Óë java ÖÐµÄ set »¹ÊÇÓеãÇø±ðµÄ¡£redis µÄ set ÊÇÒ»¸ö key ¶ÔÓ¦×Å ¶à¸ö×Ö·û´®ÀàÐ굀 value£¬Ò²ÊÇÒ»¸ö×Ö·û´®ÀàÐ͵ļ¯ºÏ£¬µ«ÊÇºÍ redis µÄ list ²»Í¬µÄÊÇ set ÖеÄ×Ö·û´®¼¯ºÏÔªËØ²»ÄÜÖØ¸´£¬µ«ÊÇ list ¿ÉÒÔ¡£

Zset

redis zset ºÍ set Ò»Ñù¶¼ÊÇ ×Ö·û´®ÀàÐÍÔªËØµÄ¼¯ºÏ£¬²¢ÇÒ¼¯ºÏÄÚµÄÔªËØ²»ÄÜÖØ¸´¡£

²»Í¬µÄÊÇ zset ÿ¸öÔªËØ¶¼»á¹ØÁªÒ»¸ö double ÀàÐ͵ķÖÊý¡£redis ͨ¹ý·ÖÊýÀ´Îª¼¯ºÏÖеijÉÔ±½øÐдÓСµ½´óµÄÅÅÐò¡£

zset µÄÔªËØÊÇΨһµÄ£¬µ«ÊÇ·ÖÊý£¨score£©È´¿ÉÒÔÖØ¸´¡£

127.0.0.1:6379> zadd zset-key 728 member1
(integer) 1
127.0.0.1:6379> zadd zset-key 982 member0
(integer) 1
127.0.0.1:6379> zadd zset-key 982 member0
(integer) 0
127.0.0.1:6379> zrange zset-key 0 -1 withscores
1) "member1"
2) "728"
3) "member0"
4) "982"
127.0.0.1:6379> zrangebyscore zset-key 0 800 withscores
1) "member1"
2) "728"
127.0.0.1:6379> zrem zset-key member1
(integer) 1
127.0.0.1:6379> zrem zset-key member1
(integer) 0
127.0.0.1:6379> zrange zset-key 0 -1 withscores
1) "member0"
2) "982"

zset Êǰ´ÕÕ ·ÖÊäµÄ´óСÀ´ÅÅÐòµÄ¡£

С×ܽá

ÀàÐͼò½éÌØÐÔ³¡¾°string£¨×Ö·û´®£©¶þ½øÖư²È«¿ÉÒÔ°üº¬ÈκÎÊý¾Ý£¬±ÈÈç jpg ͼƬ»òÕßÐòÁл¯µÄ¶ÔÏó£¬Ò»¸ö¼ü×î´óÄÜ´æ´¢ 521M---Hash£¨¹þÏ££©¼üÖµ¶Ô¼¯ºÏ£¬¼´±à³ÌÓïÑÔÖÐµÄ Map ÀàÐÍÊʺϴ洢¶ÔÏ󣬲¢ÇÒ¿ÉÒÔÏñÊý¾Ý¿âÖÐ update Ò»ÑùÖ»ÐÞ¸ÄijһÏîÊôÐÔÖµ´æ´¢¡¢¶ÁÈ¡¡¢ÐÞ¸ÄÓû§ÊôÐÔList£¨ÁÐ±í£©Ë«ÏòÁ´±íÔöɾ¿ì£¬ÌṩÁ˲Ù×÷ijһ¶ÎÔªËØµÄ API1¡¢×îÐÂÏûÏ¢ÅÅÐеȹ¦ÄÜ£¨ÅóÓÑȦµÄʱ¼äÏߣ©2¡¢ÏûÏ¢¶ÓÁÐSet£¨¼¯ºÏ£©¹þÏ£±íʵÏÖ£¬ÔªËز»ÄÜÖØ¸´Ìí¼Óɾ³ý²éÕҵĸ´ÔӶȶ¼ÊÇ O(1);Ϊ¼¯ºÏÌṩÁËÇó½»¼¯¡¢²¢¼¯¡¢²î¼¯µÈ²Ù×÷¹²Í¬ºÃÓÑ£»ÀûÓÃΨһÐÔ£¬Í³¼Æ·ÃÎÊÍøÕ¾µÄËùÓжÀÁ¢ ip£»ºÃÓÑÍÆ¼öʱ£¬¸ù¾Ý tag Çó½»¼¯£¬´óÓÚij¸öãÐÖµ¾Í¿ÉÒÔÍÆ¼öZset£¨ÓÐÐò¼¯ºÏ£©½« Set ÖеÄÔªËØÔö¼ÓÒ»¸öÈ¨ÖØ²ÎÊý score£¬ÔªËذ´ score ÓÐÐòÅÅÁÐÊý¾Ý²åÈ뼯ºÏʱ£¬ÒѾ­½øÐÐÌìÈ»ÅÅÐòÅÅÐаñ£»´øÈ¨ÖصÄÏûÏ¢¶ÓÁÐ

»ù±¾ÃüÁî

×ÔÐвéÔÄ

·¢²¼¶©ÔÄ

Ò»°ã²»ÓÃ Redis ×öÏûÏ¢·¢²¼¶©ÔÄ¡£

¼ò½é

Redis ·¢²¼¶©ÔÄ (pub/sub) ÊÇÒ»ÖÖÏûϢͨÐÅģʽ£º·¢ËÍÕß (pub) ·¢ËÍÏûÏ¢£¬¶©ÔÄÕß (sub) ½ÓÊÕÏûÏ¢¡£

Redis ¿Í»§¶Ë¿ÉÒÔ¶©ÔÄÈÎÒâÊýÁ¿µÄƵµÀ¡£

ÏÂͼչʾÁËÆµµÀ channel1 £¬ ÒÔ¼°¶©ÔÄÕâ¸öƵµÀµÄÈý¸ö¿Í»§¶Ë ¡ª¡ª client2 ¡¢ client5 ºÍ client1 Ö®¼äµÄ¹ØÏµ£º

µ±ÓÐÐÂÏûϢͨ¹ý PUBLISH ÃüÁî·¢Ë͸øÆµµÀ channel1 ʱ£¬ Õâ¸öÏûÏ¢¾Í»á±»·¢Ë͸ø¶©ÔÄËüµÄÈý¸ö¿Í»§¶Ë£º

ʵÀý

ÒÔÏÂʵÀýÑÝʾÁË·¢²¼¶©ÔÄÊÇÈçºÎ¹¤×÷µÄ¡£ÔÚÎÒÃÇʵÀýÖÐÎÒÃÇ´´½¨Á˶©ÔÄÆµµÀÃûΪ redisChat:

127.0.0.1:6379> SUBsCRIBE redisChat
Reading messages... (press Ctrl-C to quit)
1) "subscribe"
2) "redisChat"

ÏÖÔÚ£¬ÎÒÃÇÏÈÖØÐ¿ªÆô¸ö redis ¿Í»§¶Ë£¬È»ºóÔÚͬһ¸öƵµÀ redisChat ·¢²¼Á½´ÎÏûÏ¢£¬¶©ÔÄÕß¾ÍÄܽÓÊÕµ½ÏûÏ¢¡£

127.0.0.1:6379> PUBLISH redisChat "send message"
(integer) 1
127.0.0.1:6379> PUBLISH redisChat "hello world"
(integer) 1
# ¶©ÔÄÕߵĿͻ§¶ËÏÔʾÈçÏÂ
1) "message"
2) "redisChat"
3) "send message"
1) "message"
2) "redisChat"
3) "hello world"

·¢²¼¶©Ôij£ÓÃÃüÁî

×ÔÐвéÔÄ

ÊÂÎñ

redis ÊÂÎñÒ»´Î¿ÉÒÔÖ´ÐжàÌõÃüÁ·þÎñÆ÷ÔÚÖ´ÐÐÃüÁîÆÚ¼ä£¬²»»áÈ¥Ö´ÐÐÆäËû¿Í»§¶ËµÄÃüÁîÇëÇó¡£

ÊÂÎñÖеĶàÌõÃüÁî±»Ò»´ÎÐÔ·¢Ë͸ø·þÎñÆ÷£¬¶ø²»ÊÇÒ»ÌõÒ»ÌõµØ·¢ËÍ£¬ÕâÖÖ·½Ê½±»³ÆÎªÁ÷Ë®Ïߣ¬Ëü¿ÉÒÔ¼õÉÙ¿Í»§¶ËÓë·þÎñÆ÷Ö®¼äµÄÍøÂçͨÐÅ´ÎÊý´Ó¶øÌáÉýÐÔÄÜ¡£

Redis ×î¼òµ¥µÄÊÂÎñʵÏÖ·½Ê½ÊÇʹÓà MULTI ºÍ EXEC ÃüÁÊÂÎñ²Ù×÷°üΧÆðÀ´¡£

ÅúÁ¿²Ù×÷ÔÚ·¢ËÍ EXEC ÃüÁîǰ±»·ÅÈë¶ÓÁлº´æ¡£

ÊÕµ½ EXEC ÃüÁîºó½øÈëÊÂÎñÖ´ÐУ¬ÊÂÎñÖÐÈÎÒâÃüÁîÖ´ÐÐʧ°Ü£¬ÆäÓàÃüÁîÒÀÈ»±»Ö´ÐС£Ò²¾ÍÊÇ˵ Redis ÊÂÎñ²»±£Ö¤Ô­×ÓÐÔ¡£

ÔÚÊÂÎñÖ´Ðйý³ÌÖУ¬ÆäËû¿Í»§¶ËÌá½»µÄÃüÁîÇëÇó²»»á²åÈëµ½ÊÂÎñÖ´ÐÐÃüÁîÐòÁÐÖС£

Ò»¸öÊÂÎñ´Ó¿ªÊ¼µ½Ö´ÐлᾭÀúÒÔÏÂÈý¸ö½×¶Î£º

¿ªÊ¼ÊÂÎñ¡£

ÃüÁîÈë¶Ó¡£

Ö´ÐÐÊÂÎñ¡£

ʵÀý

ÒÔÏÂÊÇÒ»¸öÊÂÎñµÄÀý×Ó£¬ ËüÏÈÒÔ MULTI ¿ªÊ¼Ò»¸öÊÂÎñ£¬ È»ºó½«¶à¸öÃüÁîÈë¶Óµ½ÊÂÎñÖУ¬ ×îºóÓÉ EXEC ÃüÁî´¥·¢ÊÂÎñ£¬ Ò»²¢Ö´ÐÐÊÂÎñÖеÄËùÓÐÃüÁ

redis 127.0.0.1:6379> MULTI
OK
redis 127.0.0.1:6379> SET book-name "Mastering C++ in 21 days"
QUEUED
redis 127.0.0.1:6379> GET book-name
QUEUED
redis 127.0.0.1:6379> SADD tag "C++" "Programming" "Mastering Series"
QUEUED
redis 127.0.0.1:6379> SMEMBERS tag
QUEUED
redis 127.0.0.1:6379> EXEC
1) OK
2) "Mastering C++ in 21 days"
3) (integer) 3
4) 1) "Mastering Series"
2) "C++"
3) "Programming"

µ¥¸ö Redis ÃüÁîµÄÖ´ÐÐÊÇÔ­×ÓÐԵ쬵« Redis ûÓÐÔÚÊÂÎñÉÏÔö¼ÓÈκÎά³ÖÔ­×ÓÐԵĻúÖÆ£¬ËùÒÔ Redis ÊÂÎñµÄÖ´Ðв¢²»ÊÇÔ­×ÓÐԵġ£

ÊÂÎñ¿ÉÒÔÀí½âΪһ¸ö´ò°üµÄÅúÁ¿Ö´Ðнű¾£¬µ«ÅúÁ¿Ö¸Áî²¢·ÇÔ­×Ó»¯µÄ²Ù×÷£¬ÖмäijÌõÖ¸ÁîµÄʧ°Ü²»»áµ¼ÖÂÇ°ÃæÒÑ×öÖ¸ÁîµÄ»Ø¹ö£¬Ò²²»»áÔì³ÉºóÐøµÄÖ¸Áî²»×ö¡£

ÕâÊǹÙÍøÉϵÄ˵Ã÷ From redis docs on transactions:

It's important to note that even when a command fails, all the other commands in the queue are processed ¨C Redis will not stop the processing of commands.

±ÈÈ磺

redis 127.0.0.1:7000> multi
OK
redis 127.0.0.1:7000> set a aaa
QUEUED
redis 127.0.0.1:7000> set b bbb
QUEUED
redis 127.0.0.1:7000> set c ccc
QUEUED
redis 127.0.0.1:7000> exec
1) OK
2) OK
3) OK

Èç¹ûÔÚ set b bbb ´¦Ê§°Ü£¬set a Òѳɹ¦²»»á»Ø¹ö£¬set c »¹»á¼ÌÐøÖ´ÐС£

Redis ÊÂÎñÃüÁî

ϱíÁгöÁË redis ÊÂÎñµÄÏà¹ØÃüÁ

ÐòºÅÃüÁî¼°ÃèÊö1DISCARD È¡ÏûÊÂÎñ£¬·ÅÆúÖ´ÐÐÊÂÎñ¿éÄÚµÄËùÓÐÃüÁî¡£2EXEC Ö´ÐÐËùÓÐÊÂÎñ¿éÄÚµÄÃüÁî¡£3MULTI ±ê¼ÇÒ»¸öÊÂÎñ¿éµÄ¿ªÊ¼¡£4UNWATCH È¡Ïû WATCH ÃüÁî¶ÔËùÓÐ key µÄ¼àÊÓ¡£5WATCH key [key ...] ¼àÊÓÒ»¸ö (»ò¶à¸ö) key £¬Èç¹ûÔÚÊÂÎñÖ´ÐÐ֮ǰÕâ¸ö (»òÕâЩ) key ±»ÆäËûÃüÁîËù¸Ä¶¯£¬ÄÇôÊÂÎñ½«±»´ò¶Ï¡£

³Ö¾Ã»¯

Redis ÊÇÄÚ´æÐÍÊý¾Ý¿â£¬ÎªÁ˱£Ö¤Êý¾ÝÔڶϵçºó²»»á¶ªÊ§£¬ÐèÒª½«ÄÚ´æÖеÄÊý¾Ý³Ö¾Ã»¯µ½Ó²ÅÌÉÏ¡£

RDB ³Ö¾Ã»¯

½«Ä³¸öʱ¼äµãµÄËùÓÐÊý¾Ý¶¼´æ·Åµ½Ó²ÅÌÉÏ¡£

¿ÉÒÔ½«¿ìÕÕ¸´ÖƵ½ÆäËû·þÎñÆ÷´Ó¶ø´´½¨¾ßÓÐÏàͬÊý¾ÝµÄ·þÎñÆ÷¸±±¾¡£

Èç¹ûϵͳ·¢Éú¹ÊÕÏ£¬½«»á¶ªÊ§×îºóÒ»´Î´´½¨¿ìÕÕÖ®ºóµÄÊý¾Ý¡£

Èç¹ûÊý¾ÝÁ¿´ó£¬±£´æ¿ìÕÕµÄʱ¼ä»áºÜ³¤¡£

AOF ³Ö¾Ã»¯

½«Ð´ÃüÁîÌí¼Óµ½ AOF Îļþ£¨append only file£©Ä©Î²¡£

ʹÓà AOF ³Ö¾Ã»¯ÐèÒªÉèÖÃͬ²½Ñ¡Ï´Ó¶øÈ·±£Ð´ÃüÁîͬ²½µ½´ÅÅÌÎļþÉϵÄʱ»ú¡£ÕâÊÇÒòΪ¶ÔÎļþ½øÐÐдÈë²¢²»»áÂíÉϽ«ÄÚÈÝͬ²½µ½´ÅÅÌÉÏ£¬¶øÊÇÏÈ´æ´¢µ½»º³åÇø£¬È»ºóÓɲÙ×÷ϵͳ¾ö¶¨Ê²Ã´Ê±ºòͬ²½µ½´ÅÅÌ¡£

Ñ¡Ïîͬ²½ÆµÂÊalwaysÿ¸öдÃüÁͬ²½eyerysecÿÃëͬ²½Ò»´ÎnoÈòÙ×÷ϵͳÀ´¾ö¶¨ºÎʱͬ²½

always Ñ¡Ïî»áÑÏÖØ¼õµÍ·þÎñÆ÷µÄÐÔÄÜ

everysec Ñ¡Ïî±È½ÏºÏÊÊ£¬¿ÉÒÔ±£Ö¤ÏµÍ³±ÀÀ£Ê±Ö»»á¶ªÊ§Ò»Ãë×óÓÒµÄÊý¾Ý£¬²¢ÇÒ Redis ÿÃëÖ´ÐÐÒ»´Îͬ²½¶Ô·þÎñÆ÷¼¸ºõûÓÐÈκÎÓ°Ïì¡£

no Ñ¡Ïî²¢²»Äܸø·þÎñÆ÷ÐÔÄÜ´øÀ´¶à´óµÄÌáÉý£¬¶øÇÒ»áÔö¼Óϵͳ±ÀÀ£Ê±Êý¾Ý¶ªÊ§µÄÊýÁ¿¡£

Ëæ×Å·þÎñÆ÷дÇëÇóµÄÔö¶à£¬AOF Îļþ»áÔ½À´Ô½´ó¡£Redis ÌṩÁËÒ»ÖÖ½« AOF ÖØÐ´µÄÌØÐÔ£¬Äܹ»È¥³ý AOF ÎļþÖеÄÈßÓàдÃüÁî¡£

¸´ÖÆ

ͨ¹ýʹÓà slaveof host port ÃüÁîÀ´ÈÃÒ»¸ö·þÎñÆ÷³ÉΪÁíÒ»¸ö·þÎñÆ÷µÄ´Ó·þÎñÆ÷¡£

Ò»¸ö´Ó·þÎñÆ÷Ö»ÄÜÓÐÒ»¸öÖ÷·þÎñÆ÷£¬²¢ÇÒ²»Ö§³ÖÖ÷Ö÷¸´ÖÆ¡£

Á¬½Ó¹ý³Ì

Ö÷·þÎñÆ÷´´½¨¿ìÕÕÎļþ£¬¼´ RDB Îļþ£¬·¢Ë͸ø´Ó·þÎñÆ÷£¬²¢ÔÚ·¢ËÍÆÚ¼äʹÓûº³åÇø¼Ç¼ִÐеÄдÃüÁî¡£¿ìÕÕÎļþ·¢ËÍÍê±ÏÖ®ºó£¬¿ªÊ¼Ïñ´Ó·þÎñÆ÷·¢ËÍ´æ´¢ÔÚ»º³åÇøµÄдÃüÁî¡£

´Ó·þÎñÆ÷¶ªÆúËùÓоÉÊý¾Ý£¬ÔØÈëÖ÷·þÎñÆ÷·¢À´µÄ¿ìÕÕÎļþ£¬Ö®ºó´Ó·þÎñÆ÷¿ªÊ¼½ÓÊÜÖ÷·þÎñÆ÷·¢À´µÄдÃüÁî¡£

Ö÷·þÎñÆ÷ÿִÐÐÒ»´ÎдÃüÁ¾ÍÏò´Ó·þÎñÆ÷·¢ËÍÏàͬµÄдÃüÁî¡£

Ö÷´ÓÁ´

Ëæ×ŸºÔز»¶ÏÉÏÉý£¬Ö÷·þÎñÆ÷ÎÞ·¨ºÜ¿ìµÄ¸üÐÂËùÓдӷþÎñÆ÷£¬»òÕßÖØÐÂÁ¬½ÓºÍÖØÐÂͬ²½´Ó·þÎñÆ÷½«µ¼ÖÂϵͳ³¬ÔØ¡£ÎªÁ˽â¾öÕâ¸öÎÊÌ⣬¿ÉÒÔ´´½¨Ò»¸öÖмä²ãÀ´·Öµ£Ö÷·þÎñÆ÷µÄ¸´Öƹ¤×÷¡£Öмä²ãµÄ·þÎñÆ÷ÊÇ×îÉϲã·þÎñÆ÷µÄ´Ó·þÎñÆ÷£¬ÓÖÊÇ×îϲã·þÎñÆ÷µÄÖ÷·þÎñÆ÷¡£

ÉÚ±ø

Sentinel£¨ÉÚ±ø£©¿ÉÒÔ¼àÌý¼¯ÈºÖеķþÎñÆ÷£¬²¢ÔÚÖ÷·þÎñÆ÷½øÈëÏÂÏß״̬ʱ£¬×Ô¶¯´Ó´Ó·þÎñÆ÷ÖÐÑ¡¾Ù´¦ÐµÄÖ÷·þÎñÆ÷¡£

·ÖƬ

·ÖƬÊǽ«Êý¾Ý»®·ÖΪ¶à¸ö²¿·ÖµÄ·½·¨£¬¿ÉÒÔ½«Êý¾Ý´æ´¢µ½¶ą̀»úÆ÷ÀïÃæ£¬ÕâÖÖ·½·¨ÔÚ½â¾öijЩÎÊÌâʱ¿ÉÒÔ»ñµÃÏßÐÔ¼¶±ðµÄÐÔÄÜÌáÉý¡£

¼ÙÉèÓÐ 4 ¸ö Redis ʵÀý R0, R1, R2, R3, »¹Óкܶà±íʾÓû§µÄ¼ü user:1, user:2, ... , Óв»Í¬µÄ·½Ê½À´Ñ¡ÔñÒ»¸öÖ¸¶¨µÄ¼ü´æ´¢ÔÚÄĸöʵÀýÖС£

×î¼òµ¥µÄÊÇ·¶Î§·ÖƬ£¬ÀýÈçÓû§ id ´Ó 0 ~ 1000 µÄ´æ´¢µ½ÊµÀý R0 ÖУ¬Óû§ id ´Ó 1001 ~ 2000 µÄ´æ´¢µ½ÊµÀý R1ÖУ¬µÈµÈ¡£µ«ÊÇÕâÑùÐèҪά»¤Ò»ÕÅÓ³É䷶Χ±í£¬Î¬»¤²Ù×÷´ú¼Û¸ß¡£

»¹ÓÐÒ»ÖÖÊǹþÏ£·ÖƬ¡£Ê¹Óà CRC32 ¹þÏ£º¯Êý½«¼üת»»ÎªÒ»¸öÊý×Ö£¬ÔÙ¶ÔʵÀýÊýÁ¿ÇóÄ£¾ÍÄÜÖªµÀ´æ´¢µÄʵÀý¡£

¸ù¾ÝÖ´ÐÐ·ÖÆ¬µÄλÖ㬿ÉÒÔ·ÖΪÈýÖÖ·ÖÆ¬·½Ê½£º

¿Í»§¶Ë·ÖƬ£º¿Í»§¶ËʹÓÃÒ»ÖÂÐÔ¹þÏ£µÈËã·¨¾ö¶¨Ó¦µ±·Ö²¼µ½Äĸö½Úµã¡£

´úÀí·ÖƬ£º½«¿Í»§¶ËµÄÇëÇó·¢Ë͵½´úÀíÉÏ£¬ÓÉ´úÀíת·¢µ½ÕýÈ·µÄ½ÚµãÉÏ¡£

·þÎñÆ÷·ÖƬ£ºRedis Cluster¡£

 

   
2221 ´Îä¯ÀÀ       45
Ïà¹ØÎÄÕÂ

»ùÓÚEAµÄÊý¾Ý¿â½¨Ä£
Êý¾ÝÁ÷½¨Ä££¨EAÖ¸ÄÏ£©
¡°Êý¾Ýºþ¡±£º¸ÅÄî¡¢ÌØÕ÷¡¢¼Ü¹¹Óë°¸Àý
ÔÚÏßÉ̳ÇÊý¾Ý¿âϵͳÉè¼Æ ˼·+Ч¹û
 
Ïà¹ØÎĵµ

GreenplumÊý¾Ý¿â»ù´¡Åàѵ
MySQL5.1ÐÔÄÜÓÅ»¯·½°¸
ijµçÉÌÊý¾ÝÖÐ̨¼Ü¹¹Êµ¼ù
MySQL¸ßÀ©Õ¹¼Ü¹¹Éè¼Æ
Ïà¹Ø¿Î³Ì

Êý¾ÝÖÎÀí¡¢Êý¾Ý¼Ü¹¹¼°Êý¾Ý±ê×¼
MongoDBʵս¿Î³Ì
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
PostgreSQLÊý¾Ý¿âʵսÅàѵ
×îл¼Æ»®
DeepSeek´óÄ£ÐÍÓ¦Óÿª·¢ 6-12[ÏÃÃÅ]
È˹¤ÖÇÄÜ.»úÆ÷ѧϰTensorFlow 6-22[Ö±²¥]
»ùÓÚ UML ºÍEA½øÐзÖÎöÉè¼Æ 6-30[±±¾©]
ǶÈëʽÈí¼þ¼Ü¹¹-¸ß¼¶Êµ¼ù 7-9[±±¾©]
Óû§ÌåÑé¡¢Ò×ÓÃÐÔ²âÊÔÓëÆÀ¹À 7-25[Î÷°²]
ͼÊý¾Ý¿âÓë֪ʶͼÆ× 8-23[±±¾©]
 
×îÐÂÎÄÕÂ
InfluxDB¸ÅÄîºÍ»ù±¾²Ù×÷
InfluxDB TSM´æ´¢ÒýÇæÖ®Êý¾ÝдÈë
Éî¶ÈÂþ̸Êý¾Ýϵͳ¼Ü¹¹¡ª¡ªLambda architecture
Lambda¼Ü¹¹Êµ¼ù
InfluxDB TSM´æ´¢ÒýÇæÖ®Êý¾Ý¶ÁÈ¡
×îпγÌ
OracleÊý¾Ý¿âÐÔÄÜÓÅ»¯¡¢¼Ü¹¹Éè¼ÆºÍÔËÐÐά»¤
²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
NoSQLÊý¾Ý¿â£¨Ô­Àí¡¢Ó¦Óá¢×î¼Ñʵ¼ù£©
ÆóÒµ¼¶Hadoop´óÊý¾Ý´¦Àí×î¼Ñʵ¼ù
OracleÊý¾Ý¿âÐÔÄÜÓÅ»¯×î¼Ñʵ¼ù
³É¹¦°¸Àý
ij½ðÈÚ¹«Ë¾ Mysql¼¯ÈºÓëÐÔÄÜÓÅ»¯
±±¾© ²¢·¢¡¢´óÈÝÁ¿¡¢¸ßÐÔÄÜÊý¾Ý¿âÉè¼ÆÓëÓÅ»¯
ÖªÃûijÐÅϢͨÐŹ«Ë¾ NoSQL»º´æÊý¾Ý¿â¼¼Êõ
±±¾© oracleÊý¾Ý¿âSQLÓÅ»¯
ÖйúÒÆ¶¯ IaaSÔÆÆ½Ì¨-Ö÷Á÷Êý¾Ý¿â¼°´æ´¢¼¼Êõ