{"id":37,"date":"2026-03-30T18:37:11","date_gmt":"2026-03-30T10:37:11","guid":{"rendered":"http:\/\/peishop.cn\/?p=37"},"modified":"2026-03-30T18:37:11","modified_gmt":"2026-03-30T10:37:11","slug":"redis%e6%95%b0%e6%8d%ae%e6%8c%81%e4%b9%85%e5%8c%96%e6%9c%ba%e5%88%b6","status":"publish","type":"post","link":"https:\/\/peishop.cn\/index.php\/2026\/03\/30\/redis%e6%95%b0%e6%8d%ae%e6%8c%81%e4%b9%85%e5%8c%96%e6%9c%ba%e5%88%b6\/","title":{"rendered":"Redis\u6570\u636e\u6301\u4e45\u5316\u673a\u5236"},"content":{"rendered":"\n<h2 class=\"wp-block-heading\">\u4e00\u3001Redis \u6570\u636e\u6301\u4e45\u5316\u673a\u5236<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. <strong>\u4e09\u79cd\u6301\u4e45\u5316\u65b9\u5f0f<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Redis \u6570\u636e\u6301\u4e45\u5316\u673a\u5236\nRDB (Redis Database):\n  - \u7279\u6027: \u5168\u91cf\u5feb\u7167\uff0c\u4e8c\u8fdb\u5236\u683c\u5f0f\n  - \u547d\u4ee4: SAVE\uff08\u963b\u585e\uff09, BGSAVE\uff08\u540e\u53f0\uff09\n  - \u914d\u7f6e: save &lt;seconds&gt; &lt;changes&gt;\n  - \u6587\u4ef6: dump.rdb\n  - \u4f18\u70b9: \u6587\u4ef6\u5c0f\uff0c\u6062\u590d\u5feb\n  - \u7f3a\u70b9: \u53ef\u80fd\u4e22\u5931\u6700\u540e\u4e00\u6b21\u4fdd\u5b58\u540e\u7684\u6570\u636e\n\nAOF (Append Only File):\n  - \u7279\u6027: \u8bb0\u5f55\u6240\u6709\u5199\u547d\u4ee4\n  - \u7b56\u7565: \n    appendfsync always    # \u6bcf\u4e2a\u547d\u4ee4\u540c\u6b65\n    appendfsync everysec  # \u6bcf\u79d2\u540c\u6b65\uff08\u9ed8\u8ba4\uff09\n    appendfsync no        # \u64cd\u4f5c\u7cfb\u7edf\u51b3\u5b9a\n  - \u6587\u4ef6: appendonly.aof\n  - \u4f18\u70b9: \u6570\u636e\u5b8c\u6574\u6027\u9ad8\n  - \u7f3a\u70b9: \u6587\u4ef6\u5927\uff0c\u6062\u590d\u6162\n\n\u6df7\u5408\u6a21\u5f0f (RDB + AOF):\n  - Redis 4.0+ \u652f\u6301\n  - \u7ed3\u5408\u4e24\u8005\u4f18\u70b9\n  - AOF\u6587\u4ef6\u5305\u542bRDB\u683c\u5f0f\u7684\u5168\u91cf\u6570\u636e<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. <strong>\u914d\u7f6e\u68c0\u67e5<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># \u67e5\u770b\u5f53\u524d\u6301\u4e45\u5316\u914d\u7f6e\nredis-cli CONFIG GET save\nredis-cli CONFIG GET appendonly\nredis-cli CONFIG GET dir\nredis-cli CONFIG GET dbfilename\nredis-cli CONFIG GET appendfilename\n\n# \u67e5\u770b\u6301\u4e45\u5316\u4fe1\u606f\nredis-cli INFO persistence<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e8c\u3001RDB \u6587\u4ef6\u6062\u590d<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. <strong>\u81ea\u52a8\u6062\u590d<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># 1. \u786e\u4fddRDB\u6587\u4ef6\u5728\u6b63\u786e\u4f4d\u7f6e\nls -la \/var\/lib\/redis\/dump.rdb\n# \u9ed8\u8ba4\u4f4d\u7f6e: dir\u914d\u7f6e\u7684\u76ee\u5f55 + dbfilename\u914d\u7f6e\u7684\u6587\u4ef6\u540d\n\n# 2. \u68c0\u67e5\u6587\u4ef6\u5b8c\u6574\u6027\nredis-check-rdb \/var\/lib\/redis\/dump.rdb\n\n# 3. \u542f\u52a8Redis\uff08\u81ea\u52a8\u52a0\u8f7dRDB\uff09\nsudo systemctl start redis-server\n# \u6216\nredis-server \/path\/to\/redis.conf\n\n# 4. \u9a8c\u8bc1\u6570\u636e\nredis-cli INFO keyspace\nredis-cli DBSIZE\nredis-cli KEYS \"*\" | head -20<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. <strong>\u4ece\u5907\u4efd\u6062\u590d<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># \u573a\u666f\uff1a\u4ece\u5907\u4efd\u6587\u4ef6\u6062\u590d\n# 1. \u505c\u6b62Redis\nsudo systemctl stop redis-server\n# \u6216\nredis-cli SHUTDOWN NOSAVE\n\n# 2. \u5907\u4efd\u5f53\u524d\u6570\u636e\uff08\u5982\u679c\u6709\uff09\ncp \/var\/lib\/redis\/dump.rdb \/var\/lib\/redis\/dump.rdb.backup.$(date +%Y%m%d)\n\n# 3. \u590d\u5236\u5907\u4efd\u6587\u4ef6\u5230\u6570\u636e\u76ee\u5f55\ncp \/backup\/dump.rdb.20250101 \/var\/lib\/redis\/dump.rdb\n\n# 4. \u8bbe\u7f6e\u6b63\u786e\u6743\u9650\nchown redis:redis \/var\/lib\/redis\/dump.rdb\nchmod 644 \/var\/lib\/redis\/dump.rdb\n\n# 5. \u542f\u52a8Redis\nsudo systemctl start redis-server\n\n# 6. \u9a8c\u8bc1\u6062\u590d\nredis-cli --stat<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3. <strong>\u6062\u590d\u7279\u5b9a\u65f6\u95f4\u70b9\u7684RDB<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\n# restore_rdb.sh - \u6062\u590d\u6307\u5b9a\u65f6\u95f4\u7684RDB\u5907\u4efd\nBACKUP_DIR=\"\/backup\/redis\"\nDATA_DIR=\"\/var\/lib\/redis\"\nRESTORE_DATE=\"20250101\"\n\necho \"\u505c\u6b62Redis\u670d\u52a1...\"\nsudo systemctl stop redis-server\n\necho \"\u5907\u4efd\u5f53\u524d\u6570\u636e...\"\nif &#91; -f \"$DATA_DIR\/dump.rdb\" ]; then\n    cp \"$DATA_DIR\/dump.rdb\" \"$DATA_DIR\/dump.rdb.bak.$(date +%Y%m%d_%H%M%S)\"\nfi\n\necho \"\u67e5\u627e\u5907\u4efd\u6587\u4ef6...\"\nBACKUP_FILE=$(find \"$BACKUP_DIR\" -name \"*dump.rdb.$RESTORE_DATE*\" | head -1)\n\nif &#91; -z \"$BACKUP_FILE\" ]; then\n    echo \"\u9519\u8bef: \u627e\u4e0d\u5230$RESTORE_DATE\u7684\u5907\u4efd\u6587\u4ef6\"\n    exit 1\nfi\n\necho \"\u6062\u590d\u5907\u4efd: $BACKUP_FILE\"\ncp \"$BACKUP_FILE\" \"$DATA_DIR\/dump.rdb\"\n\necho \"\u8bbe\u7f6e\u6743\u9650...\"\nchown redis:redis \"$DATA_DIR\/dump.rdb\"\nchmod 644 \"$DATA_DIR\/dump.rdb\"\n\necho \"\u542f\u52a8Redis\u670d\u52a1...\"\nsudo systemctl start redis-server\n\necho \"\u9a8c\u8bc1\u6062\u590d...\"\nsleep 2\nredis-cli INFO keyspace\necho \"\u6062\u590d\u5b8c\u6210!\"<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e09\u3001AOF \u6587\u4ef6\u6062\u590d<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. <strong>AOF \u6587\u4ef6\u4fee\u590d<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># 1. \u68c0\u67e5AOF\u6587\u4ef6\u5b8c\u6574\u6027\nredis-check-aof --fix \/var\/lib\/redis\/appendonly.aof\n\n# \u4fee\u590d\u8fc7\u7a0b\u4f1a:\n# - \u622a\u65ad\u5230\u6700\u540e\u4e00\u4e2a\u5b8c\u6574\u547d\u4ee4\n# - \u79fb\u9664\u635f\u574f\u7684\u90e8\u5206\n# - \u751f\u6210\u4fee\u590d\u540e\u7684\u6587\u4ef6\n\n# 2. \u5982\u679c\u4fee\u590d\u5931\u8d25\uff0c\u5c1d\u8bd5\u4ece\u5907\u4efd\u6062\u590d\ncp \/backup\/appendonly.aof.20250101 \/var\/lib\/redis\/appendonly.aof\n\n# 3. \u5982\u679cAOF\u6587\u4ef6\u5f88\u5927\uff0c\u53ef\u4ee5\u91cd\u5199\u538b\u7f29\nredis-cli BGREWRITEAOF\n# \u6216\nredis-cli CONFIG SET auto-aof-rewrite-percentage 100\nredis-cli CONFIG SET auto-aof-rewrite-min-size 64mb<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. <strong>AOF \u6062\u590d\u6d41\u7a0b<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\n# restore_aof.sh - \u6062\u590dAOF\u6587\u4ef6\nAOF_DIR=\"\/var\/lib\/redis\"\nBACKUP_DIR=\"\/backup\/redis\"\n\necho \"1. \u505c\u6b62Redis\u670d\u52a1...\"\nsudo systemctl stop redis-server\n\necho \"2. \u5907\u4efd\u5f53\u524dAOF\u6587\u4ef6...\"\nif &#91; -f \"$AOF_DIR\/appendonly.aof\" ]; then\n    cp \"$AOF_DIR\/appendonly.aof\" \"$AOF_DIR\/appendonly.aof.bak.$(date +%Y%m%d_%H%M%S)\"\nfi\n\necho \"3. \u4ece\u5907\u4efd\u6062\u590d\u6700\u65b0AOF...\"\nLATEST_AOF=$(ls -t $BACKUP_DIR\/appendonly.aof.* | head -1)\nif &#91; -n \"$LATEST_AOF\" ]; then\n    cp \"$LATEST_AOF\" \"$AOF_DIR\/appendonly.aof\"\nfi\n\necho \"4. \u4fee\u590dAOF\u6587\u4ef6\uff08\u5982\u679c\u9700\u8981\uff09...\"\nredis-check-aof --fix \"$AOF_DIR\/appendonly.aof\"\n\necho \"5. \u8bbe\u7f6e\u6743\u9650...\"\nchown redis:redis \"$AOF_DIR\/appendonly.aof\"\nchmod 644 \"$AOF_DIR\/appendonly.aof\"\n\necho \"6. \u4fee\u6539\u914d\u7f6e\u4e3a\u53ea\u4f7f\u7528AOF...\"\ncat &gt; \/tmp\/redis-restore.conf &lt;&lt; EOF\nappendonly yes\nappendfilename \"appendonly.aof\"\nappendfsync everysec\nno-appendfsync-on-rewrite no\nauto-aof-rewrite-percentage 100\nauto-aof-rewrite-min-size 64mb\naof-load-truncated yes\ndir $AOF_DIR\nEOF\n\necho \"7. \u4ee5\u6062\u590d\u6a21\u5f0f\u542f\u52a8...\"\nredis-server \/tmp\/redis-restore.conf --daemonize yes\nsleep 3\n\necho \"8. \u9a8c\u8bc1\u6570\u636e...\"\nredis-cli INFO persistence\nredis-cli DBSIZE\n\necho \"9. \u8f6c\u6362\u4e3aRDB+AOF\u6df7\u5408\u6a21\u5f0f...\"\nredis-cli CONFIG SET appendonly yes\nredis-cli CONFIG SET aof-use-rdb-preamble yes\nredis-cli BGSAVE\n\necho \"10. \u91cd\u542f\u4e3a\u6b63\u5e38\u6a21\u5f0f...\"\nsudo systemctl start redis-server<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u56db\u3001\u6df7\u5408\u6a21\u5f0f\u6062\u590d (RDB+AOF)<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. <strong>\u6062\u590d\u6d41\u7a0b<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># 1. \u786e\u4fdd\u540c\u65f6\u6709RDB\u548cAOF\u6587\u4ef6\nls -la \/var\/lib\/redis\/\n# \u5e94\u6709: dump.rdb \u548c appendonly.aof\n\n# 2. \u4fee\u6539\u914d\u7f6e\u6587\u4ef6\ncat &gt; \/etc\/redis\/redis-restore.conf &lt;&lt; 'EOF'\n# \u57fa\u672c\u914d\u7f6e\nport 6379\nbind 127.0.0.1\ndir \/var\/lib\/redis\n\n# \u542f\u7528AOF\nappendonly yes\nappendfilename \"appendonly.aof\"\nappendfsync everysec\n\n# \u542f\u7528RDB\nsave 900 1\nsave 300 10\nsave 60 10000\ndbfilename dump.rdb\n\n# \u6df7\u5408\u6a21\u5f0f\naof-use-rdb-preamble yes\naof-load-truncated yes\nEOF\n\n# 3. \u542f\u52a8Redis\nredis-server \/etc\/redis\/redis-restore.conf\n\n# Redis\u4f1a:\n# 1. \u5148\u52a0\u8f7dRDB\u6587\u4ef6\uff08\u5982\u679c\u5b58\u5728\uff09\n# 2. \u7136\u540e\u91cd\u653eAOF\u6587\u4ef6\u4e2d\u7684\u547d\u4ee4\n# 3. \u5982\u679caof-use-rdb-preamble=yes\uff0cAOF\u6587\u4ef6\u53ef\u80fd\u5305\u542bRDB\u683c\u5f0f\u6570\u636e<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. <strong>\u5f3a\u5236\u4eceAOF\u6062\u590d<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># \u5982\u679cRDB\u635f\u574f\uff0c\u5f3a\u5236\u4eceAOF\u6062\u590d\n# 1. \u91cd\u547d\u540d\u6216\u79fb\u9664RDB\u6587\u4ef6\nmv \/var\/lib\/redis\/dump.rdb \/var\/lib\/redis\/dump.rdb.bak\n\n# 2. \u786e\u4fddAOF\u914d\u7f6e\u6b63\u786e\nredis-cli CONFIG SET appendonly yes\nredis-cli CONFIG SET save \"\"\n\n# 3. \u91cd\u542fRedis\nsudo systemctl restart redis-server<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e94\u3001\u4ece\u5907\u4efd\u6587\u4ef6\u6062\u590d<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. <strong>\u5b9a\u671f\u5907\u4efd\u7b56\u7565<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\n# backup_redis.sh - \u81ea\u52a8\u5907\u4efd\u811a\u672c\nBACKUP_DIR=\"\/backup\/redis\"\nDATA_DIR=\"\/var\/lib\/redis\"\nDATE=$(date +%Y%m%d_%H%M%S)\nRETENTION_DAYS=30\n\n# \u521b\u5efa\u5907\u4efd\u76ee\u5f55\nmkdir -p \"$BACKUP_DIR\"\n\necho \"&#91;$(date)] \u5f00\u59cbRedis\u5907\u4efd...\"\n\n# 1. RDB\u5907\u4efd\necho \"\u521b\u5efaRDB\u5feb\u7167...\"\nredis-cli SAVE  # \u6216 BGSAVE\nsleep 2\n\nif &#91; -f \"$DATA_DIR\/dump.rdb\" ]; then\n    cp \"$DATA_DIR\/dump.rdb\" \"$BACKUP_DIR\/dump.rdb.$DATE\"\n    echo \"RDB\u5907\u4efd\u5b8c\u6210: $BACKUP_DIR\/dump.rdb.$DATE\"\nfi\n\n# 2. AOF\u5907\u4efd\nif &#91; -f \"$DATA_DIR\/appendonly.aof\" ]; then\n    cp \"$DATA_DIR\/appendonly.aof\" \"$BACKUP_DIR\/appendonly.aof.$DATE\"\n    echo \"AOF\u5907\u4efd\u5b8c\u6210: $BACKUP_DIR\/appendonly.aof.$DATE\"\nfi\n\n# 3. \u914d\u7f6e\u5907\u4efd\nif &#91; -f \"\/etc\/redis\/redis.conf\" ]; then\n    cp \"\/etc\/redis\/redis.conf\" \"$BACKUP_DIR\/redis.conf.$DATE\"\nfi\n\n# 4. \u6e05\u7406\u65e7\u5907\u4efd\nfind \"$BACKUP_DIR\" -name \"dump.rdb.*\" -mtime +$RETENTION_DAYS -delete\nfind \"$BACKUP_DIR\" -name \"appendonly.aof.*\" -mtime +$RETENTION_DAYS -delete\nfind \"$BACKUP_DIR\" -name \"redis.conf.*\" -mtime +$RETENTION_DAYS -delete\n\necho \"&#91;$(date)] \u5907\u4efd\u5b8c\u6210\"\necho \"\u78c1\u76d8\u4f7f\u7528:\"\ndu -sh \"$BACKUP_DIR\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. <strong>\u6062\u590d\u6700\u65b0\u5907\u4efd<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\n# restore_latest.sh\nBACKUP_DIR=\"\/backup\/redis\"\nDATA_DIR=\"\/var\/lib\/redis\"\n\n# \u505c\u6b62Redis\nsudo systemctl stop redis-server\n\n# \u6062\u590d\u6700\u65b0RDB\nLATEST_RDB=$(ls -t $BACKUP_DIR\/dump.rdb.* | head -1)\nif &#91; -n \"$LATEST_RDB\" ]; then\n    echo \"\u6062\u590dRDB: $LATEST_RDB\"\n    cp \"$LATEST_RDB\" \"$DATA_DIR\/dump.rdb\"\nfi\n\n# \u6062\u590d\u6700\u65b0AOF\nLATEST_AOF=$(ls -t $BACKUP_DIR\/appendonly.aof.* | head -1)\nif &#91; -n \"$LATEST_AOF\" ]; then\n    echo \"\u6062\u590dAOF: $LATEST_AOF\"\n    cp \"$LATEST_AOF\" \"$DATA_DIR\/appendonly.aof\"\nfi\n\n# \u8bbe\u7f6e\u6743\u9650\nchown redis:redis \"$DATA_DIR\/dump.rdb\" 2&gt;\/dev\/null || true\nchown redis:redis \"$DATA_DIR\/appendonly.aof\" 2&gt;\/dev\/null || true\n\n# \u542f\u52a8Redis\nsudo systemctl start redis-server\n\necho \"\u6062\u590d\u5b8c\u6210\uff0c\u9a8c\u8bc1\u6570\u636e...\"\nsleep 2\nredis-cli INFO keyspace<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u516d\u3001\u707e\u96be\u6062\u590d\u573a\u666f<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">\u573a\u666f1\uff1a\u670d\u52a1\u5668\u5b8c\u5168\u635f\u574f<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># \u65b0\u670d\u52a1\u5668\u6062\u590d\u6d41\u7a0b\n# 1. \u5b89\u88c5Redis\nsudo apt update\nsudo apt install redis-server redis-tools\n\n# 2. \u505c\u6b62\u65b0Redis\nsudo systemctl stop redis-server\n\n# 3. \u4ece\u5907\u4efd\u670d\u52a1\u5668\u83b7\u53d6\u6570\u636e\n# \u5047\u8bbe\u5907\u4efd\u5728S3\/OSS\/NFS\naws s3 cp s3:\/\/my-bucket\/redis-backup\/dump.rdb.latest \/var\/lib\/redis\/dump.rdb\naws s3 cp s3:\/\/my-bucket\/redis-backup\/appendonly.aof.latest \/var\/lib\/redis\/appendonly.aof\n\n# \u6216\u4ece\u8fdc\u7a0b\u670d\u52a1\u5668SCP\nscp user@backup-server:\/backup\/redis\/* \/var\/lib\/redis\/\n\n# 4. \u4fee\u590d\u6587\u4ef6\u6743\u9650\nchown redis:redis \/var\/lib\/redis\/*\nchmod 644 \/var\/lib\/redis\/*\n\n# 5. \u68c0\u67e5\u6587\u4ef6\u5b8c\u6574\u6027\nredis-check-rdb \/var\/lib\/redis\/dump.rdb\nredis-check-aof --fix \/var\/lib\/redis\/appendonly.aof\n\n# 6. \u4fee\u6539\u914d\u7f6e\nsed -i 's\/^bind 127.0.0.1\/# bind 127.0.0.1\/' \/etc\/redis\/redis.conf\nsed -i 's\/^protected-mode yes\/protected-mode no\/' \/etc\/redis\/redis.conf\n\n# 7. \u542f\u52a8Redis\nsudo systemctl start redis-server\nsudo systemctl enable redis-server\n\n# 8. \u9a8c\u8bc1\nredis-cli -h \u65b0\u670d\u52a1\u5668IP INFO replication\nredis-cli -h \u65b0\u670d\u52a1\u5668IP DBSIZE<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u573a\u666f2\uff1a\u8bef\u5220\u9664\u6570\u636e<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># 1. \u7acb\u5373\u505c\u6b62\u5199\u5165\nredis-cli CONFIG SET appendonly no\nredis-cli CONFIG SET save \"\"\n\n# 2. \u5982\u679c\u662f\u8bef\u5220\u9664\uff0c\u4e14AOF\u5f00\u542f\n# \u627e\u5230\u5220\u9664\u547d\u4ee4\u5728AOF\u6587\u4ef6\u4e2d\u7684\u4f4d\u7f6e\ngrep -n \"DEL\\|FLUSHALL\\|FLUSHDB\" \/var\/lib\/redis\/appendonly.aof\n\n# 3. \u521b\u5efaAOF\u5907\u4efd\ncp \/var\/lib\/redis\/appendonly.aof \/tmp\/app.aof.bak\n\n# 4. \u7f16\u8f91AOF\u6587\u4ef6\uff0c\u5220\u9664\u8bef\u64cd\u4f5c\u7684\u547d\u4ee4\n# \u4f7f\u7528vim\u6216sed\u5220\u9664\u5bf9\u5e94\u7684\u884c\nvim \/var\/lib\/redis\/appendonly.aof\n# \u6216\nsed -i '1234,1235d' \/var\/lib\/redis\/appendonly.aof  # \u5220\u96641234-1235\u884c\n\n# 5. \u4fee\u590dAOF\nredis-check-aof --fix \/var\/lib\/redis\/appendonly.aof\n\n# 6. \u91cd\u542fRedis\nsudo systemctl restart redis-server\n\n# 7. \u68c0\u67e5\u6570\u636e\u662f\u5426\u6062\u590d<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">\u573a\u666f3\uff1aRDB\u6587\u4ef6\u635f\u574f<\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># 1. \u68c0\u67e5\u635f\u574f\u7a0b\u5ea6\nredis-check-rdb \/var\/lib\/redis\/dump.rdb\n\n# 2. \u5c1d\u8bd5\u4eceAOF\u6062\u590d\n# \u5982\u679cAOF\u5b58\u5728\u4e14\u8f83\u65b0\nsudo systemctl stop redis-server\nmv \/var\/lib\/redis\/dump.rdb \/var\/lib\/redis\/dump.rdb.corrupted\nsudo systemctl start redis-server\n\n# 3. \u5982\u679c\u53ea\u6709RDB\uff0c\u5c1d\u8bd5\u4fee\u590d\n# \u4f7f\u7528redis-rdb-tools\u5206\u6790\npip install rdbtools\nrdb --command json \/var\/lib\/redis\/dump.rdb &gt; \/tmp\/dump.json\n\n# 4. \u4eceJSON\u4e2d\u63d0\u53d6\u53ef\u6062\u590d\u6570\u636e\ncat \/tmp\/dump.json | jq 'select(.type == \"string\")' &gt; \/tmp\/strings.json\n\n# 5. \u7f16\u5199\u6062\u590d\u811a\u672c\ncat &gt; \/tmp\/restore.py &lt;&lt; 'EOF'\nimport json\nimport redis\n\nwith open('\/tmp\/strings.json') as f:\n    data = json.load(f)\n\nr = redis.Redis(host='localhost', port=6379, db=0)\nfor item in data:\n    if item&#91;'type'] == 'string':\n        r.set(item&#91;'key'], item&#91;'value'])\n    elif item&#91;'type'] == 'hash':\n        r.hmset(item&#91;'key'], item&#91;'value'])\n    # ... \u5904\u7406\u5176\u4ed6\u7c7b\u578b\nEOF\npython3 \/tmp\/restore.py<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e03\u3001\u4e3b\u4ece\u590d\u5236\u6062\u590d<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. <strong>\u4ece\u8282\u70b9\u63d0\u5347\u4e3a\u4e3b\u8282\u70b9<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># \u4e3b\u8282\u70b9\u5b95\u673a\uff0c\u5c06\u4ece\u8282\u70b9\u63d0\u5347\n# \u5728\u4ece\u8282\u70b9\u6267\u884c\nredis-cli SLAVEOF NO ONE\n\n# \u4fee\u6539\u4ece\u8282\u70b9\u914d\u7f6e\nsed -i 's\/^slaveof.*\/# slaveof\/' \/etc\/redis\/redis.conf\nsed -i 's\/^replicaof.*\/# replicaof\/' \/etc\/redis\/redis.conf\n\n# \u91cd\u542f\u4f7f\u914d\u7f6e\u751f\u6548\nsudo systemctl restart redis-server\n\n# \u5176\u4ed6\u4ece\u8282\u70b9\u6307\u5411\u65b0\u4e3b\u8282\u70b9\nredis-cli -h \u5176\u4ed6\u4ece\u8282\u70b9 SLAVEOF \u65b0\u4e3b\u8282\u70b9IP 6379<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. <strong>\u91cd\u5efa\u4e3b\u4ece<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># \u539f\u4e3b\u8282\u70b9\u6062\u590d\u540e\uff0c\u4f5c\u4e3a\u4ece\u8282\u70b9\u52a0\u5165\n# 1. \u5728\u65b0\u4e3b\u8282\u70b9\u521b\u5efa\u5f53\u524d\u6570\u636e\u5feb\u7167\nredis-cli -h \u65b0\u4e3b\u8282\u70b9 BGSAVE\n\n# 2. \u7b49\u5f85RDB\u6587\u4ef6\u751f\u6210\nredis-cli -h \u65b0\u4e3b\u8282\u70b9 INFO persistence | grep rdb_bgsave_in_progress\n\n# 3. \u539f\u4e3b\u8282\u70b9\u4f5c\u4e3a\u4ece\u8282\u70b9\nredis-cli SLAVEOF \u65b0\u4e3b\u8282\u70b9IP 6379\n\n# 4. \u9a8c\u8bc1\u540c\u6b65\nredis-cli INFO replication<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3. <strong>\u589e\u91cf\u6062\u590d\uff08\u90e8\u5206\u540c\u6b65\uff09<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># \u5982\u679c\u4ece\u8282\u70b9\u843d\u540e\u4e0d\u591a\uff0c\u53ef\u4ee5\u4f7f\u7528\u90e8\u5206\u91cd\u540c\u6b65\n# 1. \u68c0\u67e5\u590d\u5236\u504f\u79fb\u91cf\nredis-cli INFO replication | grep -E \"(master_repl_offset|slave_repl_offset)\"\n\n# 2. \u5982\u679c\u504f\u79fb\u91cf\u5dee\u5f02\u5728\u590d\u5236\u79ef\u538b\u7f13\u51b2\u533a\u8303\u56f4\u5185\n# \u4f1a\u81ea\u52a8\u8fdb\u884c\u90e8\u5206\u91cd\u540c\u6b65\n\n# 3. \u5982\u679c\u504f\u79fb\u91cf\u5dee\u5f02\u592a\u5927\uff0c\u9700\u8981\u5168\u91cf\u540c\u6b65\nredis-cli SLAVEOF NO ONE\nredis-cli SLAVEOF \u4e3b\u8282\u70b9IP 6379<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u516b\u3001\u96c6\u7fa4\u6a21\u5f0f\u6062\u590d<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. <strong>Redis Cluster \u8282\u70b9\u6062\u590d<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># \u67e5\u770b\u96c6\u7fa4\u72b6\u6001\nredis-cli --cluster check \u8282\u70b9IP:\u7aef\u53e3\n\n# \u8282\u70b9\u6545\u969c\u6062\u590d\n# 1. \u91cd\u542f\u6545\u969c\u8282\u70b9\nsudo systemctl restart redis@\u8282\u70b9\u7aef\u53e3\n\n# 2. \u91cd\u65b0\u52a0\u5165\u96c6\u7fa4\nredis-cli --cluster add-node \u8282\u70b9IP:\u7aef\u53e3 \u96c6\u7fa4\u4e2d\u4efb\u610f\u8282\u70b9IP:\u7aef\u53e3\n\n# 3. \u91cd\u65b0\u5206\u914d\u69fd\u4f4d\nredis-cli --cluster fix \u96c6\u7fa4\u4e2d\u4efb\u610f\u8282\u70b9IP:\u7aef\u53e3\nredis-cli --cluster rebalance \u96c6\u7fa4\u4e2d\u4efb\u610f\u8282\u70b9IP:\u7aef\u53e3\n\n# 4. \u9a8c\u8bc1\nredis-cli --cluster info \u96c6\u7fa4\u4e2d\u4efb\u610f\u8282\u70b9IP:\u7aef\u53e3<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. <strong>\u96c6\u7fa4\u5907\u4efd\u6062\u590d<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\n# \u5907\u4efdRedis\u96c6\u7fa4\u6240\u6709\u8282\u70b9\nCLUSTER_NODES=\"node1:7000 node2:7001 node3:7002\"\nBACKUP_DIR=\"\/backup\/redis-cluster\"\nDATE=$(date +%Y%m%d_%H%M%S)\n\nmkdir -p \"$BACKUP_DIR\/$DATE\"\n\nfor node in $CLUSTER_NODES; do\n    ip=$(echo $node | cut -d: -f1)\n    port=$(echo $node | cut -d: -f2)\n    \n    echo \"\u5907\u4efd\u8282\u70b9 $node...\"\n    \n    # \u4fdd\u5b58RDB\n    redis-cli -h $ip -p $port SAVE\n    \n    # \u590d\u5236RDB\u6587\u4ef6\n    NODE_DIR=$(redis-cli -h $ip -p $port CONFIG GET dir | tail -1)\n    scp $ip:$NODE_DIR\/dump.rdb $BACKUP_DIR\/$DATE\/dump.$ip.$port.rdb\n    \n    # \u590d\u5236AOF\u6587\u4ef6\uff08\u5982\u679c\u542f\u7528\uff09\n    scp $ip:$NODE_DIR\/appendonly.aof $BACKUP_DIR\/$DATE\/appendonly.$ip.$port.aof 2&gt;\/dev\/null || true\ndone\n\necho \"\u5907\u4efd\u5b8c\u6210: $BACKUP_DIR\/$DATE\"<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u4e5d\u3001\u76d1\u63a7\u4e0e\u9a8c\u8bc1<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. <strong>\u6062\u590d\u540e\u9a8c\u8bc1\u811a\u672c<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/bash\n# verify_restore.sh\nREDIS_HOST=\"localhost\"\nREDIS_PORT=\"6379\"\n\necho \"=== Redis\u6062\u590d\u9a8c\u8bc1\u62a5\u544a ===\"\necho \"\u751f\u6210\u65f6\u95f4: $(date)\"\necho \"\"\n\n# 1. \u57fa\u672c\u4fe1\u606f\necho \"1. Redis\u57fa\u672c\u4fe1\u606f:\"\nredis-cli -h $REDIS_HOST -p $REDIS_PORT INFO server | grep -E \"(redis_version|uptime_in_days)\"\necho \"\"\n\n# 2. \u6570\u636e\u7edf\u8ba1\necho \"2. \u6570\u636e\u7edf\u8ba1:\"\nredis-cli -h $REDIS_HOST -p $REDIS_PORT INFO keyspace\necho \"\"\n\n# 3. \u5185\u5b58\u4f7f\u7528\necho \"3. \u5185\u5b58\u4f7f\u7528:\"\nredis-cli -h $REDIS_HOST -p $REDIS_PORT INFO memory | grep -E \"(used_memory_human|used_memory_peak_human|mem_fragmentation_ratio)\"\necho \"\"\n\n# 4. \u6301\u4e45\u5316\u72b6\u6001\necho \"4. \u6301\u4e45\u5316\u72b6\u6001:\"\nredis-cli -h $REDIS_HOST -p $REDIS_PORT INFO persistence | grep -E \"(rdb_last_save_time|aof_enabled|aof_rewrite_in_progress|loading)\"\necho \"\"\n\n# 5. \u91c7\u6837\u68c0\u67e5\necho \"5. \u968f\u673a\u91c7\u6837\u952e\u503c:\"\nfor db in {0..15}; do\n    count=$(redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $db DBSIZE)\n    if &#91; $count -gt 0 ]; then\n        echo \"  DB$db: $count \u4e2a\u952e\"\n        redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $db RANDOMKEY | head -5 | while read key; do\n            if &#91; -n \"$key\" ]; then\n                type=$(redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $db TYPE \"$key\")\n                echo \"    - $key ($type)\"\n            fi\n        done\n    fi\ndone\necho \"\"\n\n# 6. \u6027\u80fd\u6d4b\u8bd5\necho \"6. \u7b80\u5355\u6027\u80fd\u6d4b\u8bd5:\"\nstart=$(date +%s%N)\nfor i in {1..100}; do\n    redis-cli -h $REDIS_HOST -p $REDIS_PORT PING &gt; \/dev\/null\ndone\nend=$(date +%s%N)\necho \"  PING 100\u6b21\u8017\u65f6: $(( (end-start)\/1000000 ))ms\"<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. <strong>\u76d1\u63a7\u5173\u952e\u6307\u6807<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># \u5b9e\u65f6\u76d1\u63a7\nwatch -n 5 '\necho \"=== Redis\u72b6\u6001\u76d1\u63a7 ===\"\necho \"\u65f6\u95f4: $(date)\"\necho \"\"\nredis-cli INFO stats | grep -E \"(total_connections_received|total_commands_processed|instantaneous_ops_per_sec)\"\necho \"\"\nredis-cli INFO memory | grep -E \"(used_memory_human|used_memory_peak_human)\"\necho \"\"\nredis-cli INFO persistence | grep -E \"(rdb_last_bgsave_status|aof_last_bgrewrite_status|loading)\"\necho \"\"\nredis-cli INFO keyspace\n'<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u5341\u3001\u6700\u4f73\u5b9e\u8df5\u4e0e\u9884\u9632\u63aa\u65bd<\/h2>\n\n\n\n<h3 class=\"wp-block-heading\">1. <strong>\u9884\u9632\u63aa\u65bd<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># 1. \u5b9a\u671f\u5907\u4efd\ncrontab -e\n# \u6dfb\u52a0\n0 2 * * * \/opt\/scripts\/backup_redis.sh\n\n# 2. \u76d1\u63a7\u544a\u8b66\n# \u76d1\u63a7\u4ee5\u4e0b\u6307\u6807:\n# - \u5185\u5b58\u4f7f\u7528\u7387 &gt; 80%\n# - RDB\/AOF\u5931\u8d25\n# - \u4ece\u8282\u70b9\u65ad\u5f00\u8fde\u63a5\n# - \u952e\u6570\u91cf\u7a81\u53d8\n\n# 3. \u914d\u7f6e\u4f18\u5316\ncat &gt; \/etc\/redis\/redis-safe.conf &lt;&lt; 'EOF'\n# \u6570\u636e\u5b89\u5168\u914d\u7f6e\nsave 900 1\nsave 300 10\nsave 60 10000\nstop-writes-on-bgsave-error yes\nrdbcompression yes\nrdbchecksum yes\n\n# AOF\u914d\u7f6e\nappendonly yes\nappendfilename \"appendonly.aof\"\nappendfsync everysec\nno-appendfsync-on-rewrite no\nauto-aof-rewrite-percentage 100\nauto-aof-rewrite-min-size 64mb\naof-load-truncated yes\naof-use-rdb-preamble yes\n\n# \u5185\u5b58\u7ba1\u7406\nmaxmemory 2gb\nmaxmemory-policy allkeys-lru\n\n# \u6301\u4e45\u5316\u76ee\u5f55\u6743\u9650\ndir \/var\/lib\/redis\nEOF<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">2. <strong>\u707e\u96be\u6062\u590d\u8ba1\u5212<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code># Redis\u707e\u96be\u6062\u590d\u8ba1\u5212\n\n## 1. \u6062\u590d\u4f18\u5148\u7ea7\nP0\uff08\u7d27\u6025\uff09: \u4e3b\u8282\u70b9\u5b8c\u5168\u635f\u574f\nP1\uff08\u9ad8\uff09: \u4ece\u8282\u70b9\u635f\u574f\uff0c\u6570\u636e\u90e8\u5206\u4e22\u5931\nP2\uff08\u4e2d\uff09: \u5355\u70b9\u6570\u636e\u635f\u574f\nP3\uff08\u4f4e\uff09: \u6027\u80fd\u6062\u590d\n\n## 2. \u6062\u590d\u65f6\u95f4\u76ee\u6807 (RTO)\n- P0: &lt; 15\u5206\u949f\n- P1: &lt; 1\u5c0f\u65f6\n- P2: &lt; 4\u5c0f\u65f6\n- P3: &lt; 24\u5c0f\u65f6\n\n## 3. \u6062\u590d\u70b9\u76ee\u6807 (RPO)\n- \u91cd\u8981\u6570\u636e: &lt; 5\u5206\u949f\u6570\u636e\u4e22\u5931\n- \u4e00\u822c\u6570\u636e: &lt; 1\u5c0f\u65f6\u6570\u636e\u4e22\u5931\n\n## 4. \u8054\u7cfb\u4eba\u6e05\u5355\n- \u8fd0\u7ef4\u8d1f\u8d23\u4eba: \u5f20\u4e09 (13800138000)\n- \u5f00\u53d1\u8d1f\u8d23\u4eba: \u674e\u56db (13900139000)\n- \u6570\u636e\u5e93DBA: \u738b\u4e94 (13700137000)\n\n## 5. \u6062\u590d\u6b65\u9aa4\n1. \u8bc4\u4f30\u635f\u574f\u8303\u56f4\n2. \u9009\u62e9\u6062\u590d\u7b56\u7565\n3. \u6267\u884c\u6062\u590d\u64cd\u4f5c\n4. \u9a8c\u8bc1\u6570\u636e\u5b8c\u6574\u6027\n5. \u76d1\u63a7\u8fd0\u884c\u72b6\u6001\n6. \u8bb0\u5f55\u548c\u5206\u6790<\/code><\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">3. <strong>\u81ea\u52a8\u5316\u6062\u590d\u5de5\u5177<\/strong><\/h3>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/usr\/bin\/env python3\n# auto_restore.py - \u81ea\u52a8\u5316\u6062\u590d\u5de5\u5177\nimport subprocess\nimport sys\nimport time\nimport json\nfrom pathlib import Path\n\nclass RedisRestore:\n    def __init__(self, redis_host='localhost', redis_port=6379):\n        self.host = redis_host\n        self.port = redis_port\n        \n    def run_cmd(self, cmd):\n        \"\"\"\u6267\u884cRedis\u547d\u4ee4\"\"\"\n        try:\n            result = subprocess.run(\n                cmd, shell=True, capture_output=True, text=True, timeout=30\n            )\n            return result.returncode, result.stdout, result.stderr\n        except subprocess.TimeoutExpired:\n            return 1, \"\", \"Command timeout\"\n    \n    def restore_from_backup(self, backup_type='latest'):\n        \"\"\"\u4ece\u5907\u4efd\u6062\u590d\"\"\"\n        print(f\"\u5f00\u59cb\u4ece{backup_type}\u5907\u4efd\u6062\u590d...\")\n        \n        # 1. \u505c\u6b62Redis\n        print(\"\u505c\u6b62Redis\u670d\u52a1...\")\n        self.run_cmd(\"sudo systemctl stop redis-server\")\n        \n        # 2. \u67e5\u627e\u5907\u4efd\u6587\u4ef6\n        backup_dir = Path(\"\/backup\/redis\")\n        if backup_type == 'latest':\n            rdb_files = list(backup_dir.glob(\"dump.rdb.*\"))\n            if rdb_files:\n                latest_rdb = max(rdb_files, key=lambda x: x.stat().st_mtime)\n            else:\n                return False, \"No backup files found\"\n        else:\n            latest_rdb = backup_dir \/ f\"dump.rdb.{backup_type}\"\n        \n        # 3. \u6062\u590d\u6587\u4ef6\n        data_dir = Path(\"\/var\/lib\/redis\")\n        print(f\"\u6062\u590d\u6587\u4ef6: {latest_rdb} -&gt; {data_dir\/'dump.rdb'}\")\n        subprocess.run(&#91;\"cp\", str(latest_rdb), str(data_dir\/\"dump.rdb\")])\n        \n        # 4. \u8bbe\u7f6e\u6743\u9650\n        subprocess.run(&#91;\"chown\", \"redis:redis\", str(data_dir\/\"dump.rdb\")])\n        \n        # 5. \u542f\u52a8Redis\n        print(\"\u542f\u52a8Redis\u670d\u52a1...\")\n        self.run_cmd(\"sudo systemctl start redis-server\")\n        \n        # 6. \u9a8c\u8bc1\n        time.sleep(5)\n        code, out, err = self.run_cmd(\"redis-cli INFO keyspace\")\n        \n        if code == 0 and \"db0\" in out:\n            return True, \"\u6062\u590d\u6210\u529f\"\n        else:\n            return False, f\"\u6062\u590d\u5931\u8d25: {err}\"\n\nif __name__ == \"__main__\":\n    restorer = RedisRestore()\n    \n    if len(sys.argv) &gt; 1:\n        backup = sys.argv&#91;1]\n    else:\n        backup = 'latest'\n    \n    success, message = restorer.restore_from_backup(backup)\n    print(f\"\u7ed3\u679c: {success}, \u6d88\u606f: {message}\")\n    sys.exit(0 if success else 1)<\/code><\/pre>\n\n\n\n<hr class=\"wp-block-separator has-alpha-channel-opacity\"\/>\n\n\n\n<h2 class=\"wp-block-heading\">\u5173\u952e\u8981\u70b9\u603b\u7ed3<\/h2>\n\n\n\n<ol>\n<li><strong>\u5b9a\u671f\u6d4b\u8bd5\u6062\u590d\u6d41\u7a0b<\/strong>\u200b &#8211; \u81f3\u5c11\u6bcf\u5b63\u5ea6\u6d4b\u8bd5\u4e00\u6b21<\/li>\n\n\n\n<li><strong>\u591a\u91cd\u5907\u4efd<\/strong>\u200b &#8211; \u672c\u5730+\u5f02\u5730+\u4e91\u5b58\u50a8<\/li>\n\n\n\n<li><strong>\u76d1\u63a7\u544a\u8b66<\/strong>\u200b &#8211; \u5b9e\u65f6\u76d1\u63a7\u6301\u4e45\u5316\u72b6\u6001<\/li>\n\n\n\n<li><strong>\u6587\u6863\u5316<\/strong>\u200b &#8211; \u8be6\u7ec6\u7684\u6062\u590d\u64cd\u4f5c\u624b\u518c<\/li>\n\n\n\n<li><strong>\u6743\u9650\u63a7\u5236<\/strong>\u200b &#8211; \u9650\u5236\u5371\u9669\u547d\u4ee4(FLUSHALL, CONFIG)<\/li>\n\n\n\n<li><strong>\u7248\u672c\u7ba1\u7406<\/strong>\u200b &#8211; \u5907\u4efd\u6587\u4ef6\u4e0eRedis\u7248\u672c\u5339\u914d<\/li>\n<\/ol>\n","protected":false},"excerpt":{"rendered":"<p>\u4e00\u3001Redis \u6570\u636e\u6301\u4e45\u5316\u673a\u5236 1. \u4e09\u79cd\u6301\u4e45\u5316\u65b9\u5f0f 2. \u914d\u7f6e\u68c0\u67e5 \u4e8c\u3001RDB \u6587\u4ef6\u6062\u590d 1. \u81ea\u52a8\u6062\u590d 2 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1],"tags":[],"_links":{"self":[{"href":"https:\/\/peishop.cn\/index.php\/wp-json\/wp\/v2\/posts\/37"}],"collection":[{"href":"https:\/\/peishop.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/peishop.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/peishop.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/peishop.cn\/index.php\/wp-json\/wp\/v2\/comments?post=37"}],"version-history":[{"count":1,"href":"https:\/\/peishop.cn\/index.php\/wp-json\/wp\/v2\/posts\/37\/revisions"}],"predecessor-version":[{"id":38,"href":"https:\/\/peishop.cn\/index.php\/wp-json\/wp\/v2\/posts\/37\/revisions\/38"}],"wp:attachment":[{"href":"https:\/\/peishop.cn\/index.php\/wp-json\/wp\/v2\/media?parent=37"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/peishop.cn\/index.php\/wp-json\/wp\/v2\/categories?post=37"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/peishop.cn\/index.php\/wp-json\/wp\/v2\/tags?post=37"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}