 
		 
		{"id":430,"date":"2022-03-13T22:31:02","date_gmt":"2022-03-13T14:31:02","guid":{"rendered":"http:\/\/www.softeng.cn\/?p=430"},"modified":"2022-03-13T22:31:02","modified_gmt":"2022-03-13T14:31:02","slug":"%e3%80%8ab%e7%ab%99-redis%e6%95%99%e7%a8%8b%e3%80%8b%e5%ad%a6%e4%b9%a0%e7%ac%94%e8%ae%b0","status":"publish","type":"post","link":"https:\/\/www.softeng.cn\/?p=430","title":{"rendered":"\u300aB\u7ad9-Redis\u6559\u7a0b\u300b\u5b66\u4e60\u7b14\u8bb0"},"content":{"rendered":"<p><strong>\u76ee\u5f55<\/strong><\/p>\n<p>[toc]<\/p>\n<p>\u89c6\u9891\u5730\u5740\uff1a<a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/www.bilibili.com\/video\/BV1S54y1R7SB?p=1\">https:\/\/www.bilibili.com\/video\/BV1S54y1R7SB?p=1<\/a><\/p>\n<h1>Redis\u5165\u95e8<\/h1>\n<h2>Windows\u5b89\u88c5<\/h2>\n<p>1\u3001\u4e0b\u8f7d\u5730\u5740\uff1a<a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/github.com\/tporadowski\/redis\/releases\">https:\/\/github.com\/tporadowski\/redis\/releases<\/a><\/p>\n<p>2\u3001\u89e3\u538b\u5b89\u88c5\u5305<br \/>\n\u4e0b\u8f7d\u5230\u672c\u5730\u540e\uff0c\u8fdb\u884c\u89e3\u538b\uff0c\u5f97\u5230\u76ee\u5f55\u5982\u4e0b\u56fe<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/2021071816491136.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3doaDMwNjMxODg0OA==,size_16,color_FFFFFF,t_70\" alt=\"Windows\u4e0b\u7684Redis\u5b89\u88c5\u76ee\u5f55\" \/><br \/>\n3\u3001\u542f\u52a8Redis\u670d\u52a1<br \/>\n\u5728\u89e3\u538b\u76ee\u5f55\u4e0b\u53cc\u51fb<code>redis-server.exe<\/code>\uff0c\u6216\u6253\u5f00\u547d\u4ee4\u884c\uff0c\u6267\u884c\u4e0b\u5217\u547d\u4ee4\uff0c\u5373\u53ef\u542f\u52a8redis\u670d\u52a1<\/p>\n<pre><code class=\"language-bash line-numbers\">redis-server.exe redis.windows.conf\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/2021071816450331.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3doaDMwNjMxODg0OA==,size_16,color_FFFFFF,t_70\" alt=\"Windows\u4e0b\u542f\u52a8Redis\u670d\u52a1\" \/><br \/>\n4\u3001\u4f7f\u7528Redis\u5ba2\u6237\u7aef\u8fde\u63a5Redis<br \/>\n\u5728\u89e3\u538b\u76ee\u5f55\u4e0b\u53cc\u51fb<code>redis-cli.exe<\/code>\uff0c\u6216\u6253\u5f00\u547d\u4ee4\u884c\uff0c\u6267\u884c\u4e0b\u5217\u547d\u4ee4\uff0c\u5373\u53ef\u8fde\u63a5redis\u670d\u52a1<\/p>\n<pre><code class=\"language-bash line-numbers\">redis-cli.exe -h 127.0.0.1 -p 6379\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/20210718165253393.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3doaDMwNjMxODg0OA==,size_16,color_FFFFFF,t_70\" alt=\"\u4f7f\u7528\u5ba2\u6237\u7aef\u8fde\u63a5\u670d\u52a1\u5668\" \/><br \/>\nWindows\u4e0b\u4f7f\u7528\u786e\u5b9e\u7b80\u5355\uff0c\u4f46\u662f\u5b98\u65b9\u63a8\u8350\u4f7f\u7528Linux\u90e8\u7f72Redis\u670d\u52a1\uff01<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/20210718165437960.png\" alt=\"\u5b98\u65b9\u63a8\u8350\u5728Linux\u4e0b\u90e8\u7f72Redis\" \/><\/p>\n<h2>Linux\u5b89\u88c5<\/h2>\n<p>1\u3001\u4e0b\u8f7d\u5730\u5740\uff1a<a class=\"wp-editor-md-post-content-link\" href=\"http:\/\/redis.io\/download\">http:\/\/redis.io\/download<\/a><br \/>\n2\u3001\u89e3\u538bRedis\u5b89\u88c5\u5305<br \/>\n3\u3001\u8fdb\u5165\u89e3\u538b\u540e\u7684\u6587\u4ef6\uff0c\u53ef\u4ee5\u770b\u5230Redis\u7684\u914d\u7f6e\u6587\u4ef6<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/20210718170001740.png\" alt=\"Redis\u914d\u7f6e\u6587\u4ef6\" \/><br \/>\n4\u3001\u5b89\u88c5Redis<br \/>\n\u5728\u89e3\u538b\u540e\u7684\u6587\u4ef6\u5939\u5185\u6267\u884c\u4e0b\u5217\u547d\u4ee4<\/p>\n<pre><code class=\"language-bash line-numbers\">yum install gcc-c++\n\nmake MALLOC=libc\n\nmake install\n<\/code><\/pre>\n<p>\u6267\u884c<code>make<\/code>\u547d\u4ee4\u540e\uff0c\u5728src\u76ee\u5f55\u4e0b\uff0c\u4f1a\u751f\u6210redis-server\u3001redis-cli\u7b49\u53ef\u6267\u884c\u547d\u4ee4\u6587\u4ef6<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/20210718170636124.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3doaDMwNjMxODg0OA==,size_16,color_FFFFFF,t_70\" alt=\"\u7f16\u8bd1\u751f\u6210\u7684\u53ef\u6267\u884c\u6587\u4ef6\" \/><\/p>\n<p>5\u3001\u9ed8\u8ba4\u5b89\u88c5\u8def\u5f84<br \/>\n\u5728\u6267\u884c<code>make install<\/code>\u547d\u4ee4\u540e\uff0c\u5728<code>\/usr\/local\/bin\/<\/code>\u76ee\u5f55\u4e0b\uff0c\u4e5f\u4f1a\u6709redis-server\u3001redis-cli\u7b49\u53ef\u6267\u884c\u547d\u4ee4\u6587\u4ef6<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/20210718170531732.png\" alt=\"redis\u9ed8\u8ba4\u5b89\u88c5\u8def\u5f84\" \/><br \/>\n6\u3001\u4fee\u6539Redis\u914d\u7f6e\u6587\u4ef6<\/p>\n<p>\u9ed8\u8ba4\u4e0d\u662f\u540e\u53f0\u542f\u52a8\uff0c\u6539\u4e3a\u540e\u53f0\u542f\u52a8\u6a21\u5f0f<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/2021071817103075.png\" alt=\"redis\u542f\u52a8\u65b9\u5f0f\" \/><br \/>\n7\u3001\u542f\u52a8Redis\u670d\u52a1<\/p>\n<pre><code class=\"language-bash line-numbers\">src\/redis-server redis.conf\n<\/code><\/pre>\n<p>8\u3001\u4f7f\u7528redis-cli\u8fdb\u884c\u8fde\u63a5<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/20210718171516937.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3doaDMwNjMxODg0OA==,size_16,color_FFFFFF,t_70\" alt=\"\u4f7f\u7528Redis\u5ba2\u6237\u7aef\u8fdb\u884c\u8fde\u63a5\" \/><\/p>\n<pre><code class=\"language-bash line-numbers\">redis-cli -h ip\u5730\u5740 -p \u7aef\u53e3\u53f7 -a \u5bc6\u7801\n<\/code><\/pre>\n<p>9\u3001\u5173\u95edredis\u670d\u52a1<br \/>\n\u4f7f\u7528redis-cli\u8fde\u63a5\u4e0aredis\u670d\u52a1\u540e\uff0c\u4f7f\u7528shutdown\u547d\u4ee4\u5173\u95edredis\u670d\u52a1<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/20210718171708890.png\" alt=\"\u5173\u95edredis\u670d\u52a1\" \/><\/p>\n<h2>\u6d4b\u8bd5\u6027\u80fd<\/h2>\n<p><strong>redis-benchmark<\/strong>\u662f\u4e00\u4e2a\u5b98\u65b9\u81ea\u5e26\u7684\u538b\u529b\u6d4b\u8bd5\u5de5\u5177\u3002<\/p>\n<pre><code class=\"language-bash line-numbers\">redis-benchmark [option] [option value]\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/20210718171949848.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3doaDMwNjMxODg0OA==,size_16,color_FFFFFF,t_70\" alt=\"redis-benchmark\u547d\u4ee4\u53c2\u6570\" \/><\/p>\n<pre><code class=\"language-bash line-numbers\"># \u6d4b\u8bd5\uff1a100\u4e2a\u5e76\u53d1\u8fde\u63a5\uff0c10W\u4e2a\u8bf7\u6c42\nredis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 100000\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/2021071817262455.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3doaDMwNjMxODg0OA==,size_16,color_FFFFFF,t_70\" alt=\"\u8bf7\u6c42\u5206\u6790\" \/><\/p>\n<h2>\u57fa\u7840\u7684\u77e5\u8bc6<\/h2>\n<p>1\u3001redis\u9ed8\u8ba4\u670916\u4e2a\u6570\u636e\u5e93\uff0c\u5728<code>redis.config<\/code>\u914d\u7f6e\u6587\u4ef6\u4e2d\u6709<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/20210718215546363.png\" alt=\"redis\u6570\u636e\u5e93\u4e2a\u6570\u914d\u7f6e\" \/><br \/>\n\u9ed8\u8ba4\u4f7f\u7528\u7684\u662f\u7b2c0\u4e2a\u3002<br \/>\n\u53ef\u4ee5\u4f7f\u7528<code>select<\/code>\u547d\u4ee4\u5207\u6362\u6570\u636e\u5e93\uff0c\u53ef\u4ee5\u4f7f\u7528<code>dbsize<\/code>\u547d\u4ee4\u67e5\u770b\u5f53\u524d\u6570\u636e\u5e93\u7684\u5927\u5c0f<\/p>\n<pre><code class=\"language-bash line-numbers\">[root@localhost redis-6.2.4]# redis-cli \n127.0.0.1:6379&gt; select 3    # \u5207\u6362\u6570\u636e\u5e93\nOK\n127.0.0.1:6379[3]&gt; dbsize   # \u67e5\u770bdb\u5927\u5c0f\n(integer) 1\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/20210718220549682.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3doaDMwNjMxODg0OA==,size_16,color_FFFFFF,t_70\" alt=\"select\u548cdbsize\u547d\u4ee4\u7528\u6cd5\" \/><br \/>\n2\u3001\u67e5\u770b\u5f53\u524d\u6570\u636e\u5e93\u6240\u6709\u7684key\uff0c\u7528<code>keys *<\/code>\u547d\u4ee4<\/p>\n<pre><code class=\"language-bash line-numbers\">127.0.0.1:6379[3]&gt; keys *   # \u67e5\u770b\u5f53\u524d\u6570\u636e\u5e93\u4e2d\u6240\u6709\u7684key\n1) \"name1\"\n2) \"name\"\n<\/code><\/pre>\n<p>3\u3001\u53ef\u4ee5\u4f7f\u7528<code>flushall<\/code>\u547d\u4ee4\u6e05\u7a7a\u6240\u6709\u6570\u636e\u5e93\u7684\u6570\u636e\uff0c\u4f7f\u7528<code>flushdb<\/code>\u6e05\u7a7a\u5f53\u524d\u6570\u636e\u5e93\u7684\u6570\u636e<\/p>\n<pre><code class=\"language-bash line-numbers\">127.0.0.1:6379[3]&gt; flushdb\nOK\n127.0.0.1:6379[3]&gt; keys *\n(empty array)\n\n<\/code><\/pre>\n<p>4\u3001Redis\u662f\u5355\u7ebf\u7a0b\u7684<br \/>\nRedis\u662f\u5f88\u5feb\u7684\uff0c\u5b98\u65b9\u8868\u793a\uff0cRedis\u662f\u57fa\u4e8e\u5185\u5b58\u64cd\u4f5c\uff0cCPU\u4e0d\u662fRedis\u7684\u6027\u80fd\u74f6\u9888\uff0cRedis\u7684\u74f6\u9888\u662f\u6839\u636e\u673a\u5668\u7684\u5185\u5b58\u548c\u7f51\u7edc\u5e26\u5bbd\uff0c\u65e2\u7136\u53ef\u4ee5\u4f7f\u7528\u5355\u7ebf\u7a0b\u5b9e\u73b0\uff0c\u5c31\u76f4\u63a5\u4f7f\u7528\u5355\u7ebf\u7a0b\u4e86\uff01<br \/>\nRedis\u662fC\u8bed\u8a00\u5199\u7684\uff0c\u5b98\u65b9\u63d0\u4f9b\u7684\u6570\u636e\u4e3a10W+\u7684QPS\uff0c\u5b8c\u5168\u4e0d\u6bd4\u540c\u6837\u4f7f\u7528key-value\u7684Memcache\u5dee\uff01<br \/>\n<strong>Redis\u4e3a\u4ec0\u4e48\u5355\u7ebf\u7a0b\u8fd8\u8fd9\u4e48\u5feb\uff1f<\/strong><br \/>\na\uff09\u8bef\u533a1\uff1a\u9ad8\u6027\u80fd\u7684\u670d\u52a1\u5668\u4e00\u5b9a\u662f\u591a\u7ebf\u7a0b\u7684\uff1f<br \/>\nb\uff09\u8bef\u533a2\uff1a\u591a\u7ebf\u7a0b\uff08CPU\u4e0a\u4e0b\u6587\u4f1a\u5207\u6362\uff01\uff09\u4e00\u5b9a\u6bd4\u5355\u7ebf\u7a0b\u6548\u7387\u9ad8\uff01<\/p>\n<p>\u6838\u5fc3\uff1aRedis\u662f\u5c06\u6240\u6709\u7684\u6570\u636e\u5168\u90e8\u653e\u5728\u5185\u5b58\u4e2d\u7684\uff0c\u6240\u4ee5\u8bf4\u4f7f\u7528\u5355\u7ebf\u7a0b\u64cd\u4f5c\u6548\u7387\u5c31\u662f\u6700\u9ad8\u7684\uff0c\u5bf9\u4e8e\u5185\u5b58\u6765\u8bf4\uff0c\u5982\u679c\u6ca1\u6709\u4e0a\u4e0b\u6587\u5207\u6362\u6548\u7387\u5c31\u662f\u6700\u9ad8\u7684\uff01\u591a\u6b21\u8bfb\u5199\u90fd\u662f\u5728\u4e00\u4e2aCPU\u4e0a\u7684\uff0c\u5728\u5185\u5b58\u60c5\u51b5\u4e0b\uff0c\u8fd9\u4e2a\u5c31\u662f\u6700\u4f73\u65b9\u6848<\/p>\n<h1>\u4e94\u5927\u6570\u636e\u7c7b\u578b<\/h1>\n<blockquote><p>\n  \u5b98\u65b9\u6587\u6863\n<\/p><\/blockquote>\n<p><img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/20210718223248988.png?x-oss-process=image\/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3doaDMwNjMxODg0OA==,size_16,color_FFFFFF,t_70\" alt=\"\u5b98\u65b9\u4ecb\u7ecd\" \/><br \/>\n\u5168\u6bb5\u7ffb\u8bd1\uff1a<br \/>\nRedis \u662f\u4e00\u4e2a\u5f00\u6e90\uff08BSD\u8bb8\u53ef\uff09\u7684\uff0c\u5185\u5b58\u4e2d\u7684\u6570\u636e\u7ed3\u6784\u5b58\u50a8\u7cfb\u7edf\uff0c\u5b83\u53ef\u4ee5\u7528\u4f5c<span class=\"text-highlighted-inline\" style=\"background-color: #fffd38;\">\u6570\u636e\u5e93<\/span>\u3001<span class=\"text-highlighted-inline\" style=\"background-color: #fffd38;\">\u7f13\u5b58<\/span>\u548c<span class=\"text-highlighted-inline\" style=\"background-color: #fffd38;\">\u6d88\u606f\u4e2d\u95f4\u4ef6MQ<\/span>\u3002 \u5b83\u652f\u6301\u591a\u79cd\u7c7b\u578b\u7684\u6570\u636e\u7ed3\u6784\uff0c\u5982 \u5b57\u7b26\u4e32\uff08strings\uff09\uff0c \u6563\u5217\uff08hashes\uff09\uff0c \u5217\u8868\uff08lists\uff09\uff0c \u96c6\u5408\uff08sets\uff09\uff0c \u6709\u5e8f\u96c6\u5408\uff08sorted sets\uff09 \u4e0e\u8303\u56f4\u67e5\u8be2\uff0c bitmaps\uff0c hyperloglogs \u548c \u5730\u7406\u7a7a\u95f4\uff08geospatial\uff09 \u7d22\u5f15\u534a\u5f84\u67e5\u8be2\u3002 Redis \u5185\u7f6e\u4e86 \u590d\u5236\uff08replication\uff09\uff0cLUA\u811a\u672c\uff08Lua scripting\uff09\uff0c LRU\u9a71\u52a8\u4e8b\u4ef6\uff08LRU eviction\uff09\uff0c\u4e8b\u52a1\uff08transactions\uff09 \u548c\u4e0d\u540c\u7ea7\u522b\u7684 \u78c1\u76d8\u6301\u4e45\u5316\uff08persistence\uff09\uff0c \u5e76\u901a\u8fc7 Redis\u54e8\u5175\uff08Sentinel\uff09\u548c\u81ea\u52a8 \u5206\u533a\uff08Cluster\uff09\u63d0\u4f9b\u9ad8\u53ef\u7528\u6027\uff08high availability\uff09\u3002<\/p>\n<h2>Redis-Key<\/h2>\n<p>Redis\u5e38\u7528\u547d\u4ee4<\/p>\n<pre><code class=\"language-bash line-numbers\">KEYS * # \u67e5\u770b\u5f53\u524d\u6570\u636e\u5e93\u6240\u6709\u7684key\nSET name kuangshen # \u8bbe\u7f6ekey\u4e3aname\u7684\u503c\u662fkuangshen\nMOVE name 1 # \u79fb\u96641\u53f7\u6570\u636e\u5e93\u7684key\u4e3aname\u7684\u6570\u636e\nEXISTS name # \u5224\u65adkey\u4e3aname\u7684\u6570\u636e\u662f\u5426\u5b58\u5728\uff0c\u5982\u679c\u5b58\u5728\u8fd4\u56de1\uff0c\u4e0d\u5b58\u5728\u8fd4\u56de0\nEXPIRE name 10 # \u8bbe\u7f6ekey\u4e3aname\u7684\u6570\u636e10\u79d2\u540e\u8fc7\u671f\uff0c\u8fc7\u671f\u7684\u6570\u636e\u4f1a\u81ea\u52a8\u5220\u9664\nTTL name # \u67e5\u770bkey\u4e3aname\u7684\u5b57\u6bb5\u8fd8\u6709\u591a\u4e45\u8fc7\u671f\uff0c\u8fd4\u56de\u503c\u4e3a\u5269\u4f59\u79d2\u6570\uff0c\u5982\u679c\u8fd4\u56de-1\u8868\u793a\u6c38\u4e0d\u8fc7\u671f\uff0c\u8fd4\u56de-2\u8868\u793a\u5df2\u8fc7\u671f\nTYPE name # \u67e5\u770bkey\u4e3aname\u7684\u6570\u636e\u7684\u6570\u636e\u7c7b\u578b\uff0c\u5bf9\u5e94\u4e8e\u4e0b\u9762\u7684\u4e94\u79cd\u6570\u636e\u7c7b\u578b\n<\/code><\/pre>\n<p>\u540e\u9762\u5982\u679c\u9047\u5230\u4e0d\u4f1a\u7684\u547d\u4ee4\uff0c\u53ef\u4ee5\u5728\u5b98\u7f51\u67e5\u770b\u5e2e\u52a9\u6587\u6863\uff01<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/0d1253ba453e4b5f86683461289160b8.png\" alt=\"Redis\u4e2d\u6587\u5b98\u7f51\" \/><br \/>\n<span class=\"text-highlighted-inline\" style=\"background-color: #fffd38;\"><strong>Redis\u4e2d\u7684key\u662f\u5927\u5c0f\u5199\u654f\u611f\u7684\uff0c\u5373name\u548cNAME\u662f\u4e24\u4e2a\u4e0d\u540c\u7684key\uff01<\/strong><\/span><\/p>\n<h2>String\uff08\u5b57\u7b26\u4e32\uff09<\/h2>\n<p>String\u7c7b\u578b\u76f8\u5173\u7684\u5e38\u7528\u547d\u4ee4<\/p>\n<pre><code class=\"language-bash line-numbers\"># \u5b57\u7b26\u4e32\u64cd\u4f5c\nAPPEND key1 hello # \u5f80key\u4e3akey1\u7684\u5b57\u7b26\u4e32\u540e\u9762\u8ffd\u52a0\"hello\"\u5b57\u7b26\u4e32\uff0c\u8fd4\u56de\u7684\u662f\u8ffd\u52a0\u540e\u7684\u5b57\u7b26\u4e32\u957f\u5ea6\uff0c\u5982\u679c\u5176\u8f93\u5165\u7684key\u4e0d\u5b58\u5728\uff0c\u5219\u76f4\u63a5\u521b\u5efa\uff0c\u7136\u540e\u5728\u7a7a\u5b57\u7b26\u4e32\u540e\u9762\u8ffd\u52a0\u8f93\u5165\u7684\u5b57\u7b26\u4e32\nSTRLEN key1 # \u83b7\u53d6key\u4e3akey1\u7684\u5b57\u7b26\u4e32\u7684\u957f\u5ea6\nGETRANGE key1 0 3 # \u83b7\u53d6key\u4e3akey1\u5bf9\u5e94\u7684\u5b57\u7b26\u4e32\u7684\u7b2c0\u4f4d\u5230\u7b2c3\u4f4d\uff08\u5171\u56db\u4e2a\u5b57\u7b26\uff09\uff0cRedis\u4e2d\uff0c\u5b57\u7b26\u4e32\u4e0b\u6807\u4ece0\u5f00\u59cb\uff0c\u76f8\u5f53\u4e8eJava\u4e2dString\u7684substr()\u51fd\u6570\nGETRANGE key1 0 -1 # \u83b7\u53d6key\u4e3akey1\u5bf9\u5e94\u7684\u5b57\u7b26\u4e32\u7684\u7b2c0\u5230\u7b2c-1\u4f4d\uff0c\u5373\u83b7\u53d6\u6574\u4e2a\u5b57\u7b26\u4e32\nSETRANGE key2 1 xx # \u4ece\u7b2c1\u4f4d\uff08\u5b57\u7b26\u4e32\u4e0b\u6807\u4ece0\u5f00\u59cb\uff09\u66ff\u6362key\u4e3akey2\u5bf9\u5e94\u7684\u5b57\u7b26\u4e32\u7684\u5185\u5bb9\u4e3axx\uff0c\u82e5key2\u539f\u6765\u7684\u503c\u662fabcdefg\uff0c\u66ff\u6362\u540e\u5219\u4e3aaxxdefg\uff0c\u8fd4\u56de\u503c\u4e3a\u66ff\u6362\u540e\u7684\u5b57\u7b26\u4e32\u5185\u5bb9\uff0c\u76f8\u5f53\u4e8eJava\u4e2dString\u7684replace()\u51fd\u6570\nSETEX key3 30 hello # \u8bbe\u7f6ekey\u4e3akey3\u7684\u503c\u662fhello\uff0c\u5e76\u4e14\u572830\u79d2\u540e\u8fc7\u671f\uff0c\u76f8\u5f53\u4e8e\u4f9d\u6b21\u6267\u884cSET key3 hello\u548cEXPIRE key3 30\u4e24\u4e2a\u547d\u4ee4\uff0c\u5176\u542b\u4e49\u662fset with expire\nSETNX mykey redis # \u5982\u679ckey\u4e3amykey\u7684\u503c\u4e0d\u5b58\u5728\uff0c\u5219\u521b\u5efamykey\u7684\u503c\u4e3aredis\uff08\u8fd4\u56de1\uff09\uff0c\u5982\u679c\u5b58\u5728\uff0c\u5219\u521b\u5efa\u5931\u8d25\uff08\u8fd4\u56de0\uff09\uff0c\u5176\u542b\u4e49\u662fset if not exists\uff0c\u5728\u5206\u5e03\u5f0f\u9501\u4e2d\u4f1a\u5e38\u5e38\u4f7f\u7528\n\n# int\u64cd\u4f5c\nINCR views # \u5c06key\u4e3aviews\u5bf9\u5e94\u503c\u81ea\u589e\u52a0\u4e00\uff08\u76f8\u5f53\u4e8ei++\uff09\uff0c\u8fd4\u56de\u503c\u662f\u81ea\u589e\u540e\u7684\u7ed3\u679c\uff0c\u5982\u679ckey\u4e0d\u5b58\u5728\uff0c\u5219\u521b\u5efakey\uff08\u5176\u9ed8\u8ba4\u503c\u4e3a0\uff09\uff0c\u7136\u540e\u81ea\u589e\u52a0\u4e00\uff08\u5373\u7ed3\u679c\u4e3a1\uff09\uff0c\u5982\u679c\u81ea\u589e\u7684key\u5bf9\u5e94\u7684\u503c\u4e0d\u662fint\u578b\uff0c\u5219\u4f1a\u62a5\u9519\uff0c\u539f\u5b50\u64cd\u4f5c\nDECR views # \u5c06key\u4e3aviews\u5bf9\u5e94\u503c\u81ea\u51cf\u51cf\u4e00\uff08\u76f8\u5f53\u4e8ei--\uff09\uff0c\u5176\u4ed6\u90fd\u548cINCR\u547d\u4ee4\u4e00\u6837\uff0c\u539f\u5b50\u64cd\u4f5c\nINCRBY views 10 # \u5c06key\u4e3aviews\u5bf9\u5e94\u7684\u503c\u81ea\u589e\u52a010\uff08\u76f8\u5f53\u4e8e i += 10\uff09\uff0c\u539f\u5b50\u64cd\u4f5c\nDECRBY views 10 # \u5c06key\u4e3aviews\u5bf9\u5e94\u7684\u503c\u81ea\u589e\u51cf10\uff08\u76f8\u5f53\u4e8e i -= 10\uff09\uff0c\u539f\u5b50\u64cd\u4f5c\n\n\n# \u6279\u91cf\u64cd\u4f5c\nMSET k1 v1 k2 v2 k3 v3 # \u6279\u91cf\u6267\u884cset\u64cd\u4f5c\uff0c\u662f\u539f\u5b50\u64cd\u4f5c\uff0c\u8bbe\u7f6ek1\u7684\u503c\u4e3av1\uff0ck2\u7684\u503c\u4e3av2\uff0ck3\u7684\u503c\u4e3av3\uff0c\u4f7f\u7528\u7a7a\u683c\u5206\u9694\uff0c\u952e\u503c\u5bf9\u4e00\u4e00\u5bf9\u5e94\nMGET k1 k2 k3 # \u6279\u91cf\u83b7\u53d6\u503c\uff0c\u6279\u91cf\u6267\u884cget\u64cd\u4f5c\uff0c\u7528\u7a7a\u683c\u95f4\u9694\u8981\u83b7\u53d6\u7684key\uff0c\u8fd4\u56de\u503c\u662f\u6307\u5b9a\u7684key\u5bf9\u5e94\u7684values\u7684list\nMSETNX k1 v1 k4 v4 # \u6279\u91cf\u6267\u884csetnx\u64cd\u4f5c\uff0c\u662f\u539f\u5b50\u64cd\u4f5c\uff0c\u5982\u679ck1\u548ck4\u90fd\u4e0d\u5b58\u5728\uff0c\u5219\u521b\u5efak1\u7684\u503c\u4e3av1\uff0ck4\u7684\u503c\u4e3av4\uff0c\u5982\u679ck1\u5b58\u5728\uff0ck4\u4e0d\u5b58\u5728\uff0c\u4e5f\u4f1a\u521b\u5efa\u5931\u8d25\u7684\uff0c\u521b\u5efa\u6210\u529f\u8fd4\u56de1\uff0c\u521b\u5efa\u5931\u8d25\u8fd4\u56de0\n\n# \u5bf9\u8c61\u64cd\u4f5c\nSET user:1 {name:zhangsan,age:3} # \u8bbe\u7f6ekey\u4e3auser:1\u7684\u503c\u4e3a\u4e00\u4e2ajson\u5b57\u7b26\u4e32\uff0c\u5982\u679c\u503c\u6ca1\u6709\u7528\u53cc\u5f15\u53f7\u62ec\u8d77\u6765\uff0c\u5219\u4e0d\u80fd\u6709\u7a7a\u683c\uff0c\u5426\u5219\u5c31\u5fc5\u987b\u7528\u53cc\u5f15\u53f7\u62ec\u8d77\u6765\n# \u9664\u4e86\u4e0a\u8ff0\u65b9\u6cd5\u5916\uff0c\u5982\u679c\u60f3\u7528redis\u5b58\u50a8\u4e00\u4e2a\u5bf9\u8c61\uff0c\u8fd8\u53ef\u4ee5\u901a\u8fc7key\u7684\u8bbe\u8ba1\u6362\u4e00\u79cd\u65b9\u5f0f\u5b58\u50a8\uff0c\u5373key\u6539\u4e3auser:{id}:{filed}\nmset user:1:name zhangsan user:1:age 3\n# \u83b7\u53d6\u65f6\u4f7f\u7528mget\u547d\u4ee4\u6279\u91cf\u83b7\u53d6\nmget user:1:name user:1:age\n\n# \u7ec4\u5408\u547d\u4ee4\ngetset db redis # \u5148\u83b7\u53d6key\u4e3adb\u7684\u503c\uff0c\u7136\u540e\u518d\u5c06db\u7684\u503c\u8bbe\u7f6e\u4e3aredis\uff0c\u6240\u4ee5\u8be5\u547d\u4ee4\u7684\u8fd4\u56de\u503c\u662f\u5f53\u524dkey\u4e3adb\u7684\u503c\uff08\u5982\u679c\u4e0d\u5b58\u5728\u503c\uff0c\u5219\u8fd4\u56denil\uff09\uff0c\u5f53\u6267\u884c\u5b8c\u8fd9\u4e2a\u547d\u4ee4\u540e\uff0ckey\u4e3adb\u7684\u503c\u53d8\u4e3a\u4e86redis\n<\/code><\/pre>\n<p>String\u7c7b\u578b\u7684\u5e94\u7528\u573a\u666f\uff1avalue\u9664\u4e86\u662f\u5b57\u7b26\u4e32\uff0c\u8fd8\u53ef\u4ee5\u662f\u6570\u5b57\u3002<\/p>\n<ul>\n<li>\u8ba1\u6570\u5668<\/li>\n<li>\u7edf\u8ba1\u591a\u5355\u4f4d\u7684\u6570\u91cf<\/li>\n<li>\u7c89\u4e1d\u6570<\/li>\n<li>\u5bf9\u8c61\u7f13\u5b58\u5b58\u50a8<\/li>\n<\/ul>\n<h2>List\uff08\u5217\u8868\uff09<\/h2>\n<p>\u5728Redis\u91cc\u9762\uff0c\u53ef\u4ee5\u628aList\u5f53\u6210\u6808\u3001\u961f\u5217\u3001\u963b\u585e\u961f\u5217\u4f7f\u7528\uff01<br \/>\nList\u76f8\u5173\u7684\u547d\u4ee4\u5927\u591a\u662f\u4ee5L\u5f00\u5934\u7684\uff0c\u5c11\u90e8\u5206\u662f\u4ee5R\u5f00\u5934\u7684\u3002<\/p>\n<pre><code class=\"language-bash line-numbers\"># \u4ece\u961f\u5217\u7684\u5de6\u8fb9\uff08\u5934\u90e8\uff09\u5165\u961f\u4e00\u4e2a\u6216\u591a\u4e2a\u5143\u7d20\nlpush list one # \u4ecelist\u961f\u5217\u7684\u5de6\u8fb9\uff08\u5934\u90e8\uff09\u5165\u961f\u4e00\u4e2a\u5143\u7d20one\nlpush list two # \u4ecelist\u961f\u5217\u7684\u5de6\u8fb9\uff08\u5934\u90e8\uff09\u5165\u961f\u4e00\u4e2a\u5143\u7d20two\nlpush list three # \u4ecelist\u961f\u5217\u7684\u5de6\u8fb9\uff08\u5934\u90e8\uff09\u5165\u961f\u4e00\u4e2a\u5143\u7d20three\n\n# \u67e5\u770b\u961f\u5217\u7684\u5185\u5bb9\nlrange list 0 -1 # \u67e5\u770blist\u961f\u5217\u7684\u4ece\u5de6\u5230\u53f3\u7684\u6240\u6709\u5143\u7d20\uff0c0\u4ee3\u8868\u4ece0\u5f00\u59cb\uff0c-1\u4ee3\u8868\u5230\u7b2c-1\u4e2a\u5143\u7d20\u622a\u6b62\uff0c\u5373\u6240\u6709\u5143\u7d20\uff0c\u8fd4\u56de\u503c\u662flist\u5217\u8868\u7684\u5168\u90e8\u5143\u7d20\uff0c\u7ed3\u5408\u4e0a\u9762\u7684lpush\u547d\u4ee4\u7684\u60c5\u51b5\uff0c\u8fd9\u91cc\u8fd4\u56de\u7684\u5e94\u8be5\u662fthree\u3001two\u3001one\nlrange list 0 1 # \u67e5\u770blist\u961f\u5217\u4ece\u5de6\u5230\u53f3\u7684\u7b2c0\u548c\u7b2c1\u4e2a\u5143\u7d20\uff0c\u7ed3\u5408\u4e0a\u9762\u7684lpush\u547d\u4ee4\u7684\u60c5\u51b5\uff0c\u8fd9\u91cc\u8fd4\u56de\u7684\u5e94\u8be5\u662fthree\u3001two\n\n# \u4ece\u961f\u5217\u7684\u53f3\u8fb9\uff08\u5c3e\u90e8\uff09\u5165\u961f\u4e00\u4e2a\u6216\u591a\u4e2a\u5143\u7d20\nrpush list right # \u4ecelist\u961f\u5217\u7684\u53f3\u8fb9\uff08\u5c3e\u90e8\uff09\u5165\u961f\u4e00\u4e2a\u5143\u7d20right\uff0c\u7ed3\u5408\u4e0a\u9762\u7684lpush\u547d\u4ee4\u7684\u60c5\u51b5\uff0c\u6b64\u547d\u4ee4\u6267\u884c\u4e4b\u540e\uff0c\u961f\u5217\u7684\u5185\u5bb9\u5e94\u8be5\u662fthree\u3001two\u3001one\u3001right\n\n# \u4ece\u961f\u5217\u4e2d\u5f39\u51fa\u4e00\u4e2a\u5143\u7d20\nlpop list # \u4ecelist\u961f\u5217\u7684\u5de6\u8fb9\uff08\u5934\u90e8\uff09\u5f39\u51fa\u4e00\u4e2a\u5143\u7d20\uff0c\u8fd4\u56de\u503c\u4e3a\u5f39\u51fa\u7684\u5143\u7d20\u5185\u5bb9\uff0c\u7ed3\u5408\u4e0a\u9762\u7684\u547d\u4ee4\uff0c\u8fd4\u56de\u503c\u4e3athree\nrpop list # \u4ecelist\u961f\u5217\u7684\u53f3\u8fb9\uff08\u5c3e\u90e8\uff09\u5f39\u51fa\u4e00\u4e2a\u5143\u7d20\uff0c\u8fd4\u56de\u503c\u4e3a\u5f39\u51fa\u7684\u5143\u7d20\u5185\u5bb9\uff0c\u7ed3\u5408\u4e0a\u9762\u7684\u547d\u4ee4\uff0c\u8fd4\u56de\u503c\u4e3aright\n\n#\u901a\u8fc7\u7d22\u5f15\u83b7\u53d6\u5143\u7d20\u7684\u503c\nlindex list 0 # \u83b7\u53d6list\u5217\u8868\u7684\u7b2c0\u4e2a\u5143\u7d20\u7684\u503c\nlindex list 1 # \u83b7\u53d6list\u5217\u8868\u7684\u7b2c1\u4e2a\u5143\u7d20\u7684\u503c\n\n# \u83b7\u53d6\u5217\u8868\u7684\u957f\u5ea6\nllen list # \u83b7\u53d6list\u5217\u8868\u7684\u957f\u5ea6\n\n# \u4ece\u5217\u8868\u4e2d\u79fb\u9664\u6307\u5b9a\u7684\u503c\nlrem list 1 one # \u4ecelist\u5217\u8868\u4e2d\u79fb\u96641\u4e2aone\uff0c\u662f\u7cbe\u786e\u5339\u914d\uff0c\u8fd4\u56de\u503c\u662f\u79fb\u9664\u6389\u7684\u5143\u7d20\u7684\u4e2a\u6570\nlrem list 2 three # \u4ecelist\u5217\u8868\u4e2d\u79fb\u96642\u4e2athree\uff0c\u5982\u679c\u6b64\u65f6list\u4e2d\u67092\u4e2a\u53ca\u4ee5\u4e0a\u7684three\uff0c\u8fd9\u91cc\u8fd4\u56de2\uff0c\u5982\u679c\u53ea\u67091\u4e2athree\uff0c\u8fd9\u91cc\u8fd4\u56de1\n\n# \u622a\u53d6\u5217\u8868\u6307\u5b9a\u8303\u56f4\u7684\u503c\uff0c\u5269\u4f59\u7684\u503c\u5c06\u88ab\u5220\u9664\nltrim myList 1 2 # \u622a\u53d6myList\u5217\u8868\u7684\u503c\uff0c\u4ece\u4e0b\u68071\u5f00\u59cb\uff0c\u5230\u4e0b\u68072\u7ed3\u675f\uff08\u5217\u8868\u7684\u4e0b\u6807\u4ece0\u5f00\u59cb\uff09\uff0c\u5982\u679cmyList\u5217\u8868\u7684\u539f\u503c\u4e3a[hello, hello1, hello2, hello3]\uff0c\u90a3\u622a\u53d6\u8fc7\u540emyList\u5217\u8868\u7684\u65b0\u503c\u4e3a[hello1, hello2]\n\n# \u4eceA\u5217\u8868\u79fb\u9664\u6700\u540e\u4e00\u4e2a\uff08\u8868\u5c3e\uff09\u5143\u7d20\uff0c\u5e76\u6dfb\u52a0\u8fdbB\u5217\u8868\u8868\u5934\nrpoplpush myList myOtherList # \u4ecemyList\u5217\u8868\u4e2d\u79fb\u9664\u5176\u6700\u53f3\u8fb9\u4e00\u4e2a\u5143\u7d20\uff0c\u5e76\u6dfb\u52a0\u8fdbmyOtherList\u5217\u8868\u7684\u6700\u5de6\u4fa7\uff0c\u8fd4\u56de\u503c\u4e3a\u88ab\u79fb\u52a8\u7684\u5143\u7d20\uff0c\u5982\u679cmyList\u7684\u539f\u503c\u662f[hello, hello1, hello2]\uff0c\u5219\u8fd4\u56de\u503c\u662fhello2\uff0c\u79fb\u52a8\u540emyList\u7684\u65b0\u503c\u662f[hello, hello1]\uff0cmyOtherList\u7684\u65b0\u503c\u662f[hello2, ...]\n\n# \u66f4\u65b0\u5217\u8868\u4e2d\u6307\u5b9a\u4e0b\u6807\u7684\u503c\nlset list 0 item # \u5c06list\u5217\u8868\u7684\u7b2c0\u4f4d\u7684\u503c\u66f4\u65b0\u6210item\uff0c\u8fd9\u4e2a\u547d\u4ee4\u6709\u4e24\u4e2a\u524d\u63d0\u6761\u4ef6\uff0c\u4e00\u662flist\u5217\u8868\u5fc5\u987b\u5b58\u5728\uff0c\u4e8c\u662f\u6307\u5b9a\u7684\u4e0b\u6807\uff08\u8fd9\u91cc\u662f\u7b2c0\u4f4d\uff09\u5fc5\u987b\u5b58\u5728\uff0c\u5426\u5219\u5c06\u62a5\u9519\n\n# \u5411\u5217\u8868\u4e2d\u6307\u5b9a\u5143\u7d20\u7684\u524d\u9762\u6216\u8005\u540e\u9762\u63d2\u5165\u4e00\u4e2a\u503c\nlinsert myList before world other # \u5411myList\u5217\u8868\u7684world\u5143\u7d20\u524d\u63d2\u5165other\u5143\u7d20\uff0c\u82e5myList\u5217\u8868\u7684\u539f\u503c\u662f[hello, world]\uff0c\u6267\u884c\u547d\u4ee4\u540emyList\u5217\u8868\u7684\u65b0\u503c\u662f[hello, other, world]\nlinsert myList after world ! # \u5411myList\u5217\u8868\u7684world\u5143\u7d20\u540e\u9762\u63d2\u5165!\u5143\u7d20\uff0c\u82e5myList\u5217\u8868\u7684\u539f\u503c\u662f[hello, other, world]\uff0c\u6267\u884c\u547d\u4ee4\u540emyList\u5217\u8868\u7684\u65b0\u503c\u662f[hello, other, world, !]\n<\/code><\/pre>\n<p>\u5c0f\u7ed3\uff1a<\/p>\n<ul>\n<li>Redis\u7684List\u5b9e\u9645\u4e0a\u662f\u4e00\u4e2a\u94fe\u8868\uff0c\u94fe\u8868\u7531node\u7ec4\u6210\uff0c\u6240\u4ee5\u53ef\u4ee5\u5728node\u7684\u524d\u9762\u6216\u8005\u540e\u9762\u505a\u63d2\u5165\u64cd\u4f5c<\/li>\n<li>\u5728\u6267\u884cpush\u64cd\u4f5c\u65f6\uff0c\u5982\u679ckey\u4e0d\u5b58\u5728\uff0c\u5219\u4f1a\u521b\u5efa\u65b0\u7684\u94fe\u8868\uff0c\u5982\u679ckey\u5b58\u5728\uff0c\u5219\u65b0\u589e\u5185\u5bb9<\/li>\n<li>\u5982\u679c\u79fb\u9664\u4e86\u6240\u6709\u7684\u503c\uff0c\u5373\u7a7a\u94fe\u8868\uff0c\u5219List\u4e5f\u4e0d\u5b58\u5728\u4e86<\/li>\n<li>\u5728List\u4e24\u8fb9\u63d2\u5165\u6216\u6539\u52a8\u503c\u7684\u65f6\u5019\uff0c\u6548\u7387\u6700\u9ad8\uff01\u4f46\u662f\u64cd\u4f5c\u4e2d\u95f4\u5143\u7d20\u7684\u8bdd\uff0c\u6548\u7387\u4f1a\u4f4e\u4e00\u70b9<\/li>\n<\/ul>\n<p>\u4f7f\u7528\u573a\u666f\uff1a<\/p>\n<ul>\n<li>\u6d88\u606f\u961f\u5217\uff08lpush rpop\uff09\uff1a\u4ece\u5de6\u8fb9\u5165\u961f\uff0c\u7136\u540e\u53f3\u8fb9\u51fa\u961f<\/li>\n<li>\u6808\uff08lpush lpop\uff09\uff1a\u4ece\u5de6\u8fb9\u5165\u961f\uff0c\u7136\u540e\u5de6\u8fb9\u51fa\u961f<\/li>\n<\/ul>\n<h2>Set\uff08\u96c6\u5408\uff09<\/h2>\n<p>set\u4e2d\u7684\u503c\u662f\u4e0d\u80fd\u91cd\u590d\u7684\u3002<br \/>\nset\u76f8\u5173\u7684\u547d\u4ee4\u90fd\u662f\u4ee5S\u5f00\u5934\u7684\u3002<br \/>\nset\u662f\u65e0\u5e8f\u4e0d\u91cd\u590d\u96c6\u5408\u3002<\/p>\n<pre><code class=\"language-bash line-numbers\"># \u5411\u96c6\u5408\u4e2d\u6dfb\u52a0\u5143\u7d20\nsadd myset hello kuangshen \"love kuangshen\" # \u5411myset\u96c6\u5408\u4e2d\u6dfb\u52a0hello,kuangshen\u548clove kuangshen\u4e09\u4e2a\u5143\u7d20\uff0c\u5982\u679c\u6dfb\u52a0\u7684\u5143\u7d20\u4e2d\u5305\u542b\u7a7a\u683c\uff0c\u5c31\u9700\u8981\u4f7f\u7528\u53cc\u5f15\u53f7\u62ec\u8d77\u6765\n\n# \u67e5\u770b\u96c6\u5408\u7684\u6240\u6709\u5143\u7d20\nsmembers myset # \u67e5\u770bmyset\u96c6\u5408\u4e2d\u7684\u6240\u6709\u5143\u7d20\n\n# \u5224\u65ad\u67d0\u4e2a\u503c\u662f\u5426\u5728\u96c6\u5408\u4e2d\nsismember myset hello # \u5224\u65adhello\u5143\u7d20\u662f\u5426\u5728myset\u96c6\u5408\u4e2d\uff0c\u7cbe\u786e\u5339\u914d\uff0c\u5982\u679c\u5728\u5219\u8fd4\u56de1\uff0c\u5426\u5219\u8fd4\u56de0\n\n# \u67e5\u770b\u67d0\u4e2a\u96c6\u5408\u7684\u5143\u7d20\u4e2a\u6570\nscard myset # \u67e5\u770bmyset\u96c6\u5408\u7684\u5143\u7d20\u4e2a\u6570\n\n# \u79fb\u9664\u96c6\u5408\u4e2d\u7684\u67d0\u4e2a\u5143\u7d20\nsrem myset hello # \u5c06hello\u4ecemyset\u96c6\u5408\u4e2d\u79fb\u9664\nspop myset # \u968f\u673a\u4ecemyset\u96c6\u5408\u4e2d\u79fb\u96642\u4e2a\u5143\u7d20\uff0c\u8fd4\u56de\u503c\u4e3a\u88ab\u79fb\u9664\u7684\u5143\u7d20\nspop myset 2 # \u968f\u673a\u4ecemyset\u96c6\u5408\u4e2d\u79fb\u96642\u4e2a\u5143\u7d20\uff0c\u8fd4\u56de\u503c\u4e3a\u88ab\u79fb\u9664\u7684\u5143\u7d20\n\n# \u968f\u673a\u7b5b\u9009\u96c6\u5408\u4e2d\u7684\u6307\u5b9a\u4e2a\u6570\u7684\u5143\u7d20\nsrandmember myset # \u4ecemyset\u96c6\u5408\u7684\u503c\u4e2d\u968f\u673a\u7b5b\u9009\u51fa1\u4e2a\uff0c\u8fd4\u56de\u503c\u662f\u7b5b\u9009\u51fa\u6765\u7684\u5143\u7d20\nsrandmember myset 2 # \u4ecemyset\u96c6\u5408\u7684\u503c\u4e2d\u968f\u673a\u7b5b\u9009\u51fa2\u4e2a\n\n# \u5c06\u4e00\u4e2a\u6307\u5b9a\u7684\u5143\u7d20\u79fb\u52a8\u5230\u53e6\u5916\u4e00\u4e2a\u96c6\u5408\u4e2d\nsmove myset myset2 kuangshen # \u5c06kuangshen\u5143\u7d20\u4ecemyset\u96c6\u5408\u4e2d\uff0c\u79fb\u52a8\u5230myset2\u96c6\u5408\u4e2d\uff0c\u82e5\u79fb\u52a8\u6210\u529f\u8fd4\u56de\u503c\u4e3a1\uff0c\u82e5\u79fb\u52a8\u5931\u8d25\u8fd4\u56de\u503c\u4e3a0\n\n# \u4e24\u4e2a\u96c6\u5408\u8fdb\u884c\u6bd4\u8f83\nsdiff key1 key2 # \u627e\u51fa\u5728key1\u96c6\u5408\u4e2d\u6709\uff0c\u4f46\u662fkey2\u96c6\u5408\u4e2d\u6ca1\u6709\u7684\u5143\u7d20\uff0c\u8fd4\u56de\u503c\u4e3a\u5143\u7d20\u5217\u8868\uff0c\u8be5\u547d\u4ee4\u53ef\u4ee5\u540c\u65f6\u6bd4\u8f83\u66f4\u591a\u96c6\u5408\nsdiff key1 key2 key3 # \u627e\u51fa\u5728key1\u96c6\u5408\u4e2d\u6709\uff0c\u4f46\u662fkey2\u548ckey3\u96c6\u5408\u4e2d\u6ca1\u6709\u7684\u5143\u7d20\nsinter key1 key2 # \u627e\u51fa\u5728key1\u96c6\u5408\u548ckey2\u96c6\u5408\u4e2d\u90fd\u5b58\u5728\u7684\u5143\u7d20\uff08\u5e76\u96c6\uff09\uff0c\u8be5\u547d\u4ee4\u53ef\u4ee5\u540c\u65f6\u6bd4\u8f83\u66f4\u591a\u96c6\u5408\nsinter key1 key2 key3 # \u627e\u51fa\u5728key1\u3001key2\u3001key3\u96c6\u5408\u4e2d\u90fd\u5b58\u5728\u7684\u5143\u7d20\uff08\u5e76\u96c6\uff09\nsunion key1 key2 # \u627e\u51fakey1\u3001key2\u96c6\u5408\u7684\u5e76\u96c6\uff0c\u8be5\u547d\u4ee4\u53ef\u4ee5\u540c\u65f6\u6bd4\u8f83\u66f4\u591a\u96c6\u5408\nsunion key1 key2 key3 # \u627e\u51fakey1\u3001key2\u3001key3\u96c6\u5408\u7684\u5e76\u96c6\n<\/code><\/pre>\n<p>\u4f7f\u7528\u573a\u666f\uff1a<br \/>\n&#8211; \u5fae\u535a\uff0c\u5c06\u7528\u6237\u5c06\u6240\u6709\u5173\u6ce8\u7684\u4eba\u653e\u5728\u4e00\u4e2aset\u96c6\u5408\u4e2d\uff0c\u5c06\u4ed6\u7684\u6240\u6709\u7c89\u4e1d\u653e\u5728\u53e6\u4e00\u4e2a\u96c6\u5408\u4e2d\uff01\u7136\u540e\u8ba1\u7b97\u6bcf\u4e24\u4e2a\u7528\u6237\u4e4b\u95f4\u7684\u5171\u540c\u5173\u6ce8\u3001\u5171\u540c\u7231\u597d\u3001\u5171\u540c\u7c89\u4e1d\uff0c\u4e8c\u5ea6\u597d\u53cb\uff08\u597d\u53cb\u63a8\u8350\uff09\u7b49\u3002<\/p>\n<h2>Hash\uff08\u54c8\u5e0c\uff09<\/h2>\n<p>\u76f8\u5f53\u4e8eJava\u4e2d\u7684Map\uff0ckey-map\uff01\u5176\u503c\u662f\u4e00\u4e2amap\u96c6\u5408\u3002<br \/>\nHash\u672c\u8d28\u548cString\u7c7b\u578b\u6ca1\u6709\u592a\u5927\u533a\u522b\uff0c\u8fd8\u662f\u4e00\u4e2a\u7b80\u5355\u7684key-value<br \/>\nHash\u7684\u547d\u4ee4\u90fd\u662f\u4ee5H\u5f00\u5934\u7684\u3002<\/p>\n<pre><code class=\"language-bash line-numbers\"># \u8bbe\u7f6ehash\u91cc\u9762\u5b57\u6bb5\u7684\u503c\nHSET myhash field1 kuangshen # \u8bbe\u7f6e\u4e00\u4e2a\u540d\u4e3amyhash\u7684Hash\uff0c\u91cc\u9762\u7684field1\u5b57\u6bb5\u7684\u503c\u4e3akuangshen\uff0c\u5982\u679cfield1\u662f\u4e00\u4e2a\u65b0\u5b57\u6bb5\uff0c\u5219\u8fd4\u56de1\uff08\u8bbe\u7f6e\u591a\u4e2a\u5b57\u6bb5\u65f6\uff0c\u8fd4\u56de\u7684\u662f\u65b0\u5b57\u6bb5\u7684\u4e2a\u6570\uff09\uff0c\u5982\u679c\u4e0d\u662f\uff0c\u5219\u8fd4\u56de0\uff0c\u8bbe\u7f6e\u4e00\u4e2a\u54c8\u5e0c\u91cc\u7684\u4e00\u4e2a\u5b57\u6bb5\u7684\u503c\uff0c\u4e5f\u53ef\u4ee5\u8bbe\u7f6e\u4e00\u4e2a\u54c8\u5e0c\u91cc\u7684\u591a\u4e2a\u5b57\u6bb5\nHMSET myhash field1 hello field2 world # \u8bbe\u7f6e\u4e00\u4e2a\u540d\u4e3amyhash\u7684Hash\uff0c\u91cc\u9762\u7684field1\u5b57\u6bb5\u7684\u503c\u4e3ahello\uff0cfield2\u5b57\u6bb5\u7684\u503c\u4e3aworld\uff0c\u5982\u679c\u6210\u529f\u5219\u8fd4\u56deOK\uff0c\u8bbe\u7f6e\u4e00\u4e2a\u54c8\u5e0c\u91cc\u591a\u4e2a\u5b57\u6bb5\u7684\u503c\n\n# \u83b7\u53d6hash\nHGET myhash field1 # \u83b7\u53d6myhash\u7684field1\u7684\u503c\uff0c\u83b7\u53d6\u67d0\u4e2a\u54c8\u5e0c\u91cc\u4e00\u4e2a\u5b57\u6bb5\u7684\u503c\nHMGET myhash field1 field2 # \u540c\u65f6\u83b7\u53d6myhash\u7684field1\u5b57\u6bb5\u548cfield2\u5b57\u6bb5\u7684\u503c\uff0c\u8fd4\u56de\u7ed3\u679c\u662f\u5176\u4e2d\u7684\u503c\u5217\u8868\uff0c\u987a\u5e8f\u662f\u6309\u7167field1\u3001field2\u7684\u987a\u5e8f\uff0c\u83b7\u53d6\u67d0\u4e2a\u54c8\u5e0c\u91cc\u591a\u4e2a\u5b57\u6bb5\u7684\u503c\nHGETALL myhash # \u83b7\u53d6\u540d\u4e3amyhash\u54c8\u5e0c\u4e2d\u7684\u6240\u6709\u952e\u503c\u5bf9\uff0c\u8fd4\u56de\u7ed3\u679c\u4e3a\u952e\u3001\u503c\u76f8\u95f4\u7684\u5217\u8868\uff0c\u5373\u952e1\u3001\u503c1\u3001\u952e2\u3001\u503c2...\n\n# \u5220\u9664\u5b57\u6bb5\nHDEL myhash field1 # \u5220\u9664\u540d\u4e3amyhash\u54c8\u5e0c\u4e2d\u7684field1\u5b57\u6bb5\uff0c\u5bf9\u5e94\u7684value\u503c\u4e5f\u5c31\u5220\u9664\u4e86\uff0c\u8fd4\u56de\u503c\u4e3a\u6210\u529f\u5220\u9664\u7684\u5b57\u6bb5\u4e2a\u6570\uff0c\u4e5f\u53ef\u4ee5\u652f\u6301\u5220\u9664\u591a\u4e2a\u5b57\u6bb5\uff0c\u5982\u679c\u8981\u5220\u9664\u7684\u5b57\u6bb5\u4e0d\u5b58\u5728\uff0c\u5219\u8fd4\u56de0\n\n# \u83b7\u53d6hash\u7684\u5927\u5c0f\nHLEN myhash # \u83b7\u53d6\u540d\u4e3amyhash\u54c8\u5e0c\u91cc\u9762\u7684\u5b57\u6bb5\u7684\u4e2a\u6570\n\n# \u5224\u65adhash\u4e2d\u7684\u5b57\u6bb5\u662f\u5426\u5b58\u5728\nHEXISTS myhash field1 # \u5224\u65ad\u540d\u4e3amyhash\u54c8\u5e0c\u4e2d\u7684field1\u5b57\u6bb5\u662f\u5426\u5b58\u5728\uff0c\u5982\u679c\u5b58\u5728\u8fd4\u56de1\uff0c\u5426\u5219\u8fd4\u56de0\n\n# \u83b7\u53d6hash\u4e2d\u6240\u6709\u7684\u5b57\u6bb5\nHKEYS myhash # \u83b7\u53d6\u540d\u4e3amyhash\u54c8\u5e0c\u4e2d\u6240\u6709\u7684\u5b57\u6bb5\u540d\n\n# \u83b7\u53d6hash\u4e2d\u6240\u6709\u7684\u503c\nHVALS myhash # \u83b7\u53d6\u540d\u4e3amyhash\u54c8\u5e0c\u4e2d\u6240\u6709\u7684\u503c\n\n# \u8ba9hash\u4e2d\u67d0\u4e2a\u5b57\u6bb5\u81ea\u589e\u3001\u81ea\u51cf\nHINCRBY myhash field3 1 # \u8ba9\u540d\u4e3amyhash\u54c8\u5e0c\u4e2d\u7684field3\u5b57\u6bb5\u7684\u503c\u81ea\u589e1\uff0c\u8fd4\u56de\u503c\u4e3a\u81ea\u589e\u540e\u7684\u503c\uff0c\u5982\u679c\u81ea\u589e\u7684\u5b57\u6bb5\u4e0d\u662f\u6574\u578b\uff0c\u5219\u62a5\u9519\nHINCRBY myhash field3 2 # \u8ba9\u540d\u4e3amyhash\u54c8\u5e0c\u4e2d\u7684field3\u5b57\u6bb5\u7684\u503c\u81ea\u589e2\uff0c\u8fd4\u56de\u503c\u4e3a\u81ea\u589e\u540e\u7684\u503c\uff0c\u5982\u679c\u81ea\u589e\u7684\u5b57\u6bb5\u4e0d\u662f\u6574\u578b\uff0c\u5219\u62a5\u9519\nHINCRBY myhash field3 -1 # \u8ba9\u540d\u4e3amyhash\u54c8\u5e0c\u4e2d\u7684field3\u5b57\u6bb5\u7684\u503c\u81ea\u589e-1\uff0c\u76f8\u5f53\u4e8e\u81ea\u51cf1\n\n# \u5982\u679c\u67d0\u4e2a\u5b57\u6bb5\u4e0d\u5b58\u5728\uff0c\u5219\u8bbe\u7f6e\nHSETNX myhash field1 hello # \u8bbe\u7f6e\u4e00\u4e2a\u540d\u4e3amyhash\u54c8\u5e0c\u7684field1\u5b57\u6bb5\uff0c\u5982\u679c\u8be5\u503c\u4e0d\u5b58\u5728\uff0c\u5219\u8bbe\u7f6e\u503c\u4e3ahello\uff0c\u5426\u5219\u5219\u4e0d\u8bbe\u7f6e\uff0c\u8fd4\u56de\u503c\u4e3a1\u8868\u793a\u8bbe\u7f6e\u6210\u529f\uff0c0\u8868\u793a\u8bbe\u7f6e\u5931\u8d25\n<\/code><\/pre>\n<p>\u4f7f\u7528\u573a\u666f\uff1a<br \/>\n&#8211; \u7528\u4e8e\u5b58\u50a8\u7ecf\u5e38\u53d8\u52a8\u7684\u5bf9\u8c61\u4fe1\u606f\uff0c\u6bd4\u5982\u7528\u6237\u4fe1\u606f\u7b49\uff1b<br \/>\n&#8211; hash\u66f4\u9002\u5408\u4e8e\u5bf9\u8c61\u7684\u5b58\u50a8\uff0cString\u66f4\u9002\u5408\u4e8e\u5b57\u7b26\u4e32\u7684\u5b58\u50a8\u3002<\/p>\n<h2>Zset\uff08\u6709\u5e8f\u96c6\u5408\uff09<\/h2>\n<p>\u5728set\u7684\u57fa\u7840\u4e0a\uff0c\u589e\u52a0\u4e86\u4e00\u4e2a\u5206\u6570\u5b57\u6bb5\u3002set\u4e2d\u96c6\u5408\u4e2d\u53ea\u6709\u503c\uff0czset\u4e2d\u96c6\u5408\u4e2d\u6bcf\u4e2a\u503c\u90fd\u6709\u4e00\u4e2a\u5bf9\u5e94\u7684\u5206\u6570\uff0c\u4e0d\u540c\u7684\u503c\u5206\u6570\u53ef\u4ee5\u76f8\u540c\u3002<br \/>\nZset\u7684\u547d\u4ee4\u90fd\u662f\u4ee5Z\u5f00\u5934\u7684\u3002<\/p>\n<pre><code class=\"language-bash line-numbers\"># \u5411zset\u4e2d\u6dfb\u52a0\u503c\nZADD myset 1 one # \u5411\u540d\u4e3amyset\u7684\u6709\u5e8f\u5217\u8868\u4e2d\u6dfb\u52a0\u4e00\u4e2aone\u503c\uff0c\u5176\u5206\u6570\u4e3a1\uff0c\u8be5\u547d\u4ee4\u7684\u8fd4\u56de\u503c\u4e3a\u6dfb\u52a0\u6210\u5458\u7684\u4e2a\u6570\uff0c\u5373\u5982\u679cone\u5df2\u7ecf\u5728myset\u6709\u5e8f\u5217\u8868\u4e2d\u5b58\u5728\uff0c\u8fd9\u91cc\u8fd4\u56de0\uff0c\u5426\u5219\u8fd4\u56de1\nZADD myset 2 two 3 three # \u5411\u540d\u4e3amyset\u7684\u6709\u5e8f\u961f\u5217\u4e2d\u6dfb\u52a0\u4e00\u4e2atwo\u503c\uff0c\u5176\u5206\u6570\u4e3a2\uff0c\u6dfb\u52a0\u4e00\u4e2athree\u503c\uff0c\u5176\u5206\u6570\u4e3a3\uff0c\u8fd4\u56de\u503c\u4e3a\u6dfb\u52a0\u66f4\u65b0\u6210\u5458\u7684\u4e2a\u6570\uff0c\u8fd4\u56de\u503c\u4e3a\u6dfb\u52a0\u6210\u5458\u7684\u4e2a\u6570\uff0c\u8fd9\u91cc\u5982\u679c\u662f\u9996\u6b21\u6267\u884c\u547d\u4ee4\uff0c\u5e94\u8be5\u8fd4\u56de2\uff0c\u5982\u679ctwo\u6216three\u5df2\u7ecf\u5728myset\u6709\u5e8f\u961f\u5217\u4e2d\u5b58\u50a8\uff0c\u5219\u8fd9\u91cc\u5e94\u8be5\u8fd4\u56de1\u62160\n\n# \u67e5\u770bzset\u4e2d\u7684\u503c\uff08\u5347\u5e8f\u6216\u964d\u5e8f\uff09\nZRANGE myset 0 -1 # \u67e5\u770b\u540d\u4e3amyset\u6709\u5e8f\u5217\u8868\u4e2d\u7684\u6240\u6709\u6210\u5458\uff0c\u8fd4\u56de\u503c\u4e3a\u6309\u7167\u5206\u6570\u4ece\u5c0f\u5230\u5927\u6392\u597d\u5e8f\u7684\u5217\u8868\uff0c\u5982\u679c\u67d0\u51e0\u4e2a\u503c\u7684\u5206\u6570\u662f\u76f8\u540c\u7684\uff0c\u5219\u8fd9\u51e0\u4e2a\u503c\u7684\u987a\u5e8f\u662f\u4e71\u5e8f\u7684\nZRANGE myset 0 -1 withscores # \u67e5\u770b\u540d\u4e3amyset\u6709\u5e8f\u5217\u8868\u4e2d\u7684\u6240\u6709\u6210\u5458\uff08\u5e26\u5206\u6570\uff09\uff0c\u8fd4\u56de\u503c\u4e3a\u6309\u7167\u5206\u6570\u4ece\u5c0f\u5230\u5927\u6392\u597d\u5e8f\u7684\u503c\u548c\u5176\u5bf9\u5e94\u5206\u6570\uff0c\u5982\u503c1\uff0c\u503c1\uff0c\u503c1\u5bf9\u5e94\u7684\u5206\u6570\uff0c\u503c2\uff0c\u503c2\u5bf9\u5e94\u7684\u5206\u6570...\nZREVRANGE salary 0 -1 # \u67e5\u770b\u540d\u4e3amyset\u6709\u5e8f\u5217\u8868\u4e2d\u7684\u6240\u6709\u6210\u5458\uff0c\u8fd4\u56de\u503c\u4e3a\u6309\u7167\u5206\u6570\u4ece\u5927\u5230\u5c0f\u6392\u597d\u5e8f\u7684\u5217\u8868\uff0c\u5982\u679c\u67d0\u51e0\u4e2a\u503c\u7684\u5206\u6570\u662f\u76f8\u540c\u7684\uff0c\u5219\u8fd9\u51e0\u4e2a\u503c\u7684\u987a\u5e8f\u662f\u4e71\u5e8f\u7684\nZREVRANGE salary 0 -1 withscores # \u67e5\u770b\u540d\u4e3amyset\u6709\u5e8f\u5217\u8868\u4e2d\u7684\u6240\u6709\u6210\u5458\uff08\u5e26\u5206\u6570\uff09\uff0c\u8fd4\u56de\u503c\u4e3a\u6309\u7167\u5206\u6570\u4ece\u5927\u5230\u5c0f\u6392\u597d\u5e8f\u7684\u503c\u548c\u5176\u5bf9\u5e94\u5206\u6570\uff0c\u5982\u503c1\uff0c\u503c1\uff0c\u503c1\u5bf9\u5e94\u7684\u5206\u6570\uff0c\u503c2\uff0c\u503c2\u5bf9\u5e94\u7684\u5206\u6570...\n\n# \u5bf9zset\u4e2d\u7684\u503c\u6309\u7167\u6307\u5b9a\u5206\u6570\u533a\u95f4\u6392\u5e8f\uff08\u5347\u5e8f\u6216\u964d\u5e8f\uff09\nZRANGEBYSCORE salary -inf +inf # \u5c06salary\u6709\u5e8f\u96c6\u5408\u4e2d\u7684\u5206\u6570\u5728\u8d1f\u65e0\u7a77\u5230\u6b63\u65e0\u7a77\u4e4b\u95f4\u7684\u503c\u4ece\u5c0f\u5230\u5927\u6392\u5e8f\u8fdb\u884c\u663e\u793a\uff0c\u8fd4\u56de\u503c\u4e3a\u6392\u5e8f\u540e\u7684\u503c\u5217\u8868\nZRANGEBYSCORE salary -inf +inf withscores # \u5c06salary\u6709\u5e8f\u96c6\u5408\u4e2d\u7684\u5206\u6570\u5728\u8d1f\u65e0\u7a77\u5230\u6b63\u65e0\u7a77\u4e4b\u95f4\u7684\u503c\u4ece\u5c0f\u5230\u5927\u6392\u5e8f\uff0c\u5e76\u5e26\u4e0a\u5176\u5206\u6570\uff0c\u8fd4\u56de\u503c\u4e3a\u503c1\uff0c\u503c1\u5bf9\u5e94\u7684\u5206\u6570\uff0c\u503c2\uff0c\u503c2\u5bf9\u5e94\u7684\u5206\u6570...\nZRANGEBYSCORE salary -inf 2500 withscores # \u5c06salary\u6709\u5e8f\u96c6\u5408\u4e2d\u7684\u5206\u6570\u5728\u8d1f\u65e0\u7a77\u52302500\u4e4b\u95f4\uff08\u95ed\u533a\u95f4\uff0c\u5373&lt;=2500\uff09\u7684\u503c\u4ece\u5c0f\u5230\u5927\u6392\u5e8f\uff0c\u5e76\u5e26\u4e0a\u5176\u5206\u6570\uff0c\u8fd4\u56de\u503c\u4e3a\u503c1\uff0c\u503c1\u5bf9\u5e94\u7684\u5206\u6570\uff0c\u503c2\uff0c\u503c2\u5bf9\u5e94\u7684\u5206\u6570...\nZREVRANGEBYSCORE salary +inf -inf # \u5c06salary\u6709\u5e8f\u96c6\u5408\u4e2d\u7684\u5206\u6570\u5728\u6b63\u65e0\u7a77\u5230\u8d1f\u65e0\u7a77\u4e4b\u95f4\u7684\u503c\u4ece\u5927\u5230\u5c0f\u6392\u5e8f\u8fdb\u884c\u663e\u793a\uff0c\u8fd4\u56de\u503c\u4e3a\u6392\u5e8f\u540e\u7684\u503c\u5217\u8868\nZREVRANGEBYSCORE salary +inf -inf withscores # \u5c06salary\u6709\u5e8f\u96c6\u5408\u4e2d\u7684\u5206\u6570\u5728\u6b63\u65e0\u7a77\u5230\u8d1f\u65e0\u7a77\u4e4b\u95f4\u7684\u503c\u4ece\u5927\u5230\u5c0f\u6392\u5e8f\uff0c\u5e76\u5e26\u4e0a\u5176\u5206\u6570\uff0c\u8fd4\u56de\u503c\u4e3a\u503c1\uff0c\u503c1\u5bf9\u5e94\u7684\u5206\u6570\uff0c\u503c2\uff0c\u503c2\u5bf9\u5e94\u7684\u5206\u6570...\nZREVRANGEBYSCORE salary 2500 -inf withscores # \u5c06salary\u6709\u5e8f\u96c6\u5408\u4e2d\u7684\u5206\u6570\u57282500\u5230\u8d1f\u65e0\u7a77\u4e4b\u95f4\uff08\u95ed\u533a\u95f4\uff0c\u5373&lt;=2500\uff09\u7684\u503c\u4ece\u5927\u5230\u5c0f\u6392\u5e8f\uff0c\u5e76\u5e26\u4e0a\u5176\u5206\u6570\uff0c\u8fd4\u56de\u503c\u4e3a\u503c1\uff0c\u503c1\u5bf9\u5e94\u7684\u5206\u6570\uff0c\u503c2\uff0c\u503c2\u5bf9\u5e94\u7684\u5206\u6570...\n\n\n# \u5220\u9664\u4e00\u4e2a\u503c\nZREM salary xiaohong # \u5220\u9664salary\u6709\u5e8f\u96c6\u5408\u4e2d\u7684xiaohong\u503c\uff0c\u8be5\u547d\u4ee4\u7684\u8fd4\u56de\u503c\u4e3a\u5220\u9664\u6210\u529f\u7684\u503c\u7684\u4e2a\u6570\n\n# \u83b7\u53d6\u6709\u5e8f\u96c6\u5408\u4e2d\u7684\u5143\u7d20\u7684\u4e2a\u6570\nZCARD salary # \u83b7\u53d6salary\u6709\u5e8f\u96c6\u5408\u4e2d\u7684\u503c\u7684\u4e2a\u6570\n\n# \u7edf\u8ba1\u6307\u5b9a\u5206\u6570\u4e4b\u95f4\u7684\u503c\u7684\u4e2a\u6570\nZCOUNT myset 1 3 # \u7edf\u8ba1myset\u6709\u5e8f\u96c6\u5408\u4e2d\u5206\u6570\u57281\u81f33\u4e4b\u95f4\uff08\u95ed\u533a\u95f4\uff0c\u5373&gt;=1\u5e76\u4e14&lt;=3\uff09\u7684\u503c\u7684\u4e2a\u6570\nZCOUNT myset 1 (3 # \u7edf\u8ba1myset\u6709\u5e8f\u96c6\u5408\u4e2d\u5206\u6570&gt;=1\u5e76\u4e14&lt;3\u7684\u503c\u7684\u4e2a\u6570\nZCOUNT myset (1 (3 # \u7edf\u8ba1myset\u6709\u5e8f\u96c6\u5408\u4e2d\u5206\u6570&gt;1\u5e76\u4e14&lt;3\u7684\u503c\u7684\u4e2a\u6570\n\n# \u8ba1\u7b97\u5e76\u96c6\nZUNIONSTORE out2 2 set1 set2 # \u8ba1\u7b97set1\u548cset2\u4e24\u4e2a\u6709\u5e8f\u96c6\u5408\u7684\u5e76\u96c6\uff0c\u5e76\u5c06\u76f8\u540c\u7684\u503c\u7684\u5206\u6570\u76f8\u52a0\uff0c\u7136\u540e\u5c06\u5e76\u96c6\u5b58\u50a8\u5728out2\u6709\u5e8f\u96c6\u5408\u4e2d\nZUNIONSTORE out2 2 set1 set2 WEIGHTS 2 3 # \u8ba1\u7b97set1\u548cset2\u4e24\u4e2a\u6709\u5e8f\u96c6\u5408\u7684\u5e76\u96c6\uff0c\u5206\u6570\u5148\u6309\u7167set\u7684\u987a\u5e8f\u4e58\u4ee5\u6743\u91cd\uff0c\u7136\u540e\u518d\u76f8\u52a0\uff0c\u6bd4\u5982set1\u4e2d\u7684\u503c\u662f1:one,2:two\uff0cset2\u4e2d\u7684\u503c\u662f1:one,2:two,3:three\uff0c\u5219\u5e76\u96c6\u662f5:one,9:three,10:two\uff0c\u5e76\u96c6\u7ed3\u679c\u653e\u5728out2\u6709\u5e8f\u96c6\u5408\u4e2d\nZUNIONSTORE out3 3 set1 set2 set3 # \u8ba1\u7b97set1\u3001set2\u548cset3\u4e09\u4e2a\u6709\u5e8f\u96c6\u5408\u7684\u5e76\u96c6\uff0c\u5e76\u5c06\u76f8\u540c\u7684\u503c\u7684\u5206\u6570\u76f8\u52a0\uff0c\u7136\u540e\u5c06\u5e76\u96c6\u5b58\u50a8\u5728out3\u6709\u5e8f\u96c6\u5408\u4e2d\uff0c\u6240\u4ee5out3\u540e\u9762\u7684\u6570\u5b57\uff0c\u5fc5\u987b\u548c\u8981\u6c42\u5e76\u96c6\u7684\u6709\u5e8f\u96c6\u5408\u7684\u6570\u91cf\u4e00\u81f4\uff0c\u5426\u5219\u8bed\u6cd5\u9519\u8bef\nZUNIONSTORE out3 3 set1 set2 set3 weights 2 3 4 # \u8ba1\u7b97set1\u3001set2\u548cset3\u4e09\u4e2a\u6709\u5e8f\u96c6\u5408\u7684\u5e76\u96c6\uff0c\u5206\u6570\u5148\u6309\u7167set\u7684\u987a\u5e8f\u4e58\u4ee5\u6743\u91cd\uff0c\u7136\u540e\u518d\u76f8\u52a0\uff0c\u7136\u540e\u5c06\u5e76\u96c6\u5b58\u50a8\u5728out3\u6709\u5e8f\u96c6\u5408\u4e2d\n\n# \u8ba1\u7b97\u4ea4\u96c6\nZINTERSTORE in 2 set1 set2 # \u8ba1\u7b97set1\u548cset2\u4e24\u4e2a\u6709\u5e8f\u96c6\u5408\u7684\u4ea4\u96c6\uff0c\u5e76\u5c06\u76f8\u540c\u7684\u503c\u7684\u5206\u6570\u76f8\u52a0\uff0c\u5b58\u50a8\u5728in\u6709\u5e8f\u96c6\u5408\u4e2d\nZINTERSTORE in 2 set1 set2 weights 2 3 # \u8ba1\u7b97set1\u548cset2\u4e24\u4e2a\u6709\u5e8f\u96c6\u5408\u7684\u4ea4\u96c6\uff0c\u5e76\u5c06\u76f8\u540c\u7684\u503c\u7684\u5206\u6570\u5148\u5206\u522b\u4e58\u4ee5\u6743\u91cd\uff0c\u7136\u540e\u76f8\u52a0\uff0c\u5b58\u50a8\u5728in\u6709\u5e8f\u96c6\u5408\u4e2d\nZINTERSTORE in2 3 set1 set2 set3 # \u8ba1\u7b97set1\u3001set2\u548cset3\u4e09\u4e2a\u6709\u5e8f\u96c6\u5408\u7684\u4ea4\u96c6\uff0c\u5e76\u5c06\u76f8\u540c\u7684\u503c\u7684\u5206\u6570\u76f8\u52a0\uff0c\u5b58\u50a8\u5728in2\u6709\u5e8f\u96c6\u5408\u4e2d\nZINTERSTORE in2 3 set1 set2 set3 weights 2 3 4 # \u8ba1\u7b97set1\u3001set2\u3001set3\u4e09\u4e2a\u6709\u5e8f\u96c6\u5408\u7684\u4ea4\u96c6\uff0c\u5e76\u5c06\u76f8\u540c\u7684\u503c\u7684\u5206\u6570\u5148\u5206\u522b\u4e58\u4ee5\u6743\u91cd\uff0c\u7136\u540e\u76f8\u52a0\uff0c\u5b58\u50a8\u5728in2\u6709\u5e8f\u96c6\u5408\u4e2d\n<\/code><\/pre>\n<p>\u4f7f\u7528\u573a\u666f\uff1a<br \/>\n&#8211; \u6570\u636e\u6392\u5e8f\uff08\u6210\u7ee9\u6392\u5e8f\u3001\u5de5\u8d44\u6392\u5e8f\u3001\u6392\u884c\u699c\u7b49\uff09\uff1b<br \/>\n&#8211; \u5e26\u6743\u91cd\u7684\u6570\u636e\u6392\u5e8f\uff08\u91cd\u8981\u6d88\u606f\u3001\u7d27\u6025\u6d88\u606f\u7b49\uff09\u3002<\/p>\n<h1>\u4e09\u79cd\u7279\u6b8a\u6570\u636e\u7c7b\u578b<\/h1>\n<h2>geospatial\uff08\u5730\u7406\u7a7a\u95f4\uff09<\/h2>\n<p>geospatial\u5e95\u5c42\u7684\u5b9e\u73b0\u539f\u7406\u5176\u5b9e\u5c31\u662fZset\uff08\u6709\u5e8f\u96c6\u5408\uff09\uff01<\/p>\n<pre><code class=\"language-bash line-numbers\"># \u5730\u7403\u7684\u4e24\u7ea7\uff08\u5357\u6781\u3001\u5317\u6781\uff09\u662f\u65e0\u6cd5\u6dfb\u52a0\u7684\n# \u6709\u6548\u7684\u7ecf\u5ea6\u4ece-180\u5ea6\u5230180\u5ea6\uff0c\u6709\u6548\u7684\u7ef4\u5ea6\u4ece-85.05112878\u5ea6\u523005112878\u5ea6\n\n# \u6dfb\u52a0\u5730\u7406\u4f4d\u7f6e\u4fe1\u606f\u5230sorted set\uff08\u6709\u5e8f\u96c6\u5408\uff09\nGEOADD china:city 116.40 39.90 beijing # \u5c06\u540d\u79f0\u4e3abeijing\u7684\u5750\u6807\u6dfb\u52a0\u5230\u4ee5china:city\u4e3akey\u7684\u6709\u5e8f\u96c6\u5408\u4e2d\uff0c\u8fd4\u56de\u503c\u4e3a\u6dfb\u52a0\u6210\u529f\u7684\u4e2a\u6570\uff0c\u5982\u679cbeijing\u7684\u5750\u6807\u5df2\u7ecf\u88ab\u6dfb\u52a0\u4e86\uff0c\u5219\u8fd4\u56de0\uff0c\u5426\u5219\u8fd4\u56de1\nGEOADD china:city 106.50 29.53 chongqing 114.05 22.52 shenzhen # \u5c06\u540d\u79f0\u4e3achongqing\u548cshenzhen\u7684\u5750\u6807\u6dfb\u52a0\u8fdbchina:city\u4e3akey\u7684\u6709\u5e8f\u96c6\u5408\u4e2d\uff0c\u5982\u679c\u662f\u9996\u6b21\u6267\u884c\uff0c\u5219\u8fd4\u56de2\n\n# \u4ece\u67d0\u4e00\u4e2akey\u4e2d\u6839\u636e\u5750\u6807\u540d\u79f0\u83b7\u53d6\u7ecf\u7eac\u5ea6\nGEOPOS china:city hangzhou #  \u4ecekey\u4e3achina:city\u7684\u96c6\u5408\u4e2d\u83b7\u53d6\u540d\u4e3ahangzhou\u7684\u5730\u70b9\u7684\u5750\u6807\nGEOPOS china:city beijing chongqing # \u4ecekey\u4e3achina:city\u7684\u96c6\u5408\u4e2d\u83b7\u53d6\u540d\u4e3abeijing\u548cchongqing\u7684\u5730\u70b9\u7684\u5750\u6807\n\n# \u8ba1\u7b97\u4e24\u4e2a\u6307\u5b9a\u4f4d\u7f6e\u4e4b\u95f4\u7684\u76f4\u7ebf\u8ddd\u79bb\n# \u5355\u4f4d\uff1am \u8868\u793a\u5355\u4f4d\u4e3a\u7c73\u3001km \u8868\u793a\u5355\u4f4d\u4e3a\u5343\u7c73\u3001mi \u8868\u793a\u5355\u4f4d\u4e3a\u82f1\u91cc\u3001ft \u8868\u793a\u5355\u4f4d\u4e3a\u82f1\u5c3a\nGEODIST china:city beijing shanghai # \u8fd4\u56dekey\u4e3achina:city\u96c6\u5408\u4e2d\u7684beijing\u548cshanghai\u4e24\u4e2a\u5730\u70b9\u4e4b\u95f4\u7684\u76f4\u7ebf\u8ddd\u79bb\uff0c\u9ed8\u8ba4\u5355\u4f4d\u4e3a\u7c73\nGEODIST china:city beijing shanghai km # \u8fd4\u56dekey\u4e3achina:city\u96c6\u5408\u4e2d\u7684beijing\u548cshanghai\u4e24\u4e2a\u5730\u70b9\u4e4b\u95f4\u7684\u76f4\u7ebf\u8ddd\u79bb\uff0c\u6307\u5b9a\u8fd4\u56de\u7ed3\u679c\u7684\u5355\u4f4d\u4e3a\u5343\u7c73\n\n# \u4ee5\u4e00\u4e2a\u5750\u6807\u4e3a\u5706\u5fc3\uff0c\u67e5\u8be2\u6307\u5b9a\u534a\u5f84\u5185\u6240\u6709\u7684\u5730\u7406\u4f4d\u7f6e\nGEORADIUS china:city 110 30 500 km # \u4ee5\u7ecf\u5ea6110\u5ea6\uff0c\u7eac\u5ea630\u5ea6\u4e3a\u4e2d\u5fc3\uff0c\u4ee5500\u5343\u7c73\u4e3a\u534a\u5f84\uff0c\u67e5\u627e\u6240\u6709\u5b58\u50a8\u5728key\u4e3achina:city\u7684\u96c6\u5408\u4e2d\u5b58\u5728\u7684\u70b9\u7684\u540d\u79f0\nGEORADIUS china:city 110 30 500 km withdist # \u4ee5\u7ecf\u5ea6110\u5ea6\uff0c\u7eac\u5ea630\u5ea6\u4e3a\u4e2d\u5fc3\uff0c\u4ee5500\u5343\u7c73\u4e3a\u534a\u5f84\uff0c\u67e5\u627e\u6240\u6709\u5b58\u50a8\u5728key\u4e3achina:city\u7684\u96c6\u5408\u4e2d\u5b58\u5728\u7684\u70b9\u7684\u540d\u79f0\uff0c\u5e76\u663e\u793a\u5176\u5230(110, 30)\u70b9\u7684\u76f4\u7ebf\u8ddd\u79bb\nGEORADIUS china:city 110 30 500 km withdist withcoord # \u4ee5\u7ecf\u5ea6110\u5ea6\uff0c\u7eac\u5ea630\u5ea6\u4e3a\u4e2d\u5fc3\uff0c\u4ee5500\u5343\u7c73\u4e3a\u534a\u5f84\uff0c\u67e5\u627e\u6240\u6709\u5b58\u50a8\u5728key\u4e3achina:city\u7684\u96c6\u5408\u4e2d\u5b58\u5728\u7684\u70b9\u7684\u540d\u79f0\uff0c\u5e76\u663e\u793a\u5176\u5230(110, 30)\u70b9\u7684\u76f4\u7ebf\u8ddd\u79bb\uff0c\u548c\u5176\u5bf9\u5e94\u7684\u7ecf\u5ea6\u3001\u7eac\u5ea6\nGEORADIUS china:city 110 30 500 km count 2 # \u4ee5\u7ecf\u5ea6110\u5ea6\uff0c\u7eac\u5ea630\u5ea6\u4e3a\u4e2d\u5fc3\uff0c\u4ee5500\u5343\u7c73\u4e3a\u534a\u5f84\uff0c\u67e5\u627e\u6240\u6709\u5b58\u50a8\u5728key\u4e3achina:city\u7684\u96c6\u5408\u4e2d\u5b58\u5728\u7684\u70b9\u7684\u540d\u79f0\uff0c\u53ea\u663e\u793a\u6700\u8fd1\u76842\u4e2a\nGEORADIUS china:city 110 30 1000 km  desc # \u4ee5\u7ecf\u5ea6110\u5ea6\uff0c\u7eac\u5ea630\u5ea6\u4e3a\u4e2d\u5fc3\uff0c\u4ee51000\u5343\u7c73\u4e3a\u534a\u5f84\uff0c\u67e5\u627e\u6240\u6709\u5b58\u50a8\u5728key\u4e3achina:city\u7684\u96c6\u5408\u4e2d\u5b58\u5728\u7684\u70b9\u7684\u540d\u79f0\uff0c\u4ece\u8fdc\u5230\u8fd1\u6392\u5e8f\n\n# \u4ee5\u4e00\u4e2a\u5730\u70b9\u4e3a\u5706\u5fc3\uff0c\u67e5\u8be2\u6307\u5b9a\u534a\u5f84\u5185\u6240\u6709\u7684\u5730\u7406\u4f4d\u7f6e\uff08\u8be5\u547d\u4ee4\u7684\u53c2\u6570\u548cGEORADIUS\u547d\u4ee4\u76f8\u4f3c\uff09\nGEORADIUSBYMEMBER china:city beijing 1000 km # \u5728key\u4e3achina:city\u7684\u96c6\u5408\u4e2d\uff0c\u4ee5beijing\u4e3a\u5706\u5fc3\uff0c\u67e5\u8be21000\u5343\u7c73\u4ee5\u5185\u7684\u70b9\u7684\u5217\u8868\uff0c\u5176\u8fd4\u56de\u503c\u4e2d\u5305\u542bbeijing\u672c\u8eab\n\n# \u8fd4\u56de\u4e00\u4e2a\u6216\u591a\u4e2a\u4f4d\u7f6e\u5143\u7d20\u7684 Geohash \u8868\u793a\n# Geohash\u662f\u5c06\u4e8c\u7ef4\u7684\u7ecf\u7eac\u5ea6\u8f6c\u6362\u6210\u4e00\u7ef4\u7684\u5b57\u7b26\u4e32\uff0c\u5982\u679c\u4e24\u4e2a\u5730\u70b9\u7684\u54c8\u5e0c\u503c\u7ea6\u63a5\u8fd1\uff0c\u90a3\u4e48\u5219\u8ddd\u79bb\u8d8a\u8fd1\nGEOHASH china:city beijing # \u8fd4\u56dekey\u4e3achina:city\u7684\u96c6\u5408\u4e2dbeijing\u7684\u54c8\u5e0c\u503c\nGEOHASH china:city beijing chongqing # \u8fd4\u56dekey\u4e3achina:city\u7684\u96c6\u5408\u4e2dbeijing\u548cchongqing\u7684\u54c8\u5e0c\u503c\n<\/code><\/pre>\n<p>\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528Zset\u547d\u4ee4\u6765\u64cd\u4f5cgeospatial\uff01<\/p>\n<pre><code class=\"language-bash line-numbers\"># \u67e5\u770bGEO\u6240\u6709\u7684\u5730\u70b9\u5143\u7d20\nZRANGE china:city 0 -1 # \u67e5\u770bkey\u4e3achina:city\u7684\u6709\u5e8f\u96c6\u5408\u7684\u6240\u6709\u5143\u7d20\n\n# \u79fb\u9664GEO\u4e2d\u7684\u5730\u70b9\u5143\u7d20\nZREM china:city beijing # \u79fb\u9664key\u4e3achina:city\u7684\u6709\u5e8f\u96c6\u5408\u4e2d\u540d\u4e3abeijing\u7684\u5730\u70b9\u4fe1\u606f\n\n<\/code><\/pre>\n<p>\u4f7f\u7528\u573a\u666f\uff1a<br \/>\n&#8211; \u9644\u8fd1\u7684\u4eba\uff1b<br \/>\n&#8211; \u8ba1\u7b97\u4e24\u70b9\u6216\u4e24\u4eba\u4e4b\u95f4\u7684\u76f4\u7ebf\u8ddd\u79bb\u7b49\u3002<\/p>\n<h2>Hyperloglog\uff08\u57fa\u6570\u8ba1\u7b97\uff09<\/h2>\n<p>Hyperloglog\u662f\u7528\u6765\u505a\u57fa\u6570\u7edf\u8ba1\u7684\u7b97\u6cd5\u3002<br \/>\n\u4f18\u70b9\uff1a\u5360\u7528\u7684\u5185\u5b58\u662f\u56fa\u5b9a\u7684\uff0c\u5982\u679c\u60f3\u653e2^64\uff08Long\u7c7b\u578b\uff09\u4e0d\u540c\u7684\u5143\u7d20\u7684\u57fa\u6570\uff0c\u53ea\u9700\u898112KB\u7684\u5185\u5b58\u3002\u5982\u679c\u8981\u4ece\u5185\u5b58\u89d2\u5ea6\u6bd4\u8f83\u7684\u8bdd\uff0cHyperloglog\u662f\u9996\u9009\uff01<br \/>\nHyperloglog\u67090.81%\u7684\u9519\u8bef\u7387\uff0c\u57fa\u672c\u53ef\u4ee5\u5ffd\u7565\u4e0d\u8ba1\u3002<\/p>\n<pre><code class=\"language-bash line-numbers\"># \u6dfb\u52a0\u5143\u7d20\nPFADD mykey a b c d e f g h i j # \u5411mykey\u96c6\u5408\u4e2d\u6dfb\u52a0a b c d e f g h i j\u5143\u7d20\uff0c\u5982\u679c\u6dfb\u52a0\u7684\u5143\u7d20\u4e2d\u6709\u539f\u6765\u6ca1\u6709\u7684\u5143\u7d20\u8fd4\u56de1\uff0c\u5982\u679c\u6dfb\u52a0\u7684\u5143\u7d20\u5728mykey\u4e2d\u90fd \u5df2\u7ecf\u6709\u4e86\u5c31\u8fd4\u56de0\nPFADD mykey2 i j z x c v b n m # \u5411mykey2\u96c6\u5408\u4e2d\u6dfb\u52a0i j z x c v b n m\u5143\u7d20\n\n# \u7edf\u8ba1\u57fa\u6570\nPFCOUNT mykey # \u7edf\u8ba1mykey\u7684\u57fa\u6570\nPFCOUNT mykey2 # \u7edf\u8ba1mykey2\u7684\u57fa\u6570\n\n# \u5408\u5e76\u96c6\u5408\nPFMERGE mykey3 mykey mykey2 # \u5c06mykey\u548cmykey2\u96c6\u5408\u5408\u5e76\uff0c\u8f93\u51fa\u5230mykey3\u96c6\u5408\u4e2d\uff0c\u5982\u679cmykey3\u4e0d\u5b58\u5728\uff0c\u5219\u521b\u5efa\uff0c\u5982\u679cmykey3\u5df2\u7ecf\u5b58\u5728\uff0c\u5219\u662f\u8ffd\u52a0\n\n<\/code><\/pre>\n<p>\u4f7f\u7528\u573a\u666f\uff1a<br \/>\n1. \u7edf\u8ba1\u7f51\u9875\u7684UV\uff08\u4e00\u4e2a\u4eba\u8bbf\u95ee\u4e00\u4e2a\u7f51\u9875\u591a\u6b21\uff0c\u7b97\u4e00\u4e2aUV\uff0cUnique Visitor\uff09<br \/>\n\u4f20\u7edf\u7684\u65b9\u5f0f\u662f\u7528set\u4fdd\u5b58\u7528\u6237\u7684id\uff0c\u7136\u540e\u7edf\u8ba1set\u7684\u5143\u7d20\u6570\u91cf\u4f5c\u4e3a\u5224\u65ad\u6807\u51c6\uff0c\u8fd9\u4e2a\u65b9\u5f0f\u5982\u679c\u4fdd\u5b58\u5927\u91cf\u7684\u7528\u6237id\uff0c\u5c31\u4f1a\u6bd4\u8f83\u9ebb\u70e6\uff01\u6211\u4eec\u7684\u76ee\u7684\u662f\u4e3a\u4e86\u6280\u672f\uff0c\u800c\u4e0d\u662f\u4e3a\u4e86\u4fdd\u5b58\u7528\u6237id<br \/>\n2. \u5141\u8bb8\u5bb9\u9519\u7684\u5176\u4ed6\u6570\u91cf\u7edf\u8ba1\u7c7b\u529f\u80fd<\/p>\n<h2>bitmap\uff08\u4f4d\u56fe\uff09<\/h2>\n<p>bitmap\u662f\u6309\u4f4d\u5b58\u50a8\u7684\u6570\u636e\u7ed3\u6784\uff0c\u90fd\u662f\u901a\u8fc7\u64cd\u4f5c\u4e8c\u8fdb\u5236\u4f4d\u6765\u8fdb\u884c\u8bb0\u5f55\uff0c\u53ea\u67090\u548c1\u4e24\u4e2a\u72b6\u6001\u3002<br \/>\n\u4f4d\u56fe\u4e0d\u662f\u4e00\u79cd\u5b9e\u9645\u7684\u6570\u636e\u7c7b\u578b\uff0c\u800c\u662f\u4e00\u7ec4\u5b9a\u4e49\u5728String\u7c7b\u578b\u4e0a\u7684\u9762\u5411\u4f4d\u64cd\u4f5c\u3002\u56e0\u4e3a\u5b57\u7b26\u4e32\u662f\u4e8c\u8fdb\u5236\u5b89\u5168\u7684blob\uff0c\u5b83\u4eec\u7684\u6700\u5927\u957f\u5ea6\u662f512 MB\uff0c\u5b83\u4eec\u9002\u5408\u8bbe\u7f6e\u4e3a2^32\u4e0d\u540c\u7684\u4f4d\u3002<\/p>\n<pre><code class=\"language-bash line-numbers\"># \u8bbe\u7f6e\u67d0\u4e00\u4f4d\u7684\u503c\nSETBIT sign 0 1 # \u8bbe\u7f6esign\u5143\u7d20\u7684\u7b2c0\u4f4d\u7684\u503c\u4e3a1\uff0c\u8fd4\u56de\u503c\u5747\u4e3a0\nSETBIT sign 1 0 # \u8bbe\u7f6esign\u5143\u7d20\u7684\u7b2c1\u4f4d\u7684\u503c\u4e3a0\nSETBIT sign 2 0 # \u8bbe\u7f6esign\u5143\u7d20\u7684\u7b2c2\u4f4d\u7684\u503c\u4e3a0\nSETBIT sign 3 1 # \u8bbe\u7f6esign\u5143\u7d20\u7684\u7b2c3\u4f4d\u7684\u503c\u4e3a1\nSETBIT sign 4 1 # \u8bbe\u7f6esign\u5143\u7d20\u7684\u7b2c4\u4f4d\u7684\u503c\u4e3a1\nSETBIT sign 5 0 # \u8bbe\u7f6esign\u5143\u7d20\u7684\u7b2c5\u4f4d\u7684\u503c\u4e3a0\nSETBIT sign 6 0 # \u8bbe\u7f6esign\u5143\u7d20\u7684\u7b2c6\u4f4d\u7684\u503c\u4e3a0\n\n# \u83b7\u53d6\u67d0\u4e00\u4f4d\u7684\u503c\nGETBIT sign 3 # \u83b7\u53d6sign\u5143\u7d20\u7b2c3\u4f4d\u7684\u503c\nGETBIT sign 6 # \u83b7\u53d6sign\u5143\u7d20\u7b2c6\u4f4d\u7684\u503c\n\n# \u7edf\u8ba1\u6307\u5b9a\u4f4d\u4e0a\u503c\u4e3a1\u7684\u4e2a\u6570\nBITCOUNT sign # \u7edf\u8ba1sign\u5143\u7d20\u6240\u6709\u4f4d\u4e0a\u503c\u4e3a1\u7684\u4e2a\u6570\nBITCOUNT sign 0 3 # \u7edf\u8ba1sign\u5143\u7d20\u7b2c0\u81f33\u4f4d\u4e0a\u88ab\u8bbe\u7f6e\u4e3a1\u7684bit\u6570\uff0c\u5305\u62ec\u7b2c0\u4f4d\uff0c\u4e0d\u5305\u62ec\u7b2c3\u4f4d\n<\/code><\/pre>\n<p>\u4f7f\u7528\u573a\u666f\uff1a<br \/>\n&#8211; \u7edf\u8ba1\u75ab\u60c5\u611f\u67d3\u4eba\u6570\uff0c\u6ca1\u6709\u611f\u67d3\u7684\u75280\u8868\u793a\uff0c\u611f\u67d3\u7684\u75281\u8868\u793a\uff1b<br \/>\n&#8211; \u7edf\u8ba1\u7528\u6237\u4fe1\u606f\uff1a\u662f\u5426\u6d3b\u8dc3\u7528\u6237\u3001\u767b\u5f55\u72b6\u6001\u3001\u662f\u5426\u6253\u5361\u7b49\u53ea\u6709\u4e24\u4e2a\u72b6\u6001\u7684\u6570\u636e\u90fd\u53ef\u4ee5\u4f7f\u7528bitmap\u3002<\/p>\n<h1>\u4e8b\u52a1<\/h1>\n<p>Redis\u4e8b\u52a1\u672c\u8d28\uff1a\u4e00\u7ec4\u547d\u4ee4\u7684\u96c6\u5408\uff08\u5c06\u4e00\u7ec4\u547d\u4ee4\u6309\u987a\u5e8f\u653e\u5165\u961f\u5217\u4e2d\uff0c\u7136\u540e\u4e00\u8d77\u6267\u884c\uff09\u3002\u4e00\u4e2a\u4e8b\u52a1\u4e2d\u7684\u6240\u6709\u547d\u4ee4\u90fd\u4f1a\u88ab\u5e8f\u5217\u5316\uff0c\u5728\u4e8b\u52a1\u6267\u884c\u7684\u8fc7\u7a0b\u4e2d\uff0c\u4f1a\u987a\u5e8f\u6267\u884c\uff01<br \/>\n\u7279\u6027\uff1a\u4e00\u6b21\u6027\u3001\u987a\u5e8f\u6027\u3001\u6392\u4ed6\u6027\uff01\u6267\u884c\u4e00\u7cfb\u5217\u7684\u547d\u4ee4\uff01<br \/>\n<strong><span class=\"text-highlighted-inline\" style=\"background-color: #fffd38;\">Redis\u4e8b\u52a1\u6ca1\u6709\u9694\u79bb\u7ea7\u522b\u7684\u6982\u5ff5<\/span><\/strong><br \/>\n\u6240\u6709\u7684\u547d\u4ee4\u5728\u4e8b\u52a1\u4e2d\uff0c\u5e76\u6ca1\u6709\u76f4\u63a5\u6267\u884c\uff0c\u53ea\u6709\u53d1\u8d77\u6267\u884c\u547d\u4ee4\u7684\u65f6\u5019\u624d\u4f1a\u771f\u6b63\u6267\u884c\u3002<br \/>\n<strong><span class=\"text-highlighted-inline\" style=\"background-color: #fffd38;\">Redis\u7684\u5355\u6761\u547d\u4ee4\u662f\u4fdd\u8bc1\u539f\u5b50\u6027\u7684\uff0c\u4f46\u662fRedis\u4e8b\u52a1\u662f\u4e0d\u4fdd\u8bc1\u539f\u5b50\u6027\u7684\uff01<\/span><\/strong><\/p>\n<p>Redis\u4e8b\u52a1\u7684\u4e09\u4e2a\u9636\u6bb5\uff1a<br \/>\n1. \u5f00\u542f\u4e8b\u52a1\uff08MULTI\uff09<br \/>\n2. \u547d\u4ee4\u5165\u961f\uff08\u524d\u9762\u5b66\u8fc7\u7684\u666e\u901a\u547d\u4ee4\uff09<br \/>\n3. \u6267\u884c\u4e8b\u52a1\uff08EXEC\uff09<\/p>\n<blockquote><p>\n  \u6b63\u5e38\u6267\u884c\u4e8b\u52a1\u7684\u4f8b\u5b50\uff1a\n<\/p><\/blockquote>\n<pre><code class=\"language-bash line-numbers\">127.0.0.1:6379&gt; multi   # \u5f00\u542f\u4e8b\u52a1\nOK\n# \u547d\u4ee4\u5165\u961f\n127.0.0.1:6379(TX)&gt; set k1 v1\nQUEUED\n127.0.0.1:6379(TX)&gt; set k2 v2\nQUEUED\n127.0.0.1:6379(TX)&gt; get k2\nQUEUED\n127.0.0.1:6379(TX)&gt; set k3 v3\nQUEUED\n127.0.0.1:6379(TX)&gt; exec    # \u6267\u884c\u4e8b\u52a1\n1) OK\n2) OK\n3) \"v2\"\n4) OK\n<\/code><\/pre>\n<blockquote><p>\n  \u653e\u5f03\u4e8b\u52a1\u7684\u4f8b\u5b50\n<\/p><\/blockquote>\n<pre><code class=\"language-bash line-numbers\">127.0.0.1:6379&gt; MULTI   # \u5f00\u542f\u4e8b\u52a1\nOK\n# \u547d\u4ee4\u5165\u961f\n127.0.0.1:6379(TX)&gt; set k1 v1 \nQUEUED\n127.0.0.1:6379(TX)&gt; set k4 v4\nQUEUED\n127.0.0.1:6379(TX)&gt; DISCARD # \u653e\u5f03\u4e8b\u52a1\nOK\n127.0.0.1:6379&gt; get k4  # \u7531\u4e8e\u4e0a\u9762\u653e\u5f03\u4e86\u4e8b\u52a1\uff0c\u6240\u4ee5\u4e8b\u52a1\u4e2d\u7684\u961f\u5217\u90fd\u4e0d\u4f1a\u88ab\u6267\u884c\uff0c\u5373k4\u6ca1\u6709\u88ab\u8bbe\u7f6e\uff0c\u8fd9\u91cc\u5c31\u67e5\u4e0d\u5230k4\u4e86\n(nil)\n<\/code><\/pre>\n<blockquote><p>\n  \u9519\u8bef\u7684\u4e8b\u52a1\u2014\u2014\u547d\u4ee4\u9519\u8bef\uff08\u7c7b\u4f3c\u4e8eJava\u4e2d\u7684\u7f16\u8bd1\u578b\u5f02\u5e38\uff09\uff0c\u4e8b\u52a1\u4e2d\u7684\u6240\u6709\u547d\u4ee4\u90fd\u4e0d\u4f1a\u88ab\u6267\u884c\n<\/p><\/blockquote>\n<pre><code class=\"language-bash line-numbers\">127.0.0.1:6379&gt; MULTI   # \u5f00\u542f\u4e8b\u52a1\nOK\n# \u547d\u4ee4\u5165\u961f\n127.0.0.1:6379(TX)&gt; set k1 v1\nQUEUED\n127.0.0.1:6379(TX)&gt; set k2 v2\nQUEUED\n127.0.0.1:6379(TX)&gt; set k3 v3\nQUEUED\n127.0.0.1:6379(TX)&gt; GETSET k3   # \u9519\u8bef\u7684\u547d\u4ee4\n(error) ERR wrong number of arguments for 'getset' command\n127.0.0.1:6379(TX)&gt; set k4 v4\nQUEUED\n127.0.0.1:6379(TX)&gt; set k5 v5\nQUEUED\n127.0.0.1:6379(TX)&gt; EXEC    #\u6267\u884c\u4e8b\u52a1\uff0c\u62a5\u9519\uff01\u6240\u6709\u7684\u547d\u4ee4\u90fd\u4e0d\u4f1a\u6267\u884c\n(error) EXECABORT Transaction discarded because of previous errors.\n127.0.0.1:6379&gt; get k5  # \u56e0\u4e3a\u6240\u6709\u7684\u547d\u4ee4\u90fd\u4e0d\u4f1a\u88ab\u6267\u884c\uff0c\u6240\u4ee5k5\u6ca1\u6709\u88ab\u8bbe\u7f6e\u503c\n(nil)\n<\/code><\/pre>\n<blockquote><p>\n  \u9519\u8bef\u7684\u4e8b\u52a1\u2014\u2014\u8bed\u6cd5\u578b\u9519\u8bef\uff08\u7c7b\u4f3c\u4e8eJava\u4e2d\u7684\u8fd0\u884c\u65f6\u5f02\u5e38\uff09\uff0c\u5176\u4ed6\u547d\u4ee4\u662f\u53ef\u4ee5\u6b63\u5e38\u6267\u884c\u7684\uff0c\u53ea\u6709\u9519\u8bef\u547d\u4ee4\u629b\u51fa\u5f02\u5e38\n<\/p><\/blockquote>\n<pre><code class=\"language-bash line-numbers\">127.0.0.1:6379&gt; set k1 v1   # \u8bbe\u7f6ek1\u7684\u503c\u4e3av1\u5b57\u7b26\u4e32\nOK\n127.0.0.1:6379&gt; multi   # \u5f00\u542f\u4e8b\u52a1\nOK\n# \u547d\u4ee4\u5165\u961f\n127.0.0.1:6379(TX)&gt; incr k1 # \u5c06k1\u7684\u503c\u81ea\u589e1\uff0c\u4f46\u662fk1\u7684\u503c\u9ed8\u8ba4\u4e3a\u5b57\u7b26\u4e32\nQUEUED\n127.0.0.1:6379(TX)&gt; set k2 v2\nQUEUED\n127.0.0.1:6379(TX)&gt; set k3 v3\nQUEUED\n127.0.0.1:6379(TX)&gt; get k3\nQUEUED\n127.0.0.1:6379(TX)&gt; exec    # \u6267\u884c\u4e8b\u52a1\n1) (error) ERR value is not an integer or out of range  # \u867d\u7136\u7b2c\u4e00\u6761\u547d\u4ee4\u62a5\u9519\u4e86\uff0c\u4f46\u662f\u4e8b\u52a1\u548c\u5176\u4ed6\u547d\u4ee4\u4f9d\u65e7\u6267\u884c\u6210\u529f\u4e86\n2) OK\n3) OK\n4) \"v3\"\n127.0.0.1:6379&gt; get k2  # k2\u88ab\u8bbe\u7f6e\u6210\u529f\u4e86\n\"v2\"\n127.0.0.1:6379&gt; get k3  # k3\u88ab\u8bbe\u7f6e\u6210\u529f\u4e86\n\"v3\"\n127.0.0.1:6379&gt; get k1  # k1\u8fd8\u662f\u539f\u6765\u7684\u503c\uff0c\u5e76\u6ca1\u6709\u81ea\u589e\n\"v1\"\n<\/code><\/pre>\n<blockquote><p>\n  \u76d1\u63a7 Watch\n<\/p><\/blockquote>\n<p><strong>\u60b2\u89c2\u9501\uff1a<\/strong><br \/>\n&#8211; \u5f88\u60b2\u89c2\uff1a\u8ba4\u4e3a\u4ec0\u4e48\u65f6\u5019\u90fd\u4f1a\u51fa\u95ee\u9898\uff0c\u65e0\u8bba\u505a\u4ec0\u4e48\u90fd\u4f1a\u52a0\u9501\uff01\u6027\u80fd\u8f83\u5dee\uff01<\/p>\n<p><strong>\u4e50\u89c2\u9501<\/strong><br \/>\n&#8211; \u5f88\u4e50\u89c2\uff1a\u8ba4\u4e3a\u4ec0\u4e48\u65f6\u5019\u90fd\u4e0d\u4f1a\u51fa\u73b0\u95ee\u9898\uff0c\u6240\u4ee5\u4e0d\u4f1a\u4e0a\u9501\uff01\u5728\u66f4\u65b0\u6570\u636e\u7684\u65f6\u5019\u53bb\u5224\u65ad\u4e00\u4e0b\uff0c\u5728\u6b64\u671f\u95f4\u662f\u5426\u6709\u4eba\u4fee\u6539\u8fc7\u8fd9\u4e2a\u6570\u636e\uff01\u6027\u80fd\u8f83\u597d\uff01<br \/>\n&#8211; \u83b7\u53d6version<br \/>\n&#8211; \u66f4\u65b0\u7684\u65f6\u5019\u6bd4\u8f83version<\/p>\n<p><strong>\u4e8b\u52a1\u6b63\u5e38\u7ed3\u675f\uff1a<\/strong><\/p>\n<pre><code class=\"language-bash line-numbers\">127.0.0.1:6379&gt; set money 100   # \u8bbe\u7f6e\u521d\u59cb\u6709100\u5143\u94b1\nOK\n127.0.0.1:6379&gt; set out 0   # \u8bbe\u7f6e\u521d\u59cb\u82b1\u4e860\u5143\nOK\n127.0.0.1:6379&gt; watch money # \u76d1\u89c6money\u5143\u7d20\nOK\n127.0.0.1:6379&gt; multi   # \u5f00\u542f\u4e8b\u52a1\nOK\n127.0.0.1:6379(TX)&gt; DECRBY money 20 # money\u51cf\u5c1120\u5143\uff0c\u5373\u82b1\u4e8620\u5143\nQUEUED\n127.0.0.1:6379(TX)&gt; INCRBY out 20   # out\u589e\u52a020\u5143\nQUEUED\n127.0.0.1:6379(TX)&gt; exec    # \u4e8b\u52a1\u6b63\u5e38\u7ed3\u675f\uff0c\u6570\u636e\u671f\u95f4\u6ca1\u6709\u53d1\u751f\u53d8\u52a8\uff0c\u8fd9\u4e2a\u65f6\u5019\u5c31\u6b63\u5e38\u6267\u884c\u6210\u529f\uff01\n1) (integer) 80\n2) (integer) 20\n<\/code><\/pre>\n<p>\u4e00\u65e6\u4e8b\u52a1\u6267\u884c\u6210\u529f\u4e4b\u540e\uff0c\u76d1\u63a7\u5c31\u4f1a\u81ea\u52a8\u53d6\u6d88\u6389\uff01<\/p>\n<p><strong>\u591a\u7ebf\u7a0b\u4fee\u6539\u503c\uff0c\u4f7f\u7528watch\u53ef\u4ee5\u5f53\u505aredis\u7684\u4e50\u89c2\u9501\u64cd\u4f5c<\/strong><br \/>\n\u7ebf\u7a0b1\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\">127.0.0.1:6379&gt; watch money # \u76d1\u89c6money\nOK\n127.0.0.1:6379&gt; multi   # \u5f00\u542f\u4e8b\u52a1\nOK\n# \u547d\u4ee4\u5165\u961f\n127.0.0.1:6379(TX)&gt; DECRBY money 10\nQUEUED\n127.0.0.1:6379(TX)&gt; INCRBY out 10\nQUEUED\n127.0.0.1:6379(TX)&gt; exec    #\u6267\u884c\u4e8b\u52a1\uff0c\u6267\u884c\u5931\u8d25\uff0c\u56e0\u4e3a\u5728\u76d1\u89c6money\u5230\u6267\u884c\u4e8b\u52a1\u4e4b\u95f4\uff0c\u53e6\u4e00\u4e2a\u7ebf\u7a0b\uff08\u7ebf\u7a0b2\uff09\u4fee\u6539\u4e86money\u7684\u503c\uff0c\u5bfc\u81f4\u4e86\u5f53\u524d\u4e8b\u52a1\u7684\u6267\u884c\u5931\u8d25\n(nil)\n<\/code><\/pre>\n<p>\u7ebf\u7a0b2\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\">127.0.0.1:6379&gt; get money   # \u83b7\u53d6money\u7684\u503c\n\"80\"\n127.0.0.1:6379&gt; set money 1000  # \u4fee\u6539money\u7684\u503c\u4e3a1000\nOK\n<\/code><\/pre>\n<p><strong>\u4e8b\u52a1\u6267\u884c\u5931\u8d25\u540e\uff0c\u8fd8\u60f3\u518d\u6b21\u6267\u884c\u7684<\/strong><\/p>\n<pre><code class=\"language-bash line-numbers\">127.0.0.1:6379&gt; unwatch # \u5148\u653e\u5f03\u76d1\u89c6\uff0c\u76f8\u5f53\u4e8e\u89e3\u9501\nOK\n127.0.0.1:6379&gt; watch money # \u91cd\u65b0\u5f00\u542f\u76d1\u89c6\uff0c\u76f8\u5f53\u4e8e\u83b7\u53d6money\u6700\u65b0\u7684\u503c\nOK\n127.0.0.1:6379&gt; multi   # \u5f00\u542f\u4e8b\u52a1\nOK\n# \u547d\u4ee4\u5165\u961f\n127.0.0.1:6379(TX)&gt; decrby money 10\nQUEUED\n127.0.0.1:6379(TX)&gt; incrby out 10\nQUEUED\n127.0.0.1:6379(TX)&gt; exec    # \u6267\u884c\u4e8b\u52a1\n1) (integer) 990\n2) (integer) 30\n<\/code><\/pre>\n<p>\u4f7f\u7528\u573a\u666f\uff1a<br \/>\n&#8211; \u7535\u5546\u79d2\u6740<\/p>\n<h1>Jedis<\/h1>\n<p>\u6211\u4eec\u8981\u4f7f\u7528Java\u6765\u64cd\u4f5cRedis<\/p>\n<blockquote><p>\n  Jedis\u662fRedis\u5b98\u65b9\u63a8\u8350\u7684java\u8fde\u63a5\u5f00\u53d1\u5de5\u5177\uff01\u4f7f\u7528Java\u64cd\u4f5cRedis\u7684\u4e2d\u95f4\u4ef6\u3002\u5982\u679c\u4f60\u4f7f\u7528Java\u64cd\u4f5cRedis\uff0c\u90a3\u4e48\u4e00\u5b9a\u8981\u5bf9Jedis\u5341\u5206\u7684\u719f\u6089\uff01\n<\/p><\/blockquote>\n<p>\u4f7f\u7528\u6b65\u9aa4\uff1a<br \/>\n1. \u5bfc\u5165\u5bf9\u5e94\u7684\u4f9d\u8d56\uff1b<br \/>\n2. \u7f16\u7801\u6d4b\u8bd5\uff1b<br \/>\n2.1.\u8fde\u63a5\u6570\u636e\u5e93\uff1b<br \/>\n2.2.\u64cd\u4f5c\u547d\u4ee4\uff1b<br \/>\n2.3.\u65ad\u5f00\u8fde\u63a5\u3002<\/p>\n<p><strong>1\u3001\u5bfc\u5165\u5bf9\u5e94\u7684\u4f9d\u8d56<\/strong><\/p>\n<pre data-language=XML><code class=\"language-markup line-numbers\">&lt;dependencies&gt;\n        &lt;!--    \u5bfc\u5165jedis\u7684\u5305 --&gt;\n        &lt;!-- https:\/\/mvnrepository.com\/artifact\/redis.clients\/jedis --&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;redis.clients&lt;\/groupId&gt;\n            &lt;artifactId&gt;jedis&lt;\/artifactId&gt;\n            &lt;version&gt;4.1.1&lt;\/version&gt;\n        &lt;\/dependency&gt;\n        &lt;!-- fastjson  --&gt;\n        &lt;!-- https:\/\/mvnrepository.com\/artifact\/com.alibaba\/fastjson --&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;com.alibaba&lt;\/groupId&gt;\n            &lt;artifactId&gt;fastjson&lt;\/artifactId&gt;\n            &lt;version&gt;1.2.79&lt;\/version&gt;\n        &lt;\/dependency&gt;\n    &lt;\/dependencies&gt;\n<\/code><\/pre>\n<p><strong>2\u3001\u7f16\u7801\u6d4b\u8bd5<\/strong><\/p>\n<pre><code class=\"language-java line-numbers\">public class TestPing {\n    public static void main(String[] args) {\n        \/\/ 1\u3001new Jedis \u5bf9\u8c61\u5373\u53ef\n        Jedis jedis = new Jedis(\"xxx.xxx.xxx.xxx\", 6379);\n        \/\/ \u9a8c\u8bc1redis\u7684\u5bc6\u7801\n        jedis.auth(\"123456\");\n        \/\/ Jedis \u6240\u6709\u7684\u547d\u4ee4\u5c31\u662f\u6211\u4eec\u4e4b\u524d\u5b66\u4e60\u7684\u6240\u6709\u6307\u4ee4\uff01\u4e4b\u524d\u7684\u6240\u6709\u6307\u4ee4\u5728\u8fd9\u91cc\u5c31\u662f\u4e00\u4e2a\u4e2a\u7684\u65b9\u6cd5\u3002\n\n        System.out.printf(jedis.ping());\n    }\n}\n<\/code><\/pre>\n<p>\u8f93\u51fa\uff1a<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/aa5d70dcc84c4314aa8efc85f9705f8b.png\" alt=\"\u8f93\u51fa\" \/><\/p>\n<h2>\u5e38\u7528\u7684API<\/h2>\n<h3>Redis-Key<\/h3>\n<pre><code class=\"language-java line-numbers\">public class TestKey {\n    public static void main(String[] args) {\n        \/\/ \u8fde\u63a5redis\u670d\u52a1\u5668\u5e76\u8f93\u5165\u5bc6\u7801\u9a8c\u8bc1\n        Jedis jedis = new Jedis(\"xxx.xxx.xxx.xxx\", 6379);\n        jedis.auth(\"123456\");\n\n        System.out.println(\"\u6e05\u7a7a\u6570\u636e\uff1a\" + jedis.flushDB());\n        System.out.println(\"\u5224\u65ad\u67d0\u4e2a\u952e\u662f\u5426\u5b58\u5728\" + jedis.exists(\"username\"));\n        System.out.println(\"\u65b0\u589e&lt;username, wuhaohua&gt;\u7684\u952e\u503c\u5bf9\uff1a\" + jedis.set(\"username\", \"wuhaohua\"));\n        System.out.println(\"\u65b0\u589e&lt;password, password&gt;\u7684\u952e\u503c\u5bf9\uff1a\" + jedis.set(\"password\", \"password\"));\n        System.out.println(\"\u7cfb\u7edf\u4e2d\u6240\u6709\u7684\u952e\u5982\u4e0b\uff1a\");\n        Set&lt;String&gt; keys = jedis.keys(\"*\");\n        System.out.println(keys);\n        System.out.println(\"\u5220\u9664\u952epassword\uff1a\" + jedis.del(\"password\"));\n        System.out.println(\"\u5224\u65ad\u952epassword\u662f\u5426\u5b58\u5728\uff1a\" + jedis.exists(\"password\"));\n        System.out.println(\"\u67e5\u770b\u952eusername\u6240\u5b58\u50a8\u7684\u503c\u7684\u7c7b\u578b\uff1a\" + jedis.type(\"username\"));\n        System.out.println(\"\u968f\u673a\u8fd4\u56dekey\u7a7a\u95f4\u7684\u4e00\u4e2a\uff1a\" + jedis.randomKey());\n        System.out.println(\"\u91cd\u547d\u540dkey\uff1a\" + jedis.rename(\"username\", \"name\"));\n        System.out.println(\"\u53d6\u51fa\u6539\u540e\u7684name\uff1a\" + jedis.get(\"name\"));\n        System.out.println(\"\u6309\u7d22\u5f15\u67e5\u8be2\uff1a\" + jedis.select(0));\n        System.out.println(\"\u5220\u9664\u5f53\u524d\u9009\u62e9\u6570\u636e\u5e93\u4e2d\u7684\u6240\u6709key\uff1a\" + jedis.flushDB());\n        System.out.println(\"\u8fd4\u56de\u5f53\u524d\u6570\u636e\u5e93\u4e2dkey\u7684\u6570\u76ee\uff1a\" + jedis.dbSize());\n        System.out.println(\"\u5220\u9664\u6240\u6709\u6570\u636e\u5e93\u4e2d\u7684\u6240\u6709key\uff1a\" + jedis.flushAll());\n    }\n}\n<\/code><\/pre>\n<h3>String<\/h3>\n<pre><code class=\"language-java line-numbers\">public class TestString {\n    public static void main(String[] args) {\n        \/\/ \u8fde\u63a5redis\u670d\u52a1\u5668\u5e76\u8f93\u5165\u5bc6\u7801\u9a8c\u8bc1\n        Jedis jedis = new Jedis(\"xxx.xxx.xxx.xxx\", 6379);\n        jedis.auth(\"123456\");\n\n        jedis.flushDB();\n        System.out.println(\"==========\u589e\u52a0\u6570\u636e==========\");\n        System.out.println(jedis.set(\"key1\", \"value1\"));\n        System.out.println(jedis.set(\"key2\", \"value2\"));\n        System.out.println(jedis.set(\"key3\", \"value3\"));\n        System.out.println(\"\u5220\u9664\u952ekey2\uff1a\" + jedis.del(\"key2\"));\n        System.out.println(\"\u83b7\u53d6\u952ekey2\uff1a\" + jedis.get(\"key2\"));\n        System.out.println(\"\u4fee\u6539key1\uff1a\" + jedis.set(\"key1\", \"value1Changed\"));\n        System.out.println(\"\u83b7\u53d6key1\u7684\u503c\uff1a\" + jedis.get(\"key1\"));\n        System.out.println(\"\u5728key3\u540e\u9762\u52a0\u5165\u503c\uff1a\"+jedis.append(\"key3\", \"End\"));\n        System.out.println(\"key3\u7684\u503c\uff1a\"+jedis.get(\"key3\"));\n        System.out.println(\"\u589e\u52a0\u591a\u4e2a\u952e\u503c\u5bf9\uff1a\"+jedis.mset(\"key01\", \"value01\", \"key02\", \"value02\", \"key03\", \"value03\"));\n        System.out.println(\"\u83b7\u53d6\u591a\u4e2a\u952e\u503c\u5bf9\uff1a\"+jedis.mget(\"key01\", \"key02\", \"key03\"));\n        System.out.println(\"\u83b7\u53d6\u591a\u4e2a\u952e\u503c\u5bf9\uff1a\"+jedis.mget(\"key01\", \"key02\", \"key03\", \"key04\"));\n        System.out.println(\"\u5220\u9664\u591a\u4e2a\u952e\u503c\u5bf9\uff1a\"+jedis.del(\"key01\", \"key02\"));\n        System.out.println(\"\u83b7\u53d6\u591a\u4e2a\u952e\u503c\u5bf9\uff1a\"+jedis.mget(\"key01\", \"key02\", \"key03\"));\n\n        jedis.flushDB();\n        System.out.println(\"==========\u65b0\u589e\u952e\u503c\u5bf9\u9632\u6b62\u8986\u76d6\u539f\u5148\u503c==========\");\n        System.out.println(jedis.setnx(\"key1\", \"value1\"));\n        System.out.println(jedis.setnx(\"key2\", \"value2\"));\n        System.out.println(jedis.setnx(\"key2\", \"value2-new\"));\n        System.out.println(jedis.get(\"key1\"));\n        System.out.println(jedis.get(\"key2\"));\n\n        System.out.println(\"==========\u65b0\u589e\u952e\u503c\u5e76\u8bbe\u7f6e\u6709\u6548\u65f6\u95f4==========\");\n        System.out.println(jedis.setex(\"key3\", 2, \"value3\"));\n        System.out.println(jedis.get(\"key3\"));\n        try {\n            Thread.sleep(3000);\n        } catch (InterruptedException e) {\n            e.printStackTrace();\n        }\n        System.out.println(jedis.get(\"key3\"));\n\n        System.out.println(\"==========\u83b7\u53d6\u539f\u503c\uff0c\u66f4\u65b0\u4e3a\u65b0\u503c==========\");\n        System.out.println(jedis.getSet(\"key2\", \"key2GetSet\"));\n        System.out.println(jedis.get(\"key2\"));\n\n        System.out.println(\"\u83b7\u53d6key2\u7684\u503c\u7684\u5b57\u7b26\u4e32\uff1a\"+jedis.getrange(\"key2\", 2, 4));\n    }\n}\n<\/code><\/pre>\n<h3>List<\/h3>\n<pre><code class=\"language-java line-numbers\">public class TestList {\n    public static void main(String[] args) {\n        \/\/ \u8fde\u63a5redis\u670d\u52a1\u5668\u5e76\u8f93\u5165\u5bc6\u7801\u9a8c\u8bc1\n        Jedis jedis = new Jedis(\"192.168.76.128\", 6379);\n        jedis.auth(\"123456\");\n\n        jedis.flushDB();\n\n        System.out.println(\"==========\u6dfb\u52a0\u4e00\u4e2alist==========\");\n        jedis.lpush(\"collections\", \"ArrayList\", \"Vector\", \"Stack\", \"WeakHashMap\", \"LinkedHashMap\");\n        jedis.lpush(\"collections\", \"HashSet\");\n        jedis.lpush(\"collections\", \"TreeSet\");\n        jedis.lpush(\"collections\", \"TreeMap\");\n        \/\/ -1\u4ee3\u8868\u5012\u6570\u7b2c\u4e00\u4e2a\u5143\u7d20\uff0c-2\u4ee3\u8868\u5012\u6570\u7b2c2\u4e2a\u5143\u7d20\n        System.out.println(\"collections\u7684\u5185\u5bb9\uff1a\" + jedis.lrange(\"collections\", 0, -1));\n        System.out.println(\"collections\u533a\u95f40-3\u7684\u5143\u7d20\uff1a\" + jedis.lrange(\"collections\", 0, 3));\n\n        System.out.println(\"===============================\");\n        \/\/ \u5220\u9664\u5217\u8868\u6307\u5b9a\u7684\u503c\uff0c\u7b2c\u4e8c\u4e2a\u53c2\u6570\u4e3a\u5220\u9664\u7684\u4e2a\u6570\uff08\u6709\u91cd\u590d\u65f6\uff09\uff0c\u540eadd\u8fdb\u53bb\u7684\u503c\u5148\u88ab\u5220\u9664\uff0c\u7c7b\u4f3c\u4e8e\u51fa\u6808\n        System.out.println(\"\u5220\u9664\u6307\u5b9a\u5143\u7d20\u4e2a\u6570\uff1a\" + jedis.lrem(\"collections\", 2, \"HashMap\"));\n        System.out.println(\"collections\u7684\u5185\u5bb9\uff1a\" + jedis.lrange(\"collections\", 0, -1));\n        System.out.println(\"\u5220\u9664\u4e0b\u68070-3\u533a\u95f4\u4e4b\u5916\u7684\u5143\u7d20\uff1a\" + jedis.ltrim(\"collections\", 0, 3));\n        System.out.println(\"collections\u7684\u5185\u5bb9\uff1a\" + jedis.lrange(\"collections\", 0, -1));\n        System.out.println(\"collections\u5217\u8868\u51fa\u6808\uff08\u5de6\u7aef\uff09\uff1a\" + jedis.lpop(\"collections\"));\n        System.out.println(\"collections\u7684\u5185\u5bb9\uff1a\" + jedis.lrange(\"collections\", 0, -1));\n        System.out.println(\"collections\u6dfb\u52a0\u5185\u5bb9\uff0c\u4ece\u5217\u8868\u53f3\u7aef\uff0c\u4e0elpush\u76f8\u5bf9\u5e94\uff1a\" + jedis.rpush(\"collections\", \"EnumMap\"));\n        System.out.println(\"collections\u7684\u5185\u5bb9\uff1a\" + jedis.lrange(\"collections\", 0, -1));\n        System.out.println(\"collections\u5217\u8868\u51fa\u6808\uff08\u53f3\u7aef\uff09\uff1a\" + jedis.rpop(\"collections\"));\n        System.out.println(\"collections\u7684\u5185\u5bb9\uff1a\" + jedis.lrange(\"collections\", 0, -1));\n        System.out.println(\"\u4fee\u6539collections\u6307\u5b9a\u4e0b\u68071\u7684\u5185\u5bb9\uff1a\" + jedis.lset(\"collections\", 1, \"LinkedArrayList\"));\n        System.out.println(\"collections\u7684\u5185\u5bb9\uff1a\" + jedis.lrange(\"collections\", 0, -1));\n\n        System.out.println(\"===============================\");\n        System.out.println(\"collections\u7684\u957f\u5ea6\uff1a\" + jedis.llen(\"collections\"));\n        System.out.println(\"\u83b7\u53d6collections\u4e0b\u6807\u4e3a2\u7684\u5143\u7d20\uff1a\" + jedis.lindex(\"collections\", 2));\n\n        System.out.println(\"===============================\");\n        jedis.lpush(\"sortedList\", \"3\", \"6\", \"2\", \"0\", \"7\", \"4\");\n        System.out.println(\"sortedList\u6392\u5e8f\u524d\uff1a\" + jedis.lrange(\"sortedList\", 0, -1));\n        ;\n        System.out.println(jedis.sort(\"sortedList\"));\n        ;\n        System.out.println(\"sortedList\u6392\u5e8f\u540e\" + jedis.lrange(\"sortedList\", 0, -1));\n        ;\n\n    }\n}\n<\/code><\/pre>\n<h3>Set<\/h3>\n<pre><code class=\"language-java line-numbers\">public class TestSet {\n    public static void main(String[] args) {\n        \/\/ \u8fde\u63a5redis\u670d\u52a1\u5668\u5e76\u8f93\u5165\u5bc6\u7801\u9a8c\u8bc1\n        Jedis jedis = new Jedis(\"xxx.xxx.xxx.xxx\", 6379);\n        jedis.auth(\"123456\");\n\n        jedis.flushDB();\n        System.out.println(\"==========\u5411\u96c6\u5408\u4e2d\u6dfb\u52a0\u5143\u7d20\uff08\u4e0d\u91cd\u590d\uff09==========\");\n        System.out.println(jedis.sadd(\"eleSet\", \"e1\", \"e2\", \"e4\", \"e3\", \"e0\", \"e8\", \"e7\", \"e5\"));\n        System.out.println(jedis.sadd(\"eleSet\", \"e6\"));\n        System.out.println(jedis.sadd(\"eleSrt\", \"e6\"));\n        System.out.println(\"eleSet\u7684\u6240\u6709\u5143\u7d20\uff1a\" + jedis.smembers(\"eleSet\"));\n        System.out.println(\"\u5220\u9664\u4e00\u4e2a\u5143\u7d20e0\uff1a\" + jedis.srem(\"eleSet\", \"e0\"));\n        System.out.println(\"eleSet\u7684\u6240\u6709\u5143\u7d20\uff1a\" + jedis.smembers(\"eleSet\"));\n        System.out.println(\"\u5220\u9664\u4e24\u4e2a\u5143\u7d20e7\u548ce6\uff1a\" + jedis.srem(\"eleSet\", \"e7\", \"e6\"));\n        System.out.println(\"eleSet\u7684\u6240\u6709\u5143\u7d20\uff1a\" + jedis.smembers(\"eleSet\"));\n        System.out.println(\"\u968f\u673a\u7684\u79fb\u9664\u96c6\u5408\u4e2d\u7684\u4e00\u4e2a\u5143\u7d20\uff1a\" + jedis.spop(\"eleSet\"));\n        System.out.println(\"\u968f\u673a\u7684\u79fb\u9664\u96c6\u5408\u4e2d\u7684\u4e00\u4e2a\u5143\u7d20\uff1a\" + jedis.spop(\"eleSet\"));\n        System.out.println(\"eleSet\u7684\u6240\u6709\u5143\u7d20\uff1a\" + jedis.smembers(\"eleSet\"));\n        System.out.println(\"eleSet\u4e2d\u5305\u542b\u7684\u5143\u7d20\u4e2a\u6570\uff1a\" + jedis.scard(\"eleSet\"));\n        System.out.println(\"e3\u662f\u5426\u5728eleSet\u4e2d\uff1a\" + jedis.sismember(\"eleSet\", \"e3\"));\n        System.out.println(\"e1\u662f\u5426\u5728eleSet\u4e2d\uff1a\" + jedis.sismember(\"eleSet\", \"e1\"));\n        System.out.println(\"e5\u662f\u5426\u5728eleSet\u4e2d\uff1a\" + jedis.sismember(\"eleSet\", \"e5\"));\n\n        System.out.println(\"===============================\");\n        System.out.println(jedis.sadd(\"eleSet1\", \"e1\", \"e2\", \"e4\", \"e3\", \"e0\", \"e8\", \"e7\", \"e5\"));\n        System.out.println(jedis.sadd(\"eleSet2\", \"e1\", \"e2\", \"e4\", \"e3\", \"e0\", \"e8\"));\n        System.out.println(\"\u5c06eleSet1\u4e2d\u5220\u9664e1\uff0c\u5e76\u5b58\u5165eleSet3\u4e2d\uff1a\" + jedis.smove(\"eleSet1\", \"eleSet3\", \"e1\"));\n        System.out.println(\"\u5c06eleSet2\u4e2d\u5220\u9664e2\uff0c\u5e76\u5b58\u5165eleSet3\u4e2d\uff1a\" + jedis.smove(\"eleSet2\", \"eleSet3\", \"e2\"));\n        System.out.println(\"eleSet1\u4e2d\u7684\u5143\u7d20\uff1a\" + jedis.smembers(\"eleSet1\"));\n        System.out.println(\"eleSet3\u4e2d\u7684\u5143\u7d20\uff1a\" + jedis.smembers(\"eleSet3\"));\n\n        System.out.println(\"==========\u96c6\u5408\u8fd0\u7b97==========\");\n        System.out.println(\"eleSet1\u4e2d\u7684\u5143\u7d20\uff1a\" + jedis.smembers(\"eleSet1\"));\n        System.out.println(\"eleSet2\u4e2d\u7684\u5143\u7d20\uff1a\" + jedis.smembers(\"eleSet2\"));\n        System.out.println(\"eleSet1\u548celeSet2\u7684\u4ea4\u96c6\uff1a\" + jedis.sinter(\"eleSet1\", \"eleSet2\"));\n        System.out.println(\"eleSet1\u548celeSet2\u7684\u5e76\u96c6\uff1a\" + jedis.sunion(\"eleSet1\", \"eleSet2\"));\n        System.out.println(\"eleSet1\u548celeSet2\u7684\u5dee\u96c6\uff1a\" + jedis.sdiff(\"eleSet1\", \"eleSet2\"));\/\/ eleSet1\u4e2d\u6709\uff0celeSet2\u4e2d\u6ca1\u6709\u7684\u5143\u7d20\n        \/\/ \u6c42\u4ea4\u96c6\u5e76\u5c06\u4ea4\u96c6\u4fdd\u5b58\u5230eleSet4\u7684\u96c6\u5408\u4e2d\n        jedis.sinterstore(\"eleSet4\", \"eleSet1\", \"eleSet2\");\n        System.out.println(\"eleSet4\u4e2d\u7684\u5143\u7d20\uff1a\" + jedis.smembers(\"eleSet4\"));\n    }\n}\n<\/code><\/pre>\n<h3>Hash<\/h3>\n<pre><code class=\"language-java line-numbers\">public class TestHash {\n    public static void main(String[] args) {\n        \/\/ \u8fde\u63a5redis\u670d\u52a1\u5668\u5e76\u8f93\u5165\u5bc6\u7801\u9a8c\u8bc1\n        Jedis jedis = new Jedis(\"xxx.xxx.xxx.xxx\", 6379);\n        jedis.auth(\"123456\");\n\n        jedis.flushDB();\n\n        Map&lt;String, String&gt; map = new HashMap&lt;&gt;();\n        map.put(\"key1\", \"value1\");\n        map.put(\"key2\", \"value2\");\n        map.put(\"key3\", \"value3\");\n        map.put(\"key4\", \"value4\");\n        \/\/ \u6dfb\u52a0\u540d\u79f0\u4e3ahash\uff08key\uff09\u7684hash\u5143\u7d20\n        jedis.hmset(\"hash\", map);\n        \/\/ \u5411\u540d\u4e3ahash\u7684hash\u4e2d\u6dfb\u52a0key\u4e3akey5\uff0cvalue\u4e3avalue5\u7684\u5143\u7d20\n        jedis.hset(\"hash\", \"key5\", \"value5\");\n        System.out.println(\"\u6563\u5217hash\u7684\u6240\u6709\u952e\u503c\u5bf9\u4e3a\uff1a\" + jedis.hgetAll(\"hash\"));\n        System.out.println(\"\u6563\u5217hash\u7684\u6240\u6709\u952e\u4e3a\uff1a\" + jedis.hkeys(\"hash\"));\n        System.out.println(\"\u6563\u5217hash\u7684\u6240\u6709\u503c\u4e3a\uff1a\" + jedis.hvals(\"hash\"));\n        System.out.println(\"\u5c06key6\u4fdd\u5b58\u7684\u503c\u52a0\u4e0a\u4e00\u4e2a\u6574\u6570\uff0c\u5982\u679ckey6\u4e0d\u5b58\u5728\u5219\u6dfb\u52a0key6\uff1a\" + jedis.hincrBy(\"hash\", \"key6\", 6));\n        System.out.println(\"\u6563\u5217hash\u7684\u6240\u6709\u952e\u503c\u5bf9\u4e3a\uff1a\" + jedis.hgetAll(\"hash\"));\n        System.out.println(\"\u5c06key6\u4fdd\u5b58\u7684\u503c\u52a0\u4e0a\u4e00\u4e2a\u6574\u6570\uff0c\u5982\u679ckey6\u4e0d\u5b58\u5728\u5219\u6dfb\u52a0key6\uff1a\" + jedis.hincrBy(\"hash\", \"key6\", 3));\n        System.out.println(\"\u6563\u5217hash\u7684\u6240\u6709\u952e\u503c\u5bf9\u4e3a\uff1a\" + jedis.hgetAll(\"hash\"));\n        System.out.println(\"\u5220\u9664\u4e00\u4e2a\u6216\u8005\u591a\u4e2a\u952e\u503c\u5bf9\uff1a\" + jedis.hdel(\"hash\", \"key2\"));\n        System.out.println(\"\u6563\u5217hash\u7684\u6240\u6709\u952e\u503c\u5bf9\u4e3a\uff1a\" + jedis.hgetAll(\"hash\"));\n        System.out.println(\"\u6563\u5217hash\u4e2d\u952e\u503c\u5bf9\u7684\u4e2a\u6570\uff1a\" + jedis.hlen(\"hash\"));\n        System.out.println(\"\u5224\u65adhash\u4e2d\u662f\u5426\u5b58\u5728key2\uff1a\" + jedis.hexists(\"hash\", \"key2\"));\n        System.out.println(\"\u5224\u65adhash\u4e2d\u662f\u5426\u5b58\u5728key3\uff1a\" + jedis.hexists(\"hash\", \"key3\"));\n        System.out.println(\"\u83b7\u53d6hash\u4e2d\u7684\u503c\uff1a\" + jedis.hmget(\"hash\", \"key3\"));\n        System.out.println(\"\u83b7\u53d6hash\u4e2d\u7684\u503c\uff1a\" + jedis.hmget(\"hash\", \"key3\", \"key4\"));\n    }\n}\n<\/code><\/pre>\n<blockquote><p>\n  \u6240\u6709\u7684API\u547d\u4ee4\uff0c\u5c31\u662f\u6211\u4eec\u5b66\u4e60\u7684\u5bf9\u5e94\u7684\u6307\u4ee4\uff0c\u4e00\u4e2a\u90fd\u6ca1\u6709\u53d8\u5316\uff01\n<\/p><\/blockquote>\n<h3>\u4e8b\u52a1<\/h3>\n<pre><code class=\"language-java line-numbers\">public class TestTX {\n    public static void main(String[] args) {\n        \/\/ \u8fde\u63a5redis\u670d\u52a1\u5668\u5e76\u8f93\u5165\u5bc6\u7801\u9a8c\u8bc1\n        Jedis jedis = new Jedis(\"xxx.xxx.xxx.xxx\", 6379);\n        jedis.auth(\"123456\");\n\n        jedis.flushDB();\n\n        \/\/ \u51c6\u5907\u6570\u636e\n        JSONObject jsonObject = new JSONObject();\n        jsonObject.put(\"hello\", \"world\");\n        jsonObject.put(\"name\", \"xiaoming\");\n        String result = jsonObject.toJSONString();\n\n        \/\/ \u5f00\u542f\u4e8b\u52a1\n        Transaction multi = jedis.multi();\n\/\/        jedis.watch(result);\n        try {\n            multi.set(\"user1\", result);\n            multi.set(\"user2\", result);\n\n            \/\/ \u4ee3\u7801\u629b\u51fa\u5f02\u5e38\uff0c\u4e8b\u52a1\u6267\u884c\u5931\u8d25\n            int i = 1 \/ 0;\n\n            \/\/ \u6267\u884c\u4e8b\u52a1\n            multi.exec();\n        } catch (Exception ex) {\n            \/\/ \u653e\u5f03\u4e8b\u52a1\n            multi.discard();\n            ex.printStackTrace();\n        } finally {\n            \/\/ \u67e5\u8be2\u6570\u636e\n            System.out.println(\"user1\u7684\u4fe1\u606f\uff1a\" + jedis.get(\"user1\"));\n            System.out.println(\"user2\u7684\u4fe1\u606f\uff1a\" + jedis.get(\"user2\"));\n\n            \/\/ \u5173\u95ed\u8fde\u63a5\n            jedis.close();\n        }\n    }\n}\n<\/code><\/pre>\n<h1>SpringBoot\u6574\u5408<\/h1>\n<p>SpringBoot\u64cd\u4f5c\u6570\u636e\u4f7f\u7528\u7684\u662fspring-data jpa jdbc mongodb redis\uff01<br \/>\nSpringData\u4e5f\u662f\u548cSpringBoot\u9f50\u540d\u7684\u9879\u76ee\u3002<br \/>\n\u8bf4\u660e\uff1aSpringBoot 2.x\u4e4b\u540e\uff0c\u539f\u6765\u4f7f\u7528\u7684jedis\u88ab\u66ff\u6362\u6210\u4e86lettuce\u3002<br \/>\njedis\uff1a\u5e95\u5c42\u91c7\u7528\u7684\u662f\u76f4\u8fde\u6280\u672f\uff0c\u5982\u679c\u6709\u591a\u4e2a\u7ebf\u7a0b\u64cd\u4f5c\u7684\u8bdd\uff0c\u662f\u4e0d\u5b89\u5168\u7684\uff0c\u5982\u679c\u60f3\u8981\u907f\u514d\u4e0d\u5b89\u5168\u7684\u95ee\u9898\uff0c\u5c31\u9700\u8981\u4f7f\u7528jedis pool\u8fde\u63a5\u6c60\u6280\u672f\uff01\u7c7b\u4f3c\u4e8eBIO\u6a21\u5f0f\uff08\u963b\u585e\u7684\uff09\u3002<br \/>\nlettuce\uff1a\u5e95\u5c42\u91c7\u7528\u7684\u662fnetty\uff0c\u5b9e\u4f8b\u53ef\u4ee5\u5728\u591a\u4e2a\u7ebf\u7a0b\u4e2d\u8fdb\u884c\u5171\u4eab\uff0c\u4e0d\u5b58\u5728\u7ebf\u7a0b\u4e0d\u5b89\u5168\u7684\u60c5\u51b5\uff0c\u53ef\u4ee5\u51cf\u5c11\u7ebf\u7a0b\u6570\u636e\u3002\u7c7b\u4f3c\u4e8eNIO\u6a21\u5f0f\u3002<\/p>\n<p>\u6e90\u7801\u5206\u6790\uff1a<\/p>\n<pre><code class=\"language-java line-numbers\">@Configuration(\n    proxyBeanMethods = false\n)\n@ConditionalOnClass({RedisOperations.class})\n@EnableConfigurationProperties({RedisProperties.class})\n@Import({LettuceConnectionConfiguration.class, JedisConnectionConfiguration.class})\npublic class RedisAutoConfiguration {\n    public RedisAutoConfiguration() {\n    }\n\n    @Bean\n    \/\/ \u4ee3\u8868\u9ed8\u8ba4\u4f7f\u7528redisTemplate\u7684Bean\uff0c\u6211\u4eec\u4e5f\u53ef\u4ee5\u81ea\u5df1\u5b9a\u4e49\u4e00\u4e2aredisTemplate\u6765\u66ff\u6362\u8fd9\u4e2a\u9ed8\u8ba4\u7684Bean\n    @ConditionalOnMissingBean(\n        name = {\"redisTemplate\"}\n    )\n    @ConditionalOnSingleCandidate(RedisConnectionFactory.class)\n    public RedisTemplate&lt;Object, Object&gt; redisTemplate(RedisConnectionFactory redisConnectionFactory) {\n        \/\/ \u9ed8\u8ba4\u7684RedisTemplate\u6ca1\u6709\u8fc7\u591a\u7684\u8bbe\u7f6e\uff0credis\u5bf9\u8c61\u90fd\u662f\u9700\u8981\u5e8f\u5217\u5316\u7684\n        \/\/ \u4e24\u4e2a\u6cdb\u578b\u90fd\u662f Object\u7684\u7c7b\u578b\uff0c\u6211\u4eec\u540e\u9762\u4f7f\u7528\u9700\u8981\u5f3a\u5236\u8f6c\u6362\uff0c\u6211\u4eec\u671f\u671b\u7684\u5176\u5b9e\u662f&lt;String, Object&gt;\n        RedisTemplate&lt;Object, Object&gt; template = new RedisTemplate();\n        template.setConnectionFactory(redisConnectionFactory);\n        return template;\n    }\n\n    @Bean\n    @ConditionalOnMissingBean\n    @ConditionalOnSingleCandidate(RedisConnectionFactory.class)\n    \/\/ \u7531\u4e8eString\u662fredis\u4e2d\u6700\u5e38\u4f7f\u7528\u7684\u7c7b\u578b\uff0c\u6240\u4ee5\u5355\u72ec\u63d0\u51fa\u6765\u4e86\u4e00\u4e2aBean\n    public StringRedisTemplate stringRedisTemplate(RedisConnectionFactory redisConnectionFactory) {\n        return new StringRedisTemplate(redisConnectionFactory);\n    }\n}\n<\/code><\/pre>\n<p>\u4f7f\u7528\u6b65\u9aa4\uff1a<br \/>\n1. \u5bfc\u5165\u4f9d\u8d56<br \/>\n2. \u914d\u7f6e\u8fde\u63a5<br \/>\n3. \u6d4b\u8bd5\uff01<\/p>\n<p><strong>1\u3001\u5bfc\u5165\u4f9d\u8d56<\/strong><\/p>\n<pre data-language=XML><code class=\"language-markup line-numbers\">&lt;!--    \u64cd\u4f5credis\u7684\u7c7b\u5e93  --&gt;\n&lt;dependency&gt;\n    &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n    &lt;artifactId&gt;spring-boot-starter-data-redis-reactive&lt;\/artifactId&gt;\n&lt;\/dependency&gt;\n<\/code><\/pre>\n<p><strong>2\u3001\u914d\u7f6e\u8fde\u63a5<\/strong><\/p>\n<pre><code class=\"language-properties line-numbers\"># SpringBoot \u6240\u6709\u7684\u914d\u7f6e\u7c7b\uff0c\u90fd\u6709\u4e00\u4e2a\u81ea\u52a8\u914d\u7f6e\u7c7b RedisAutoConfiguration\n# \u81ea\u52a8\u914d\u7f6e\u7c7b\u90fd\u4f1a\u7ed1\u5b9a\u4e00\u4e2aproperties\u914d\u7f6e\u6587\u4ef6 RedisProperties\n\n# \u914d\u7f6eredis\nspring.redis.host=xxx.xxx.xxx.xxx\nspring.redis.port=6379\nspring.redis.password=123456\n<\/code><\/pre>\n<p><strong>3\u3001\u6d4b\u8bd5\uff01<\/strong><\/p>\n<pre><code class=\"language-java line-numbers\">@SpringBootTest\nclass Redis02SpringbootApplicationTests {\n\n    @Autowired\n    private RedisTemplate redisTemplate;\n\n    @Test\n    void contextLoads() {\n\n        \/\/ redisTemplate\n        \/\/ opsForValue  \u64cd\u4f5c\u5b57\u7b26\u4e32   \u7c7b\u4f3cString\n        \/\/ opsForList   \u64cd\u4f5cList      \u7c7b\u4f3cList\n        \/\/ opsForSet    \u64cd\u4f5cSet\n        \/\/ opsForHash   \u64cd\u4f5cHash\n        \/\/ opsForZSet   \u64cd\u4f5cZSet\n        \/\/ opsForGeo    \u64cd\u4f5cgeospatial\n\n        \/\/ \u9664\u4e86\u57fa\u672c\u7684\u64cd\u4f5c\uff0c\u6211\u4eec\u5e38\u7528\u7684\u65b9\u6cd5\u90fd\u53ef\u4ee5\u901a\u8fc7redisTemplate\u64cd\u4f5c\uff0c\u6bd4\u5982\u5b9e\u7269\uff0c\u548c\u57fa\u672c\u7684\n\n        \/\/ \u83b7\u53d6redis\u7684\u8fde\u63a5\u5bf9\u8c61\n\/\/      RedisConnection connection = redisTemplate.getConnectionFactory().getConnection();\n\/\/      connection.flushDb();\n\/\/      connection.flushAll();\n\n        redisTemplate.opsForValue().set(\"mykey\", \"kuangshen\");\n        System.out.println(redisTemplate.opsForValue().get(\"mykey\"));\n    }\n}\n<\/code><\/pre>\n<p><strong>\u9605\u8bfbRedisTemplate\u6e90\u7801\uff1a<\/strong><br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/c80b3d29bb7243269f3f116dca6faf86.png?x-oss-process=image\/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZmFpdGjnkZ7or5o=,size_20,color_FFFFFF,t_70,g_se,x_16\" alt=\"\u5e8f\u5217\u5316\u914d\u7f6e\" \/><img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/d3dabd95d85a42dfa869b84a63275881.png?x-oss-process=image\/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZmFpdGjnkZ7or5o=,size_20,color_FFFFFF,t_70,g_se,x_16\" alt=\"\u9ed8\u8ba4\u7684\u5e8f\u5217\u5316\u65b9\u5f0f\u662fJDK\u5e8f\u5217\u5316\" \/><br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/d7fcf25e97fe4912b73935a8711cb19f.png?x-oss-process=image\/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZmFpdGjnkZ7or5o=,size_20,color_FFFFFF,t_70,g_se,x_16\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n<strong>\u6211\u4eec\u6765\u7f16\u5199\u4e00\u4e2a\u81ea\u5df1\u7684RedisTemplate\uff1a<\/strong><\/p>\n<pre><code class=\"language-java line-numbers\">package com.kuang.config;\n\n\nimport com.fasterxml.jackson.annotation.JsonAutoDetect;\nimport com.fasterxml.jackson.annotation.PropertyAccessor;\nimport com.fasterxml.jackson.databind.ObjectMapper;\nimport org.springframework.context.annotation.Bean;\nimport org.springframework.context.annotation.Configuration;\nimport org.springframework.data.redis.connection.RedisConnectionFactory;\nimport org.springframework.data.redis.core.RedisTemplate;\nimport org.springframework.data.redis.serializer.Jackson2JsonRedisSerializer;\nimport org.springframework.data.redis.serializer.StringRedisSerializer;\n\n@Configuration\npublic class RedisConfig {\n\n    \/\/ \u7f16\u5199\u6211\u4eec\u81ea\u5df1\u7684RedisTemplate\n    @Bean\n    @SuppressWarnings(\"all\")\n    public RedisTemplate&lt;String, Object&gt; redisTemplate(RedisConnectionFactory redisConnectionFactory) {\n        \/\/ \u6211\u4eec\u4e3a\u4e86\u81ea\u5df1\u5f00\u53d1\u65b9\u4fbf\uff0c\u4e00\u822c\u53ea\u63a5\u4f7f\u7528&lt;String, Objec&gt;\u6cdb\u578b\n        RedisTemplate&lt;String, Object&gt; template = new RedisTemplate();\n        template.setConnectionFactory(redisConnectionFactory);\n\n        \/\/ \u914d\u7f6e\u5177\u4f53\u7684\u5e8f\u5217\u5316\u65b9\u5f0f\n        \/\/ Json\u7684\u5e8f\u5217\u5316\n        Jackson2JsonRedisSerializer&lt;Object&gt; jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer&lt;Object&gt;(Object.class);\n        ObjectMapper om = new ObjectMapper();\n        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);\n        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);\n        jackson2JsonRedisSerializer.setObjectMapper(om);\n        template.setKeySerializer(jackson2JsonRedisSerializer);\n        \/\/ String\u7684\u5e8f\u5217\u5316\n        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();\n\n        \/\/ key\u91c7\u7528String\u7684\u5e8f\u5217\u5316\u65b9\u5f0f\n        template.setKeySerializer(stringRedisSerializer);\n        \/\/ hash\u7684key\u4e5f\u91c7\u7528String\u7684\u5e8f\u5217\u5316\u65b9\u5f0f\n        template.setHashKeySerializer(stringRedisSerializer);\n        \/\/ value\u5e8f\u5217\u5316\u65b9\u5f0f\u91c7\u7528jackson\n        template.setValueSerializer(jackson2JsonRedisSerializer);\n        template.afterPropertiesSet();\n\n        return template;\n    }\n}\n<\/code><\/pre>\n<blockquote><p>\n  \u5728\u771f\u5b9e\u7684\u5f00\u53d1\u573a\u666f\u4e2d\uff0c\u4e0d\u4f1a\u76f4\u63a5\u4f7f\u7528RedisTemplate\u7c7b\uff0c\u800c\u662f\u901a\u8fc7\u5c01\u88c5\u5de5\u5177\u7c7b\u7684\u65b9\u5f0f\u8fdb\u884c\u4f7f\u7528\u3002\n<\/p><\/blockquote>\n<pre><code class=\"language-java line-numbers\">@Component\npublic class RedisUtils {\n\n    @Autowired\n    private RedisTemplate&lt;String, Object&gt; redisTemplate;\n\n    \/***\n     * @param key \u952e\u540d\n     * @param time \u5931\u6548\u65f6\u95f4\uff08\u79d2\uff09\n     * @return {@link {@link boolean}} \u8bbe\u7f6e\u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25\u8fd4\u56defalse\n     * @Description: \u6307\u5b9a\u7f13\u5b58\u5931\u6548\u65f6\u95f4\n     **\/\n    public boolean expire(String key, long time) {\n        try {\n            if (time &gt; 0) {\n                redisTemplate.expire(key, time, TimeUnit.SECONDS);\n            }\n            return true;\n        } catch (Exception ex) {\n            ex.printStackTrace();\n            return false;\n        }\n    }\n\n    \/***\n     * @param key \u952e\u540d\n     * @return {@link {@link long}} \u65f6\u95f4\uff08\u79d2\uff09\uff0c\u8fd4\u56de0\u4ee3\u8868\u4e3a\u6c38\u4e45\u6709\u6548\n     * @Description: \u6839\u636ekey\u83b7\u53d6\u8fc7\u671f\u65f6\u95f4\n     **\/\n    public long getExpire(String key) {\n        return redisTemplate.getExpire(key, TimeUnit.SECONDS);\n    }\n\n    \/***\n     * @param key \u952e\u540d\n     * @return {@link {@link boolean}} \u82e5\u5b58\u5728\u5219\u8fd4\u56detrue\uff0c\u82e5\u4e0d\u5b58\u5728\u5219\u8fd4\u56defalse\n     * @Description: \u5224\u65adkey\u662f\u5426\u5b58\u5728\n     **\/\n    public boolean hasKey(String key) {\n        try {\n            return redisTemplate.hasKey(key);\n        } catch (Exception ex) {\n            ex.printStackTrace();\n            return false;\n        }\n    }\n\n    \/***\n     * @param key \u952e\u540d\uff0c\u53ef\u4ee5\u4f20\u4e00\u4e2a\u503c\uff0c\u4e5f\u53ef\u4ee5\u4f20\u591a\u4e2a\n     * @Description: \u5220\u9664\u7f13\u5b58\n     **\/\n    public void del(String... key) {\n        if (key != null &amp;&amp; key.length &gt; 0) {\n            if (key.length == 1) {\n                redisTemplate.delete(key[0]);\n            } else {\n                redisTemplate.delete((Collection&lt;String&gt;) CollectionUtils.arrayToList(key));\n            }\n        }\n    }\n\n    \/\/ ==================== String\u64cd\u4f5c ===============================\n\n    \/***\n     * @param key \u952e\u540d\n     * @return {@link {@link java.lang.Object}} \u503c\n     * @Description: \u83b7\u53d6\u7f13\u5b58\n     **\/\n    public Object get(String key) {\n        return key == null ? null : redisTemplate.opsForValue().get(key);\n    }\n\n    \/***\n     * @param key \u952e\u540d\n     * @param value \u503c\n     * @return {@link {@link boolean}} \u4fdd\u5b58\u6210\u529f\u8fd4\u56detrue\uff0c\u4fdd\u5b58\u5931\u8d25\u8fd4\u56defalse\n     * @Description: \u8bbe\u7f6e\u7f13\u5b58\n     **\/\n    public boolean set(String key, Object value) {\n        try {\n            redisTemplate.opsForValue().set(key, value);\n            return true;\n        } catch (Exception ex) {\n            ex.printStackTrace();\n            return false;\n        }\n    }\n\n    \/***\n     * @param key \u952e\u540d\n     * @param value \u503c\n     * @param time \u5931\u6548\u65f6\u95f4\uff08\u79d2\uff09\uff0c\u82e5time\u5c0f\u4e8e\u7b49\u4e8e0\uff0c\u5219\u4e0d\u4f1a\u5931\u6548\n     * @return {@link {@link boolean}} \u4fdd\u5b58\u6210\u529f\u8fd4\u56detrue\uff0c\u4fdd\u5b58\u5931\u8d25\u8fd4\u56defalse\n     * @Description: \u8bbe\u7f6e\u7f13\u5b58\u5e76\u8bbe\u7f6e\u5931\u6548\u65f6\u95f4\n     **\/\n    public boolean set(String key, Object value, long time) {\n        try {\n            if (time &gt; 0) {\n                redisTemplate.opsForValue().set(key, value, time, TimeUnit.SECONDS);\n            } else {\n                set(key, value);\n            }\n            return true;\n        } catch (Exception ex) {\n            ex.printStackTrace();\n            return false;\n        }\n    }\n\n    \/***\n     * @param key \u952e\u540d\n     * @param delta \u9012\u589e\u56e0\u5b50\uff08\u5fc5\u987b\u5927\u4e8e0\uff09\n     * @return {@link {@link long}} value\u81ea\u589e\u4e4b\u540e\u7684\u503c\n     * @throws RuntimeException \u81ea\u589e\u56e0\u5b50\u5c0f\u4e8e\u7b49\u4e8e0\u65f6\uff0c\u629b\u51fa\u8fd0\u884c\u65f6\u5f02\u5e38\n     * @Description: \u81ea\u589e\n     **\/\n    public long incr(String key, long delta) {\n        if (delta &lt;= 0) {\n            throw new RuntimeException(\"\u9012\u589e\u56e0\u5b50\u5fc5\u987b\u5927\u4e8e0\");\n        }\n        return redisTemplate.opsForValue().increment(key, delta);\n    }\n\n    \/***\n     * @param key \u952e\u540d\n     * @param delta \u9012\u51cf\u56e0\u5b50\uff08\u5fc5\u987b\u5927\u4e8e0\uff09\n     * @return {@link {@link long}} value\u81ea\u51cf\u4e4b\u540e\u7684\u503c\n     * @throws RuntimeException \u81ea\u589e\u56e0\u5b50\u5c0f\u4e8e\u7b49\u4e8e0\u65f6\uff0c\u629b\u51fa\u8fd0\u884c\u65f6\u5f02\u5e38\n     * @Description: \u81ea\u51cf\n     **\/\n    public long decr(String key, long delta) {\n        if (delta &lt;= 0) {\n            throw new RuntimeException(\"\u9012\u51cf\u56e0\u5b50\u5fc5\u987b\u5927\u4e8e0\");\n        }\n        return redisTemplate.opsForValue().decrement(key, delta);\n    }\n\n    \/\/ ==================== Hash\u64cd\u4f5c ===============================\n\n    \/***\n     * @param key \u952e\u540d\n     * @return {@link {@link java.util.Map&lt;java.lang.Object,java.lang.Object&gt;}} \u5bf9\u5e94\u7684\u591a\u4e2a\u952e\u503c\n     * @Description: \u83b7\u53d6hashKey\u5bf9\u5e94\u7684\u6240\u6709\u952e\u503c\n     **\/\n    public Map&lt;Object, Object&gt; hmget(String key) {\n        return redisTemplate.opsForHash().entries(key);\n    }\n\n    \/***\n     * @param key \u952e\u540d\n     * @param map \u5bf9\u5e94\u7684\u591a\u4e2a\u952e\u503c\n     * @return {@link {@link boolean}} \u5f53\u8bbe\u7f6e\u6210\u529f\u65f6\u8fd4\u56detrue\uff0c\u5931\u8d25\u8fd4\u56defalse\n     * @Description: \u5411key\u4e2d\u4fdd\u5b58\u591a\u4e2a\u952e\u503c\n     **\/\n    public boolean hmset(String key, Map&lt;String, Object&gt; map) {\n        try {\n            redisTemplate.opsForHash().putAll(key, map);\n            return true;\n        } catch (Exception ex) {\n            ex.printStackTrace();\n            return false;\n        }\n    }\n\n    \/***\n     * @param key \u952e\u540d\n     * @param map \u5bf9\u5e94\u7684\u591a\u4e2a\u952e\u503c\n     * @param time \u5931\u6548\u65f6\u95f4\uff08\u79d2\uff09\uff0c\u5fc5\u987b\u5927\u4e8e0\n     * @return {@link {@link boolean}} \u5f53\u8bbe\u7f6e\u6210\u529f\u65f6\u8fd4\u56detrue\uff0c\u5931\u8d25\u8fd4\u56defalse\n     * @Description: \u5411key\u4e2d\u4fdd\u5b58\u591a\u4e2a\u952e\u503c\uff0c\u5e76\u8bbe\u7f6e\u5931\u6548\u65f6\u95f4\n     **\/\n    public boolean hmset(String key, Map&lt;String, Object&gt; map, long time) {\n        try {\n            redisTemplate.opsForHash().putAll(key, map);\n            if (time &gt; 0) {\n                expire(key, time);\n            }\n            return true;\n        } catch (Exception ex) {\n            ex.printStackTrace();\n            return false;\n        }\n    }\n\n    \/***\n     * @param key \u952e\u540d\n     * @param item \u9879\n     * @param value \u503c\n     * @return {@link {@link boolean}} \u4fdd\u5b58\u6210\u529f\u8fd4\u56detrue\uff0c \u5931\u8d25\u8fd4\u56defalse\n     * @Description: \u5411\u4e00\u5f20hash\u8868\u4e2d\u653e\u5165\u6570\u636e\uff0c\u5982\u679c\u4e0d\u5b58\u5728\u5219\u521b\u5efa\n     **\/\n    public boolean hset(String key, String item, Object value) {\n        try {\n            redisTemplate.opsForHash().put(key, item, value);\n            return true;\n        } catch (Exception ex) {\n            ex.printStackTrace();\n            return false;\n        }\n    }\n\n    \/***\n     * @param key \u952e\u540d\n     * @param item \u9879\n     * @param value \u503c\n     * @param time \u5931\u6548\u65f6\u95f4\uff08\u79d2\uff09\uff0c\u5fc5\u987b\u5927\u4e8e0\n     * @return {@link {@link boolean}}\n     * @Description: \u5411\u4e00\u5f20hash\u8868\u4e2d\u653e\u5165\u6570\u636e\uff0c\u5982\u679c\u4e0d\u5b58\u5728\u5219\u521b\u5efa\uff0c\u5e76\u8bbe\u7f6e\u5931\u6548\u65f6\u95f4\n     **\/\n    public boolean hset(String key, String item, Object value, long time) {\n        try {\n            redisTemplate.opsForHash().put(key, item, value);\n            if (time &gt; 0) {\n                expire(key, time);\n            }\n            return true;\n        } catch (Exception ex) {\n            ex.printStackTrace();\n            return false;\n        }\n    }\n\n    \/***\n     * @param key \u952e\u540d\n     * @param item \u9879\uff0c\u53ef\u4ee5\u662f\u4e00\u4e2a\uff0c\u4e5f\u53ef\u4ee5\u662f\u591a\u4e2a\n     * @Description: \u5220\u9664hash\u8868\u4e2d\u7684\u503c\n     **\/\n    public void hdel(String key, Object... item) {\n        redisTemplate.opsForHash().delete(key, item);\n    }\n\n    \/***\n     * @param key \u952e\u540d\n     * @param item \u9879\n     * @return {@link {@link boolean}} \u5982\u679c\u6709\u8be5\u9879\u7684\u503c\u5219\u8fd4\u56detrue\uff0c\u5426\u5219\u8fd4\u56defalse\n     * @Description: \u5224\u65adhash\u8868\u4e2d\u662f\u5426\u6709\u8be5\u9879\u7684\u503c\n     **\/\n    public boolean hHasKey(String key, String item) {\n        return redisTemplate.opsForHash().hasKey(key, item);\n    }\n\n    \/***\n     * @param key \u952e\u540d\n     * @param item \u9879\n     * @param by \u81ea\u589e\u56e0\u5b50\uff08\u5fc5\u987b\u5927\u4e8e0\uff09\n     * @return {@link {@link double}} \u81ea\u589e\u4e4b\u540e\u7684\u7ed3\u679c\n     * @Description: hash\u9012\u589e \u5982\u679c\u4e0d\u5b58\u5728\uff0c\u5c31\u4f1a\u521b\u5efa\u4e00\u4e2a\n     **\/\n    public double hincr(String key, String item, double by) {\n        if (by &lt;= 0) {\n            throw new RuntimeException(\"\u9012\u589e\u56e0\u5b50\u5fc5\u987b\u5927\u4e8e0\");\n        }\n        return redisTemplate.opsForHash().increment(key, item, by);\n    }\n\n    \/***\n     * @param key \u952e\u540d\n     * @param item \u9879\n     * @param by \u81ea\u51cf\u56e0\u5b50\uff08\u5fc5\u987b\u5927\u4e8e0\uff09\n     * @return {@link {@link double}} \u81ea\u51cf\u4e4b\u540e\u7684\u7ed3\u679c\n     * @Description: hash\u9012\u589e \u5982\u679c\u4e0d\u5b58\u5728\uff0c\u5c31\u4f1a\u521b\u5efa\u4e00\u4e2a\n     **\/\n    public double hdecr(String key, String item, double by) {\n        if (by &lt;= 0) {\n            throw new RuntimeException(\"\u9012\u51cf\u56e0\u5b50\u5fc5\u987b\u5927\u4e8e0\");\n        }\n        return redisTemplate.opsForHash().increment(key, item, -by);\n    }\n\n    \/\/ ==================== Set\u64cd\u4f5c ===============================\n\n    \/***\n     * @param key \u952e\u540d\n     * @return {@link {@link java.util.Set&lt;java.lang.Object&gt;}} key\u5bf9\u5e94\u7684set\u7684\u503c\n     * @Description: \u6839\u636ekey\u83b7\u53d6Set\u7684\u6240\u6709\u503c\n     **\/\n    public Set&lt;Object&gt; sGet(String key) {\n        try {\n            return redisTemplate.opsForSet().members(key);\n        } catch (Exception ex) {\n            ex.printStackTrace();\n            return null;\n        }\n    }\n\n    \/***\n     * @param key \u952e\u540d\n     * @param value \u8981\u67e5\u8be2\u7684\u503c\u503c\n     * @return {@link {@link boolean}} \u82e5\u5b58\u5728\u5219\u8fd4\u56detrue\uff0c\u5426\u5219\u8fd4\u56defalse\n     * @Description: \u6839\u636evalue\u4eceSet\u4e2d\u67e5\u8be2\u662f\u5426\u5b58\u5728\n     **\/\n    public boolean sHasKey(String key, Object value) {\n        try {\n            return redisTemplate.opsForSet().isMember(key, value);\n        } catch (Exception ex) {\n            ex.printStackTrace();\n            return false;\n        }\n    }\n\n    \/***\n     * @param key \u952e\u540d\n     * @param values \u8981\u653e\u5165\u7684Set\u6570\u636e\uff0c\u53ef\u4ee5\u662f\u4e00\u4e2a\uff0c\u4e5f\u53ef\u4ee5\u662f\u591a\u4e2a\n     * @return {@link {@link long}} \u672c\u6b21\u653e\u5165set\u6210\u529f\u7684\u4e2a\u6570\n     * @Description: \u5c06\u6570\u636e\u653e\u5165Set\u7f13\u5b58\u4e2d\n     **\/\n    public long sSet(String key, Object... values) {\n        try {\n            return redisTemplate.opsForSet().add(key, values);\n        } catch (Exception ex) {\n            ex.printStackTrace();\n            return 0;\n        }\n    }\n\n    \/***\n     * @param key \u952e\u540d\n     * @param time \u5931\u6548\u65f6\u95f4\uff08\u79d2\uff09\uff0c\u5fc5\u987b\u5927\u4e8e0\n     * @param values \u8981\u653e\u5165\u7684Set\u6570\u636e\uff0c\u53ef\u4ee5\u662f\u4e00\u4e2a\uff0c\u4e5f\u53ef\u4ee5\u662f\u591a\u4e2a\n     * @return {@link {@link long}} \u672c\u6b21\u653e\u5165set\u6210\u529f\u7684\u4e2a\u6570\n     * @Description: \u5c06\u6570\u636e\u653e\u5165Set\u7f13\u5b58\u4e2d\uff0c\u5e76\u8bbe\u7f6e\u5931\u6548\u65f6\u95f4\n     **\/\n    public long sSetAndTime(String key, long time, Object... values) {\n        try {\n            Long count = redisTemplate.opsForSet().add(key, values);\n            if (time &gt; 0) {\n                expire(key, time);\n            }\n            return count;\n        } catch (Exception ex) {\n            ex.printStackTrace();\n            return 0;\n        }\n    }\n\n    \/***\n     * @param key \u952e\u540d\n     * @return {@link {@link long}} key\u5bf9\u5e94\u7684Set\u7684\u4e2a\u6570\n     * @Description: \u83b7\u53d6Set\u7f13\u5b58\u7684\u957f\u5ea6\n     **\/\n    public long sGetSetSize(String key) {\n        try {\n            return redisTemplate.opsForSet().size(key);\n        } catch (Exception ex) {\n            ex.printStackTrace();\n            return 0;\n        }\n    }\n\n    \/***\n     * @param key \u952e\u540d\n     * @param values \u8981\u79fb\u9664\u7684Set\uff0c\u53ef\u4ee5\u662f\u4e00\u4e2a\uff0c\u4e5f\u53ef\u4ee5\u662f\u591a\u4e2a\n     * @return {@link {@link long}} \u79fb\u9664\u7684\u4e2a\u6570\n     * @Description: \u79fb\u9664\u503c\u4e3avalue\u7684Set\n     **\/\n    public long setRemove(String key, Object... values) {\n        try {\n            return redisTemplate.opsForSet().remove(key, values);\n        } catch (Exception ex) {\n            ex.printStackTrace();\n            return 0;\n        }\n    }\n\n    \/\/ ==================== List\u64cd\u4f5c ===============================\n\n    \/***\n     * @param key \u952e\u540d\n     * @param start \u5f00\u59cb\u4e3a\u6b62\n     * @param end \u7ed3\u675f\u4e3a\u6b62\n     * @return {@link {@link java.util.List&lt;java.lang.Object&gt;}} List\u7f13\u5b58\u7684\u5185\u5bb9\n     * @Description: \u83b7\u53d6List\u7f13\u5b58\u7684\u5185\u5bb9\n     **\/\n    public List&lt;Object&gt; lGet(String key, long start, long end) {\n        try {\n            return redisTemplate.opsForList().range(key, start, end);\n        } catch (Exception ex) {\n            ex.printStackTrace();\n            return null;\n        }\n    }\n\n    \/***\n     * @param key \u952e\n     * @return {@link {@link long}} \u5bf9\u5e94List\u7684\u957f\u5ea6\n     * @Description: \u83b7\u53d6List\u7f13\u5b58\u7684\u957f\u5ea6\n     **\/\n    public long lGetListSize(String key) {\n        try {\n            return redisTemplate.opsForList().size(key);\n        } catch (Exception ex) {\n            ex.printStackTrace();\n            return 0;\n        }\n    }\n\n    \/***\n     * @param key \u952e\u540d\n     * @param index \u7d22\u5f15\n     * @return {@link {@link java.lang.Object}} \u7d22\u5f15\u5bf9\u5e94\u7684\u503c\n     * @Description: \u901a\u8fc7\u7d22\u5f15\u83b7\u53d6List\u4e2d\u7684\u503c\n     **\/\n    public Object lGetIndex(String key, long index) {\n        try {\n            return redisTemplate.opsForList().index(key, index);\n        } catch (Exception ex) {\n            ex.printStackTrace();\n            return null;\n        }\n    }\n\n    \/***\n     * @param key \u952e\u540d\n     * @param value \u9700\u8981\u653e\u5165\u7684\u503c\n     * @return {@link {@link boolean}} \u4fdd\u5b58\u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25\u8fd4\u56defalse\n     * @Description: \u5c06\u503c\u653e\u5165list\u7f13\u5b58\n     **\/\n    public boolean lSet(String key, Object value) {\n        try {\n            redisTemplate.opsForList().rightPush(key, value);\n            return true;\n        } catch (Exception ex) {\n            ex.printStackTrace();\n            return false;\n        }\n    }\n\n    \/***\n     * @param key \u952e\u540d\n     * @param value \u9700\u8981\u653e\u5165\u7684\u503c\n     * @param time \u5931\u6548\u65f6\u95f4\uff08\u79d2\uff09\uff0c \u5fc5\u987b\u5927\u4e8e0\n     * @return {@link {@link boolean}} \u4fdd\u5b58\u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25\u8fd4\u56defalse\n     * @Description: \u5c06\u503c\u653e\u5165list\u7f13\u5b58\uff0c\u5e76\u8bbe\u7f6e\u5931\u6548\u65f6\u95f4\n     **\/\n    public boolean lSet(String key, Object value, long time) {\n        try {\n            redisTemplate.opsForList().rightPush(key, value);\n            if (time &gt; 0) {\n                expire(key, time);\n            }\n            return true;\n        } catch (Exception ex) {\n            ex.printStackTrace();\n            return false;\n        }\n    }\n\n    \/***\n     * @param key \u952e\u540d\n     * @param value \u8981\u653e\u5165\u7f13\u5b58\u7684list\n     * @return {@link {@link boolean}} \u4fdd\u5b58\u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25\u8fd4\u56defalse\n     * @Description: \u5c06list\u653e\u5165list\u7f13\u5b58\n     **\/\n    public boolean lSet(String key, List&lt;Object&gt; value) {\n        try {\n            redisTemplate.opsForList().rightPushAll(key, value);\n            return true;\n        } catch (Exception ex) {\n            ex.printStackTrace();\n            return false;\n        }\n    }\n\n    \/***\n     * @param key \u952e\u540d\n     * @param value \u8981\u653e\u5165\u7f13\u5b58\u7684list\n     * @param time \u5931\u6548\u65f6\u95f4\uff08\u79d2\uff09\uff0c\u5fc5\u987b\u5927\u4e8e0\n     * @return {@link {@link boolean}} \u4fdd\u5b58\u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25\u8fd4\u56defalse\n     * @Description: \u5c06list\u653e\u5165list\u7f13\u5b58\uff0c\u5e76\u8bbe\u7f6e\u5931\u6548\u65f6\u95f4\n     **\/\n    public boolean lSet(String key, List&lt;Object&gt; value, long time) {\n        try {\n            redisTemplate.opsForList().rightPushAll(key, value);\n            if (time &gt; 0) {\n                expire(key, time);\n            }\n            return true;\n        } catch (Exception ex) {\n            ex.printStackTrace();\n            return false;\n        }\n    }\n\n    \/**\n     * \u6839\u636e\u7d22\u5f15\u4fee\u6539list\u4e2d\u7684\u67d0\u6761\u6570\u636e\n     * @param key \u952e\u540d\n     * @param index \u7d22\u5f15\u503c\n     * @param value \u4fee\u6539\u7684\u76ee\u6807\u503c\n     * @return {@link Boolean} \u4fee\u6539\u6210\u529f\u8fd4\u56detrue\uff0c\u5931\u8d25\u8fd4\u56defalse\n     **\/\n    public boolean lUpdateIndex(String key, long index, Object value) {\n        try {\n            redisTemplate.opsForList().set(key, index, value);\n            return true;\n        } catch (Exception ex) {\n            ex.printStackTrace();\n            return false;\n        }\n    }\n\n    \/**\n     * \u4ecelist\u4e2d\u79fb\u9664count\u4e2avalue\u503c\n     *\n     * @param key   \u952e\u540d\n     * @param count \u60f3\u8981\u79fb\u9664\u7684\u4e2a\u6570\n     * @param value \u8981\u79fb\u9664\u7684\u503c\n     * @return {@link Long} \u6210\u529f\u79fb\u9664\u7684\u4e2a\u6570\n     **\/\n    public long lRemove(String key, long count, Object value) {\n        try {\n            return redisTemplate.opsForList().remove(key, count, value);\n        } catch (Exception ex) {\n            ex.printStackTrace();\n            return 0;\n        }\n    }\n\n    \/**\n     * \u79fb\u9664\u5e76\u83b7\u53d6\u5217\u8868\u4e2d\u7684\uff08\u5de6\u8fb9\uff09\u7b2c\u4e00\u4e2a\u5143\u7d20\n     * @param key \u952e\u540d\n     * @return {@link Object} \u79fb\u9664\u7684\u5143\u7d20\n     * @date: 2022\/2\/20\n    **\/\n    public Object lLeftPop(String key) {\n        try {\n            return redisTemplate.opsForList().leftPop(key);\n        } catch (Exception ex) {\n            ex.printStackTrace();\n            return null;\n        }\n    }\n}\n<\/code><\/pre>\n<blockquote><p>\n  \u6240\u4ee5\u6240\u6709\u7684redis\u64cd\u4f5c\uff0c\u5176\u5b9e\u5bf9\u4e8ejava\u5f00\u53d1\u4eba\u5458\u6765\u8bf4\uff0c\u90fd\u5341\u5206\u7684\u7b80\u5355\uff0c\u66f4\u91cd\u8981\u7684\u662f\u8981\u7406\u89e3redis\u7684\u601d\u60f3\u548c\u6bcf\u4e00\u79cd\u6570\u636e\u7ed3\u6784\u7684\u7528\u5904\u548c\u4f5c\u7528\u573a\u666f\u3002\n<\/p><\/blockquote>\n<h1>Redis.conf\u8be6\u89e3<\/h1>\n<p><strong>redis\u914d\u7f6e\u6587\u4ef6\u7684\u5f00\u5934\u4ecb\u7ecd\u90e8\u5206\uff1a<\/strong><br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/3f09f049b7ea4ca2ab7248fddad22a05.png?x-oss-process=image\/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZmFpdGjnkZ7or5o=,size_20,color_FFFFFF,t_70,g_se,x_16\" alt=\"redis\u914d\u7f6e\u6587\u4ef6\u4ecb\u7ecd\" \/><br \/>\n\u914d\u7f6e\u6587\u4ef6\u4e2d\u7684\u5355\u4f4d\u5bf9\u5927\u5c0f\u5199\u4e0d\u654f\u611f\u3002<br \/>\n<strong>INCLUDES \u5305\u542b\uff1a<\/strong><br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/209c85e0a4344f7ea0d9f44a209dc560.png?x-oss-process=image\/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZmFpdGjnkZ7or5o=,size_20,color_FFFFFF,t_70,g_se,x_16\" alt=\"\u5305\u542b\" \/><br \/>\n\u53ef\u4ee5\u4f7f\u7528include\u547d\u4ee4\u5f15\u5165\u5176\u4ed6\u914d\u7f6e\u6587\u4ef6\uff0c\u7c7b\u4f3c\u4e8eSpring\u4e2d\u7684import\uff0cJSP\u4e2d\u7684inclue\u6807\u7b7e\uff0cC\u8bed\u8a00\u4e2d\u7684include\u3002<br \/>\n<strong>NETWORK \u7f51\u7edc\u914d\u7f6e\uff1a<\/strong><\/p>\n<pre><code class=\"language-bash line-numbers\">bind 127.0.0.1 -::1     # \u7ed1\u5b9a\u7684IP\uff0c\u5982\u679c\u6ce8\u91ca\u6389\uff0c\u5219\u662f\u76d1\u542c\u6240\u6709IP\nprotected-mode yes      # \u4fdd\u62a4\u6a21\u5f0f\u662f\u5426\u5f00\u542f\nport 6379               # \u670d\u52a1\u76d1\u542c\u7684\u7aef\u53e3\n<\/code><\/pre>\n<p><strong>GENERAL \u901a\u7528\u914d\u7f6e\uff1a<\/strong><\/p>\n<pre><code class=\"language-bash line-numbers\">daemonize yes       # \u662f\u5426\u4ee5\u5b88\u62a4\u8fdb\u7a0b\u7684\u65b9\u5f0f\u8fd0\u884c\uff08\u5373\u540e\u53f0\u8fd0\u884c\uff09\npidfile \/var\/run\/redis_6379.pid # \u5982\u679c\u5df2\u5b88\u62a4\u8fdb\u7a0b\u65b9\u5f0f\u8fd0\u884c\uff0c\u5c31\u9700\u8981\u6307\u5b9a\u4e00\u4e2apid\u6587\u4ef6\n\n# \u65e5\u5fd7\u4fe1\u606f\n# Specify the server verbosity level.\n# This can be one of:\n# debug (a lot of information, useful for development\/testing)\n# verbose (many rarely useful info, but not a mess like the debug level)\n# notice (moderately verbose, what you want in production probably) \u9002\u7528\u4e8e\u751f\u4ea7\u73af\u5883\n# warning (only very important \/ critical messages are logged)\nloglevel notice     # \u65e5\u5fd7\u7ea7\u522b\nlogfile \"\"          # \u65e5\u5fd7\u6587\u4ef6\u8def\u5f84\uff0c\u4e3a\u7a7a\u65f6\u4ee3\u8868\u8f93\u51fa\u5230\u6807\u51c6\u8f93\u51fa\n\ndatabases 16        # \u6570\u636e\u5e93\u7684\u6570\u91cf\uff0c\u9ed8\u8ba4\u4e3a16\u4e2a\nalways-show-logo no # \u662f\u5426\u603b\u662f\u663e\u793alogo\n<\/code><\/pre>\n<p><strong>SNAPSHOTTING \u5feb\u7167\u914d\u7f6e\uff1a<\/strong><br \/>\n1. \u5728\u6301\u4e45\u5316\u65f6\u4f1a\u7528\u5230\u3002\u5728\u89c4\u5b9a\u7684\u65f6\u95f4\u5185\uff0c\u6267\u884c\u4e86\u591a\u5c11\u6b21\u64cd\u4f5c\uff0c\u5c31\u4f1a\u6301\u4e45\u5316\u5230\u6587\u4ef6\u4e2d\u53bb\uff0c\u6301\u4e45\u5316\u6587\u4ef6\u6709.rdb\u6587\u4ef6\u548c.aof\u6587\u4ef6\u4e24\u79cd\u3002<br \/>\n2. redis\u662f\u5185\u5b58\u6570\u636e\uff0c\u5982\u679c\u6ca1\u6709\u6301\u4e45\u5316\uff0c\u90a3\u65ad\u7535\u6216\u8005\u5173\u95ed\u540e\uff0c\u6570\u636e\u5c31\u4e22\u5931\u4e86\u3002<\/p>\n<pre><code class=\"language-bash line-numbers\">save 3600 1     # \u5982\u679c\u57283600\u79d2\uff081\u5c0f\u65f6\uff09\u5185\u67091\u4e2akey\u53d1\u751f\u4e86\u66f4\u65b0\uff0c\u5c31\u4f1a\u6301\u4e45\u5316\nsave 300 100    # \u5982\u679c\u5728300\u79d2\uff085\u5206\u949f\uff09\u5185\u6709100\u4e2akey\u53d1\u751f\u4e86\u66f4\u65b0\uff0c\u5c31\u4f1a\u6301\u4e45\u5316\nsave 60 10000   # \u5982\u679c\u572860\u79d2\uff081\u5206\u949f\uff09\u5185\u670910000\u4e2akey\u53d1\u751f\u4e86\u53d8\u5316\uff0c\u5c31\u4f1a\u6301\u4e45\u5316\n# \u53ef\u4ee5\u6839\u636e\u81ea\u5df1\u7684\u9700\u6c42\u4fee\u6539\u8fd9\u4e9b\u914d\u7f6e\n\nstop-writes-on-bgsave-error yes # \u6301\u4e45\u5316\u8fc7\u7a0b\u4e2d\u5982\u679c\u51fa\u9519\u4e86\uff0credis\u662f\u5426\u8fd8\u9700\u8981\u7ee7\u7eed\u5de5\u4f5c\uff0c\u9ed8\u8ba4\u9700\u8981\u7ee7\u7eed\u5de5\u4f5c\nrdbcompression yes  # \u662f\u5426\u538b\u7f29rdb\u6587\u4ef6\uff0c\u5982\u679c\u538b\u7f29\uff0c\u5219\u9700\u8981\u6d88\u8017CPU\u8d44\u6e90\nrdbchecksum yes     # \u4fdd\u5b58rdb\u6587\u4ef6\u65f6\uff0c\u662f\u5426\u8fdb\u884c\u9519\u8bef\u6821\u9a8c\ndir .\/              # rdb\u6587\u4ef6\u751f\u6210\u7684\u76ee\u5f55\uff0c\u9ed8\u8ba4\u662f\u914d\u7f6e\u6587\u4ef6\u6240\u5728\u7684\u76ee\u5f55\n<\/code><\/pre>\n<p><strong>REPLICATION \u4e3b\u4ece\u590d\u5236\u7684\u914d\u7f6e\uff1a<\/strong><br \/>\n\u5728\u540e\u9762\u7684Redis\u4e3b\u4ece\u590d\u5236\u90e8\u5206\u8be6\u7ec6\u4ecb\u7ecd\u3002<\/p>\n<p><strong>SECURITY \u5b89\u5168\u914d\u7f6e\uff1a<\/strong><\/p>\n<pre><code class=\"language-bash line-numbers\">requirepass foobared    # \u8bbe\u7f6e\u767b\u5f55\u5bc6\u7801\uff0c\u9ed8\u8ba4\u662f\u6ca1\u6709\u5bc6\u7801\u7684\n<\/code><\/pre>\n<p>\u9664\u4e86\u4f7f\u7528\u914d\u7f6e\u6587\u4ef6\u8bbe\u7f6e\u5bc6\u7801\u5916\uff0c\u4e5f\u53ef\u4ee5\u901a\u8fc7\u547d\u4ee4\u7684\u65b9\u5f0f\u914d\u7f6e\uff0c\u901a\u8fc7redis-cli\u5ba2\u6237\u7aef\u8fde\u63a5\u5230redis\u670d\u52a1\u5668\uff0c\u7136\u540e\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\">config set requirepass foobared     # \u8bbe\u7f6e\u5bc6\u7801\nsave                                # \u4fdd\u5b58\u914d\u7f6e\u547d\u4ee4\nconfig get requirepass              # \u83b7\u53d6\u5bc6\u7801\nauth foobared                       # \u8ba4\u8bc1\u5bc6\u7801\uff0c\u5728\u8bbe\u7f6e\u4e86\u5bc6\u7801\u7684\u60c5\u51b5\u4e0b\uff0c\u8fde\u63a5\u540e\u9700\u8981\u5148\u8ba4\u8bc1\u5bc6\u7801\uff0c\u624d\u80fd\u8fdb\u884c\u64cd\u4f5c\n<\/code><\/pre>\n<p><strong>CLIENTS \u5ba2\u6237\u7aef\u914d\u7f6e\uff1a<\/strong><\/p>\n<pre><code class=\"language-bash line-numbers\">maxclients 10000    # \u8bbe\u7f6e\u80fd\u8fde\u63a5\u4e0aredis\u7684\u6700\u5927\u5ba2\u6237\u7aef\u8fde\u63a5\u6570\n<\/code><\/pre>\n<p><strong>MEMORY MANAGEMENT \u5185\u5b58\u914d\u7f6e\uff1a<\/strong><\/p>\n<pre><code class=\"language-bash line-numbers\">maxmemory &lt;bytes&gt;       # redis\u670d\u52a1\u53ef\u4ee5\u5360\u7528\u7684\u6700\u5927\u5185\u5b58\u5bb9\u91cf\nmaxmemory-policy noeviction # \u5185\u5b58\u8fbe\u5230\u4e0a\u9650\u65f6\u7684\u5904\u7406\u7b56\u7565\uff0c\u603b\u5171\u6709\u516d\u79cd\n# 1\u3001volatile-lru\uff1a\u53ea\u5bf9\u8bbe\u7f6e\u4e86\u8fc7\u671f\u65f6\u95f4\u7684key\u8fdb\u884cLRU\uff08\u9ed8\u8ba4\u503c\uff09 \n# 2\u3001allkeys-lru \uff1a \u5220\u9664lru\u7b97\u6cd5\u7684key   \n# 3\u3001volatile-random\uff1a\u968f\u673a\u5220\u9664\u5373\u5c06\u8fc7\u671fkey   \n# 4\u3001allkeys-random\uff1a\u968f\u673a\u5220\u9664   \n# 5\u3001volatile-ttl \uff1a \u5220\u9664\u5373\u5c06\u8fc7\u671f\u7684   \n# 6\u3001noeviction \uff1a \u6c38\u4e0d\u8fc7\u671f\uff0c\u8fd4\u56de\u9519\u8bef\n<\/code><\/pre>\n<p><strong>APPEND ONLY MODE AOF\u6a21\u5f0f\u914d\u7f6e\uff1a<\/strong><\/p>\n<pre><code class=\"language-bash line-numbers\">appendonly no       #\u662f\u5426\u5f00\u542fAOF\uff0c\u9ed8\u8ba4\u662f\u4e0d\u5f00\u542f\u7684\uff0c\u9ed8\u8ba4\u662f\u4f7f\u7528rdb\u65b9\u5f0f\u6301\u4e45\u5316\u7684\uff0c\u5728\u7edd\u5927\u90e8\u5206\u60c5\u51b5\u4e0b\uff0crdb\u5b8c\u5168\u591f\u7528\nappendfilename \"appendonly.aof\" # AOF\u6a21\u5f0f\u751f\u6210\u7684\u6301\u4e45\u5316\u7684\u6587\u4ef6\u7684\u540d\u5b57\n\n# \u6301\u4e45\u5316\u65b9\u5f0f\n# appendfsync always    # \u6bcf\u6b21\u4fee\u6539\u90fd\u4f1a\u540c\u6b65\u5230aof\u6587\u4ef6\uff0c\u4f1a\u6d88\u8017\u6027\u80fd\uff0c\u6240\u4ee5\u901f\u5ea6\u6bd4\u8f83\u6162\nappendfsync everysec    # \u6bcf\u79d2\u90fd\u6267\u884c\u4e00\u6b21\u540c\u6b65\u64cd\u4f5c\uff0c\u4f46\u53ef\u80fd\u4f1a\u4e22\u59311\u79d2\u5185\u7684\u6570\u636e\n# appendfsync no        # \u4e0d\u6267\u884c\u540c\u6b65\u64cd\u4f5c\uff0c\u64cd\u4f5c\u7cfb\u7edf\u81ea\u5df1\u540c\u6b65\u6570\u636e\uff0c\u901f\u5ea6\u6700\u5feb\n<\/code><\/pre>\n<p>\u5177\u4f53\u7684\u914d\u7f6e\u5728Redis\u6301\u4e45\u5316\u4e2d\u8be6\u7ec6\u4ecb\u7ecd\u3002<\/p>\n<h1>Redis\u6301\u4e45\u5316<\/h1>\n<p>Redis\u662f\u5185\u5b58\u6570\u636e\u5e93\uff0c\u5982\u679c\u4e0d\u5c06\u5185\u5b58\u4e2d\u7684\u6570\u636e\u5e93\u72b6\u6001\u4fdd\u5b58\u5230\u78c1\u76d8\uff0c\u90a3\u4e48\u4e00\u65e6\u670d\u52a1\u5668\u8fdb\u7a0b\u9000\u51fa\uff0c\u670d\u52a1\u5668\u4e2d\u7684\u6570\u636e\u5e93\u72b6\u6001\u4e5f\u4f1a\u4e22\u5931\u3002\u6240\u4ee5\uff0cRedis\u63d0\u4f9b\u4e86\u6301\u4e45\u5316\u529f\u80fd\uff01<\/p>\n<h2>RDB\uff08Redis DataBase\uff09<\/h2>\n<p><strong>\u4ec0\u4e48\u662fRDB<\/strong><br \/>\n\u5728\u4e3b\u4ece\u590d\u5236\u4e2d\uff0crdb\u6587\u4ef6\u4e00\u822c\u662f\u7528\u4e8e\u5728\u4ece\u673a\u4e0a\u505a\u5907\u4efd\u7684\u3002<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/d228616f4e494ce194d32b1e0b329a4b.png?x-oss-process=image\/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZmFpdGjnkZ7or5o=,size_20,color_FFFFFF,t_70,g_se,x_16\" alt=\"RDB\u6301\u4e45\u5316\u8fc7\u7a0b\" \/><br \/>\n\u5728\u6307\u5b9a\u7684\u65f6\u95f4\u95f4\u9694\u5185\uff0c\u5c06\u5185\u5b58\u4e2d\u7684\u6570\u636e\u96c6\u5feb\u7167\u5199\u5165\u78c1\u76d8\uff0c\u4e5f\u5c31\u662fSnapshot\u5feb\u7167\uff0c\u5b83\u6062\u590d\u65f6\u662f\u5c06\u5feb\u7167\u91cc\u6587\u4ef6\u76f4\u63a5\u8bfb\u5165\u5185\u5b58\u91cc\u3002<\/p>\n<p><strong>RDB\u6301\u4e45\u5316\u8fc7\u7a0b<\/strong><\/p>\n<p>Redis\u4f1a\u5355\u72ec\u521b\u5efa\uff08fork\uff09\u4e00\u4e2a\u5b50\u8fdb\u7a0b\u6765\u8fdb\u884c\u6301\u4e45\u5316\uff0c\u4f1a\u5148\u5c06\u6570\u636e\u5199\u5165\u4e00\u4e2a\u4e34\u65f6\u6587\u4ef6\u4e2d\uff0c\u5f85\u6301\u4e45\u5316\u8fc7\u7a0b\u90fd\u7ed3\u675f\u4e86\uff0c\u518d\u7528\u8fd9\u4e2a\u4e34\u65f6\u6587\u4ef6\u66ff\u6362\u4e0a\u6b21\u6301\u4e45\u5316\u7684\u6587\u4ef6\u3002\u6574\u4e2a\u8fc7\u7a0b\u4e2d\uff0c\u4e3b\u8fdb\u7a0b\u4e0d\u8fdb\u884c\u4efb\u4f55IO\u64cd\u4f5c\u3002\u8fd9\u5c31\u786e\u4fdd\u4e86\u6781\u9ad8\u7684\u6027\u80fd\u3002\u5982\u679c\u9700\u8981\u5927\u89c4\u6a21\u6570\u636e\u7684\u6062\u590d\uff0c\u4e14\u5bf9\u4e8e\u6570\u636e\u6062\u590d\u7684\u5b8c\u6574\u6027\u4e0d\u662f\u975e\u5e38\u654f\u611f\uff0c\u90a3\u4e48RDB\u65b9\u5f0f\u8981\u6bd4AOF\u65b9\u5f0f\u66f4\u52a0\u9ad8\u6548\u3002<br \/>\n\u4e00\u822c\u60c5\u51b5\u4e0b\uff0cRedis\u670d\u52a1\u7aef\u9ed8\u8ba4\u4f7f\u7528RDB\u65b9\u5f0f\u8fdb\u884c\u6301\u4e45\u5316\u3002<\/p>\n<p><strong>RDB\u7684\u76f8\u5173\u914d\u7f6e\u5728\u914d\u7f6e\u6587\u4ef6\u7684SNAPSHOTTING\u90e8\u5206<\/strong><\/p>\n<pre><code class=\"language-bash line-numbers\"># The filename where to dump the DB\ndbfilename dump.rdb     # rdb\u751f\u6210\u7684\u6587\u4ef6\uff0c\u9ed8\u8ba4\u6587\u4ef6\u540d\u4e3adump.rdb\ndir .\/      # rdb\u6587\u4ef6\u4fdd\u5b58\u7684\u4f4d\u7f6e\uff0c\u5f53\u524d\u6240\u5199\u7684\u4f4d\u7f6e\u4e3a\u914d\u7f6e\u6587\u4ef6\u6240\u5728\u76ee\u5f55\n\nsave 60 5   # \u5982\u679c\u572860\u79d2\uff081\u5206\u949f\uff09\u5185\u67095\u4e2akey\u53d1\u751f\u4e86\u53d8\u5316\uff0c\u5c31\u4f1a\u6301\u4e45\u5316\n<\/code><\/pre>\n<p>\u4fee\u6539\u914d\u7f6e\u6587\u4ef6\u540e\uff0c\u9700\u8981\u91cd\u542fredis\u670d\u52a1\u3002<\/p>\n<p><strong>rdb\u751f\u6210\u7684\u89e6\u53d1\u673a\u5236\uff1a<\/strong><br \/>\n1. \u914d\u7f6e\u6587\u4ef6\u4e2dsave\u7684\u89c4\u5219\u6ee1\u8db3\u7684\u60c5\u51b5\u4e0b\uff0c\u4f1a\u81ea\u52a8\u89e6\u53d1rdb\u751f\u6210\uff1b<br \/>\n2. \u6267\u884cflushall\u547d\u4ee4\uff0c\u4e5f\u4f1a\u89e6\u53d1rdb\u751f\u6210\uff1b<br \/>\n3. \u9000\u51faredis\uff08\u5373\u6267\u884cshutdown\u547d\u4ee4\uff09\uff0c\u4e5f\u4f1a\u89e6\u53d1rdb\u751f\u6210\u3002<\/p>\n<p>\u5907\u4efd\u5c31\u4f1a\u81ea\u52a8\u751f\u6210\u4e00\u4e2adump.rdb\u6587\u4ef6\u3002<\/p>\n<p><strong>\u4f7f\u7528rdb\u6062\u590d\u6570\u636e\uff1a<\/strong><br \/>\n1. \u53ea\u9700\u8981\u5c06rdb\u6587\u4ef6\u653e\u5728\u914d\u7f6e\u6587\u4ef6\u4e2d<code>dir<\/code>\u914d\u7f6e\u7684\u76ee\u5f55\u4e0b\uff0c\u7136\u540e\u542f\u52a8redis\u670d\u52a1\uff0credis\u5728\u542f\u52a8\u65f6\u5c31\u4f1a\u81ea\u52a8\u68c0\u67e5dump.rdb\u6587\u4ef6\uff0c\u7136\u540e\u6062\u590d\u5176\u4e2d\u7684\u6570\u636e\uff1b<br \/>\n2. \u67e5\u770brdb\u6587\u4ef6\u4fdd\u5b58\u7684\u4f4d\u7f6e\u53ef\u4ee5\u5728redis\u5ba2\u6237\u7aef\u4e2d\u4f7f\u7528<code>config get dir<\/code>\u547d\u4ee4\u67e5\u8be2<\/p>\n<pre><code class=\"language-bash line-numbers\">[root@localhost redis-6.2.4]# redis-cli\n127.0.0.1:6379&gt; config get dir\n1) \"dir\"\n2) \"\/whhdata\/server\/redis-6.2.4\"    # \u5982\u679c\u5728\u8fd9\u4e2a\u76ee\u5f55\u4e0b\u5b58\u5728dump.rdb\u6587\u4ef6\uff0c\u90a3\u4e48\u5728redis\u542f\u52a8\u65f6\u5c31\u4f1a\u81ea\u52a8\u6062\u590d\u5176\u4e2d\u7684\u6570\u636e\n<\/code><\/pre>\n<p><strong>\u4f18\u70b9\uff1a<\/strong><br \/>\n1. \u9002\u5408\u5927\u89c4\u6a21\u7684\u6570\u636e\u6062\u590d\uff1b<br \/>\n2. \u5bf9\u6570\u636e\u7684\u5b8c\u6574\u6027\u8981\u6c42\u4e0d\u9ad8\u7684\u573a\u666f\u9002\u7528\u3002<\/p>\n<p><strong>\u7f3a\u70b9\uff1a<\/strong><br \/>\n1. \u9700\u8981\u4e00\u5b9a\u7684\u65f6\u95f4\u95f4\u9694\u624d\u4f1a\u8fdb\u884c\u6301\u4e45\u5316\uff0c\u5982\u679credis\u610f\u5916\u5b95\u673a\u4e86\uff0c\u90a3\u6700\u540e\u4e00\u6b21\u7684\u4fee\u6539\u6570\u636e\u53ef\u80fd\u4f1a\u4e22\u5931\uff1b<br \/>\n2. fork\u5b50\u8fdb\u7a0b\u7684\u65f6\u5019\uff0c\u4f1a\u5360\u7528\u4e00\u5b9a\u7684\u5185\u5b58\u7a7a\u95f4\u3002<\/p>\n<h2>AOF\uff08Append Only File\uff09<\/h2>\n<p><strong>\u4ec0\u4e48\u662fAOF<\/strong><br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/f265812764724bcabfb2918fea2ea395.png?x-oss-process=image\/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZmFpdGjnkZ7or5o=,size_20,color_FFFFFF,t_70,g_se,x_16\" alt=\"AOF\u6301\u4e45\u5316\u8fc7\u7a0b\" \/><br \/>\n\u4ee5\u65e5\u5fd7\u7684\u5f62\u5f0f\u6765\u8bb0\u5f55\u6bcf\u4e2a\u5199\u64cd\u4f5c\uff0c\u5c06Redis\u6267\u884c\u8fc7\u7684\u6240\u6709\u6307\u4ee4\u8bb0\u5f55\u4e0b\u6765\uff08\u8bfb\u64cd\u4f5c\u4e0d\u8bb0\u5f55\uff09\uff0c\u53ea\u8bb8\u8ffd\u52a0\u6587\u4ef6\uff0c\u4f46\u4e0d\u53ef\u4ee5\u4fee\u6539\u6587\u4ef6\u3002Redis\u542f\u52a8\u4e4b\u521d\u4f1a\u8bfb\u8be5\u6587\u4ef6\u91cd\u65b0\u6784\u5efa\u6570\u636e\uff0c\u6362\u8a00\u4e4b\uff0cRedis\u542f\u52a8\u65f6\u4f1a\u6839\u636e\u65e5\u5fd7\u6587\u4ef6\u7684\u5185\u5bb9\u5c06\u5199\u6307\u4ee4\u4ece\u524d\u5230\u540e\u6267\u884c\u4e00\u6b21\uff0c\u4ee5\u5b8c\u6210\u6570\u636e\u7684\u6062\u590d\u5de5\u4f5c\u3002<\/p>\n<blockquote><p>\n  \u603b\u7ed3\uff1a\u5c06\u6211\u4eec\u7684\u6240\u6709\u5199\u547d\u4ee4\u90fd\u8bb0\u5f55\u4e0b\u6765\uff0c\u7c7b\u4f3c\u4e8eMySQL\u7684binlog\u65e5\u5fd7\uff0c\u9700\u8981\u6062\u590d\u7684\u65f6\u5019\uff0c\u628a\u8fd9\u4e2a\u6587\u4ef6\u5168\u90e8\u6267\u884c\u4e00\u904d\uff01\n<\/p><\/blockquote>\n<p><strong>AOF\u76f8\u5173\u7684\u914d\u7f6e\u5728\u914d\u7f6e\u6587\u4ef6\u7684APPEND ONLY MODE\u90e8\u5206<\/strong><\/p>\n<pre><code class=\"language-bash line-numbers\">appendonly yes  # \u662f\u5426\u5f00\u542faof\u6301\u4e45\u5316\u673a\u5236\uff0c\u9ed8\u8ba4\u662fno\u4e0d\u5f00\u542f\nappendfilename \"appendonly.aof\" # \u751f\u6210\u7684aof\u6587\u4ef6\u7684\u540d\u5b57\n\n# \u6301\u4e45\u5316\u7b56\u7565\n# appendfsync always    # \u6bcf\u6b21\u6570\u636e\u53d8\u5316\u90fd\u6301\u4e45\u5316\nappendfsync everysec    # \u6bcf\u79d2\u6301\u4e45\u5316\u4e00\u6b21\n# appendfsync no        # \u4e0d\u6301\u4e45\u5316\uff0c\u4f9d\u8d56\u64cd\u4f5c\u7cfb\u7edf\u81ea\u5df1\u540c\u6b65\u6570\u636e\n\n# \u91cd\u5199\u89c4\u5219\uff08AOF\u9ed8\u8ba4\u662f\u5bf9\u6587\u4ef6\u8fdb\u884c\u65e0\u9650\u5236\u8ffd\u52a0\uff0c\u6587\u4ef6\u4f1a\u8d8a\u6765\u8d8a\u5927\uff09\nauto-aof-rewrite-percentage 100 # \u8d85\u8fc7auto-aof-rewrite-min-size\u7684\u767e\u5206\u4e4b\u591a\u5c11\u65f6\u5f00\u59cb\u91cd\u5199\nauto-aof-rewrite-min-size 64mb  # \u5982\u679c\u4e00\u4e2aaof\u6587\u4ef6\u5927\u4e8e\u4e8664M\uff0c\u90a3\u5c31\u4f1afork\u4e00\u4e2a\u65b0\u7684\u8fdb\u7a0b\uff0c\u5bf9aof\u6587\u4ef6\u8fdb\u884c\u91cd\u5199\n<\/code><\/pre>\n<p>\u4fee\u6539\u914d\u7f6e\u540e\uff0c\u91cd\u542fRedis\u670d\u52a1\u5373\u53ef\u751f\u6548\u3002<br \/>\n\u6b64\u65f6\uff0c\u5728redis\u5ba2\u6237\u7aef\u4e2d\u6267\u884c\u4ee5\u4e0b\u547d\u4ee4\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\">127.0.0.1:6379&gt; set k1 v1\nOK\n127.0.0.1:6379&gt; set k2 v2\nOK\n127.0.0.1:6379&gt; set k3 v3\nOK\n127.0.0.1:6379&gt; set k4 v4\nOK\n127.0.0.1:6379&gt; set k5 v5\nOK\n<\/code><\/pre>\n<p>\u7136\u540e\u4f7f\u7528<code>cat<\/code>\u6216<code>vim<\/code>\u547d\u4ee4\u67e5\u770bappendonly.aof\u6587\u4ef6\u5185\u5bb9\uff0c\u5982\u4e0b\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\">*2\n<span class=\"katex math inline\">6\nSELECT<\/span>1\n0\n*3\n<span class=\"katex math inline\">3\nset<\/span>2\nk1\n<span class=\"katex math inline\">2\nv1\n*3<\/span>3\nset\n<span class=\"katex math inline\">2\nk2<\/span>2\nv2\n*3\n<span class=\"katex math inline\">3\nset<\/span>2\nk3\n<span class=\"katex math inline\">2\nv3\n*3<\/span>3\nset\n<span class=\"katex math inline\">2\nk4<\/span>2\nv4\n*3\n<span class=\"katex math inline\">3\nset<\/span>2\nk5\n$2\nv5\n<\/code><\/pre>\n<p><strong>\u4f7f\u7528aof\u6062\u590d\u6570\u636e\uff1a<\/strong><br \/>\n1\u3001\u5148\u5c06redis\u670d\u52a1\u5173\u95ed\uff08\u5728\u5ba2\u6237\u7aef\u6267\u884cshutdown\u547d\u4ee4\uff09\uff0c\u7136\u540e\u5220\u9664dump.rdb\u6587\u4ef6\uff08\u8be5\u6587\u4ef6\u4e2d\u4e5f\u6709\u6570\u636e\uff09\uff1b<br \/>\n2\u3001\u5728<br \/>\n3\u3001\u9664\u4e86\u6b63\u5e38\u6062\u590d\u6570\u636e\u5916\uff0caof\u6587\u4ef6\u8fd8\u652f\u6301\u88ab\u7834\u574f\u540e\u7684\u4fee\u590d\uff0c\u4f46\u6709\u53ef\u80fd\u9020\u6210\u6570\u636e\u4e22\u5931\uff1a<br \/>\n* \u5c06appendonly.aof\u6587\u4ef6\u6700\u540e\u4e00\u884c\u7684\u524d\u9762\u968f\u4fbf\u589e\u52a0\u4e00\u4e32\u5b57\u7b26\u4e32\uff1a<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/ec9688fd6b3c410289803c13caff559d.png\" alt=\"\u7834\u574faof\u6587\u4ef6\" \/><br \/>\n* \u6b64\u65f6\u542f\u52a8redis\u670d\u52a1\u5668\uff0c\u7136\u540e\u4f7f\u7528redis-cli\u5ba2\u6237\u7aef\u8fde\u63a5\u670d\u52a1\u5668\u5c31\u4f1a\u62a5\u9519\uff1a<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/3e600b535d8845e5914ee53cf480fb7b.png\" alt=\"Redis\u542f\u52a8\u5931\u8d25\" \/><br \/>\n* \u4f7f\u7528Redis\u81ea\u5e26\u7684<code>redis-check-aof<\/code>\u5de5\u5177\u4fee\u590daof\u6587\u4ef6\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\">[root@localhost redis-6.2.4]# redis-check-aof --fix appendonly.aof\n0x              a4: Expected \\r\\n, got: 6164\nAOF analyzed: size=183, ok_up_to=139, ok_up_to_line=40, diff=44\nThis will shrink the AOF from 183 bytes, with 44 bytes, to 139 bytes\nContinue? [y\/N]: y\nSuccessfully truncated AOF\n<\/code><\/pre>\n<ul>\n<li>\u4f7f\u7528<code>vim<\/code>\u547d\u4ee4\u518d\u6b21\u6253\u5f00appendonly.aof\u6587\u4ef6\uff0c\u53ef\u4ee5\u770b\u5230\u521a\u624d\u8f93\u5165\u7684\u4e00\u4e32\u5b57\u7b26\u4e32\u5df2\u7ecf\u6ca1\u4e86\uff0c\u4f46\u662f\u5bf9\u5e94\u7684k5:v5\u6570\u636e\u7684set\u65e5\u5fd7\u4e5f\u6d88\u5931\u4e86\uff1a<\/li>\n<\/ul>\n<pre><code class=\"language-bash line-numbers\">*2\n<span class=\"katex math inline\">6\nSELECT<\/span>1\n0\n*3\n<span class=\"katex math inline\">3\nset<\/span>2\nk1\n<span class=\"katex math inline\">2\nv1\n*3<\/span>3\nset\n<span class=\"katex math inline\">2\nk2<\/span>2\nv2\n*3\n<span class=\"katex math inline\">3\nset<\/span>2\nk3\n<span class=\"katex math inline\">2\nv3\n*3<\/span>3\nset\n<span class=\"katex math inline\">2\nk4<\/span>2\nv4\n<\/code><\/pre>\n<ul>\n<li>\u6b64\u65f6\u518d\u5c1d\u8bd5\u542f\u52a8Redis\u670d\u52a1\uff0c\u5373\u53ef\u6b63\u5e38\u542f\u52a8\u548c\u8fde\u63a5<\/li>\n<\/ul>\n<pre><code class=\"language-bash line-numbers\">[root@localhost redis-6.2.4]# redis-server redis.conf\n[root@localhost redis-6.2.4]# redis-cli\n127.0.0.1:6379&gt; AUTH 123456\nOK\n127.0.0.1:6379&gt; PING\nPONG\n127.0.0.1:6379&gt; GET k4\n\"v4\"\n127.0.0.1:6379&gt; GET k5\n(nil)\n<\/code><\/pre>\n<p><strong>\u4f18\u70b9\uff1a<\/strong><br \/>\n1. \u6bcf\u4e00\u6b21\u4fee\u6539\u90fd\u540c\u6b65\uff0c\u6587\u4ef6\u7684\u5b8c\u6574\u6027\u4f1a\u66f4\u597d\uff1b<br \/>\n2. \u5982\u679c\u914d\u7f6e\u4e3a\u6bcf\u79d2\u540c\u6b65\u4e00\u6b21\uff0c\u5219\u53ea\u53ef\u80fd\u4e22\u5931\u4e00\u79d2\u5185\u7684\u6570\u636e\uff1b<br \/>\n3. \u5982\u679c\u914d\u7f6e\u4e3a\u4ece\u4e0d\u540c\u6b65\uff0c\u5219\u6548\u7387\u6700\u9ad8\u3002<\/p>\n<p><strong>\u7f3a\u70b9\uff1a<\/strong><br \/>\n1. \u76f8\u5bf9\u4e8e\u6570\u636e\u6587\u4ef6\u6765\u8bf4\uff0caof\u8fdc\u5927\u4e8erdb\uff0c\u4fee\u590d\u901f\u5ea6\u4e5f\u6bd4rdb\u6162\uff1b<br \/>\n2. aof\u7684\u8fd0\u884c\u6548\u7387\u4e5f\u8981\u6bd4rdb\u6162\uff0c\u6240\u4ee5redis\u9ed8\u8ba4\u7684\u6301\u4e45\u5316\u65b9\u5f0f\u662frdb\uff0c\u800c\u4e0d\u662faof\u3002<\/p>\n<h2>\u6269\u5c55<\/h2>\n<p>1\u3001\u5982\u679cRedis\u53ea\u62ff\u6765\u505a\u7f13\u5b58\uff0c\u5373\u53ea\u5e0c\u671b\u6570\u636e\u5728\u670d\u52a1\u5668\u8fd0\u884c\u7684\u65f6\u5019\u5b58\u5728\uff0c\u90a3\u4e5f\u53ef\u4ee5\u4e0d\u9002\u7528\u4efb\u4f55\u6301\u4e45\u5316\u673a\u5236\uff1b<br \/>\n2\u3001\u540c\u65f6\u5f00\u542fRDB\u548cAOF\u7f13\u5b58\u673a\u5236\u65f6\uff1a<br \/>\n* \u5f53Redis\u542f\u52a8\u65f6\uff0c\u4f1a\u4f18\u5148\u8f7d\u5165AOF\u6587\u4ef6\u6765\u6062\u590d\u6570\u636e\uff0c\u56e0\u4e3a\u5728\u901a\u5e38\u60c5\u51b5\u4e0b\uff0cAOF\u6587\u4ef6\u4fdd\u5b58\u7684\u6570\u636e\u96c6\u8981\u6bd4RDB\u6587\u4ef6\u4fdd\u5b58\u7684\u6570\u636e\u96c6\u66f4\u5b8c\u6574\uff1b<br \/>\n* RDB\u7684\u6570\u636e\u5e76\u4e0d\u662f\u5b9e\u65f6\u7684\uff0c\u540c\u65f6\u4f7f\u7528\u4e24\u79cd\u6301\u4e45\u5316\u673a\u5236\u91cd\u542f\u670d\u52a1\u65f6\u4e5f\u53ea\u4f1a\u4f7f\u7528AOF\u6587\u4ef6\u6062\u590d\u6570\u636e\uff0c\u4f46\u4ecd\u4e0d\u5efa\u8bae\u5355\u72ec\u4f7f\u7528AOF\u673a\u5236\uff0c\u56e0\u4e3aRDB\u66f4\u9002\u5408\u7528\u4e8e\u5907\u4efd\u6570\u636e\u5e93\uff08AOF\u5728\u4e0d\u65ad\u53d8\u5316\uff0c\u4e0d\u65b9\u4fbf\u5907\u4efd\uff09\u3002<\/p>\n<p>3\u3001\u6027\u80fd\u5efa\u8bae\uff1a<br \/>\n* \u56e0\u4e3aRDB\u6587\u4ef6\u53ea\u7528\u4f5c\u540e\u5907\u7528\u9014\uff0c\u5efa\u8bae\u53ea\u5728Slave\u4e0a\u6301\u4e45\u5316RDB\u6587\u4ef6\uff0c\u800c\u4e14\u53ea\u898115\u5206\u949f\u5907\u4efd\u4e00\u6b21\u5c31\u8db3\u591f\u4e86\uff0c\u53ea\u9700\u8981\u4fdd\u7559<code>save 900 1<\/code>\u89c4\u5219\u5373\u53ef\uff1b<br \/>\n* \u5982\u679c\u5f00\u542fAOF\u673a\u5236\uff0c\u597d\u5904\u662f\u5728\u6700\u6076\u52a3\u7684\u60c5\u51b5\u4e0b\uff0c\u53ea\u4f1a\u4e22\u5931\u4e0d\u8d85\u8fc72\u79d2\u7684\u6570\u636e\uff0c\u542f\u52a8\u811a\u672c\u8f83\u7b80\u5355\u53ea\u9700\u8981\u52a0\u8f7d\u81ea\u5df1\u7684aof\u6587\u4ef6\u5373\u53ef\uff0c\u4ee3\u4ef7\u4e00\u662f\u5e26\u6765\u4e86\u6301\u7eed\u7684IO\uff0c\u4e8c\u662fAOF rewrite\u7684\u6700\u540e\u5c06rewrite\u8fc7\u7a0b\u4e2d\u4ea7\u751f\u7684\u65b0\u6570\u636e\u5199\u5230\u65b0\u6587\u4ef6\u9020\u6210\u7684\u963b\u585e\u51e0\u4e4e\u662f\u4e0d\u53ef\u907f\u514d\u7684\u3002\u53ea\u8981\u78c1\u76d8\u8bb8\u53ef\uff0c\u5e94\u5c3d\u91cf\u51cf\u5c11AOF rewrite\u7684\u9891\u7387\uff0cAOF\u91cd\u5199\u7684\u57fa\u7840\u5927\u5c0f\u9ed8\u8ba4\u503c64M\u592a\u5c0f\u4e86\uff0c\u53ef\u4ee5\u8bbe\u7f6e\u52305G\u4ee5\u4e0a\uff0c\u9ed8\u8ba4\u8d85\u8fc7\u539f\u5927\u5c0f100%\u5927\u5c0f\u91cd\u5199\uff0c\u53ef\u4ee5\u6539\u5230\u9002\u5f53\u7684\u6570\u503c\u3002<br \/>\n* \u5982\u679c\u4e0d\u5f00\u542fAOF\u673a\u5236\uff0c\u4ec5\u9760Master-Slave Replication\u5b9e\u73b0\u9ad8\u53ef\u7528\u6027\u4e5f\u662f\u53ef\u4ee5\u7684\uff0c\u80fd\u591f\u8282\u7701\u4e00\u5927\u7b14IO\uff0c\u4e5f\u51cf\u5c11\u4e86rewrite\u65f6\u5e26\u6765\u7684\u7cfb\u7edf\u6ce2\u52a8\u3002\u4ee3\u4ef7\u662f\u5982\u679cMaster\/Slave\u540c\u65f6\u6302\u6389\uff0c\u4f1a\u4e22\u5931\u5341\u51e0\u5206\u949f\u7684\u6570\u636e\uff0c\u542f\u52a8\u811a\u672c\u4e5f\u8981\u6bd4\u8f83\u4e24\u4e2aMaster\/Slave\u4e2d\u7684RDB\u6587\u4ef6\uff0c\u8f7d\u5165\u6700\u65b0\u7684\u90a3\u4e2a\uff0c\u5fae\u535a\u91c7\u7528\u7684\u5c31\u662f\u8fd9\u79cd\u67b6\u6784\u3002<\/p>\n<h1>Redis\u53d1\u5e03\u8ba2\u9605<\/h1>\n<p>Redis\u53d1\u5e03\u8ba2\u9605\uff08publisher\/subscriber\uff09\u662f\u4e00\u79cd<span class=\"text-highlighted-inline\" style=\"background-color: #fffd38;\">\u6d88\u606f\u901a\u4fe1\u6a21\u5f0f<\/span>\uff1a\u53d1\u5e03\u8005\uff08publisher\uff09\u53d1\u9001\u6d88\u606f\uff0c\u8ba2\u9605\u8005\uff08subscriber\uff09\u63a5\u6536\u6d88\u606f\u3002  \u5982\u5fae\u4fe1\u3001\u5fae\u535a\u7684\u5173\u6ce8\u7cfb\u7edf\u3002<br \/>\nRedis\u5ba2\u6237\u7aef\u53ef\u4ee5\u8ba2\u9605\u4efb\u610f\u6570\u91cf\u7684\u9891\u9053\uff08channel\uff09\u3002<br \/>\n\u4e09\u4e2a\u89d2\u8272\uff1a\u6d88\u606f\u53d1\u5e03\u8005\u3001\u9891\u9053\u3001\u6d88\u606f\u8ba2\u9605\u8005\u3002<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/e746c5c38ca34cf2a70c2e47e5a7e36d.png?x-oss-process=image\/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZmFpdGjnkZ7or5o=,size_20,color_FFFFFF,t_70,g_se,x_16\" alt=\"Redis\u53d1\u5e03\u8ba2\u9605\" \/><br \/>\n\u4e0b\u56fe\u5c55\u793a\u9891\u9053channel1\uff0c\u4ee5\u53ca\u8ba2\u9605\u8fd9\u4e2a\u9891\u9053\u7684\u4e09\u4e2a\u5ba2\u6237\u7aef\u2014\u2014client2\u3001client5\u548cclient1\u4e4b\u95f4\u7684\u5173\u7cfb\uff1a<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/b7489c6c9fdb4a64a70cb081e4adaa51.png\" alt=\"\u8ba2\u9605\u8005\u4e0e\u9891\u9053\" \/><br \/>\n\u5f53\u6709\u65b0\u6d88\u606f\u901a\u8fc7PUBLISH\u547d\u4ee4\u53d1\u9001\u7ed9\u9891\u9053channel1\u65f6\uff0c\u8fd9\u4e2a\u6d88\u606f\u5c31\u4f1a\u88ab\u53d1\u9001\u7ed9\u8ba2\u9605\u5b83\u7684\u4e09\u4e2a\u5ba2\u6237\u7aef\uff1a<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/fee670bd23bc468c878ffe5775fbe29e.png?x-oss-process=image\/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZmFpdGjnkZ7or5o=,size_11,color_FFFFFF,t_70,g_se,x_16\" alt=\"\u53d1\u5e03\u8005\u5230\u8ba2\u9605\u8005\" \/><br \/>\n<strong>Redis\u53d1\u5e03\u8ba2\u9605\u547d\u4ee4\uff1a<\/strong><br \/>\n\u8fd9\u4e9b\u547d\u4ee4\u88ab\u5e7f\u6cdb\u5e94\u7528\u4e8e\u6784\u5efa\u5373\u65f6\u901a\u4fe1\u5e94\u7528\uff0c\u6bd4\u5982\u7f51\u7edc\u804a\u5929\u5ba4\uff08chatroom\uff09\u548c\u5b9e\u65f6\u5e7f\u64ad\u3001\u5b9e\u65f6\u63d0\u9192\u7b49\u3002<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/4ddff722252b43a9996758f204e7aae8.png?x-oss-process=image\/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZmFpdGjnkZ7or5o=,size_20,color_FFFFFF,t_70,g_se,x_16\" alt=\"Redis\u53d1\u5e03\u8ba2\u9605\u547d\u4ee4\" \/><br \/>\n<strong>\u6d4b\u8bd5\u547d\u4ee4\uff1a<\/strong><br \/>\n\u8ba2\u9605\u8005\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\">127.0.0.1:6379&gt; SUBSCRIBE kuangshenshuo     # \u8ba2\u9605\u4e00\u4e2a\u9891\u9053kuangshenshuo\nReading messages... (press Ctrl-C to quit)\n1) \"subscribe\"      # \u8ba2\u9605\u8005\n2) \"kuangshenshuo\"  # \u8ba2\u9605\u7684\u9891\u9053\u540d\u79f0\n3) (integer) 1\n# \u7b49\u5f85\u8bfb\u53d6\u63a8\u9001\u7684\u4fe1\u606f\n1) \"message\"            # \u6536\u5230\u4e00\u6761\u6d88\u606f\n2) \"kuangshenshuo\"      # \u6d88\u606f\u6765\u81ea\u4e8e\u54ea\u4e2a\u9891\u9053\u7684\u540d\u79f0\n3) \"hello,kuangshen\"    # \u5177\u4f53\u7684\u6d88\u606f\u5185\u5bb9\n1) \"message\"            # \u6536\u5230\u4e00\u6761\u6d88\u606f\n2) \"kuangshenshuo\"      # \u9891\u9053\u7684\u540d\u79f0\n3) \"hello,redis\"        # \u5177\u4f53\u7684\u6d88\u606f\u5185\u5bb9\n<\/code><\/pre>\n<p>\u53d1\u5e03\u8005\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\">127.0.0.1:6379&gt; PUBLISH kuangshenshuo \"hello,kuangshen\"     # \u53d1\u5e03\u8005\u53d1\u5e03\u6d88\u606f\uff08hello,kuangshen\uff09\u5230\u9891\u9053\uff08kuangshenshuo\uff09\n(integer) 1     # 1\u4ee3\u8868\u53d1\u9001\u6210\u529f\n127.0.0.1:6379&gt; PUBLISH kuangshenshuo \"hello,redis\"     # \u53d1\u5e03\u8005\u53d1\u5e03\u6d88\u606f\uff08hello,redis\uff09\u5230\u9891\u9053\uff08kuangshenshuo\uff09\n(integer) 1\n<\/code><\/pre>\n<p><strong>\u539f\u7406\uff1a<\/strong><br \/>\nRedis\u662f\u4f7f\u7528C\u8bed\u8a00\u5b9e\u73b0\u7684\uff0c\u901a\u8fc7\u5206\u6790Redis\u6e90\u7801\u91cc\u7684pubsub.c\u6587\u4ef6\uff0c\u53ef\u4ee5\u4e86\u89e3\u53d1\u5e03\u548c\u8ba2\u9605\u673a\u5236\u7684\u5e95\u5c42\u5b9e\u73b0\uff0c\u501f\u6b64\u52a0\u6df1\u5bf9Redis\u7684\u7406\u89e3\u3002<br \/>\nRedis\u901a\u8fc7PUBLISH\uff08\u53d1\u5e03\u6d88\u606f\uff09\u3001SUBSCRIBE\uff08\u6839\u636e\u9891\u9053\u540d\u79f0\u8ba2\u9605\u9891\u9053\uff09\u548cPSUBSCRIBE\uff08\u8ba2\u9605\u4e00\u4e2a\u6216\u591a\u4e2a\u7b26\u5408\u7ed9\u5b9a\u6a21\u5f0f\u7684\u9891\u9053\uff09\u7b49\u547d\u4ee4\u5b9e\u73b0\u53d1\u5e03\u548c\u8ba2\u9605\u529f\u80fd\u3002<br \/>\n\u901a\u8fc7SUBSCRIBE\u547d\u4ee4\u8ba2\u9605\u67d0\u9891\u9053\u540e\uff0credis-server\u91cc\u7ef4\u62a4\u4e86\u4e00\u4e2a\u5b57\u5178\uff0c\u5b57\u5178\u7684\u952e\u5c31\u662f\u4e00\u4e2a\u4e2a\u7684channel\uff0c\u800c\u5b57\u5178\u7684\u503c\u5219\u662f\u4e00\u4e2a\u94fe\u8868\uff0c\u94fe\u8868\u4e2d\u4fdd\u5b58\u4e86\u6240\u6709\u8ba2\u9605\u8fd9\u4e2achannel\u7684\u5ba2\u6237\u7aef\u3002SUBSCRIBE\u547d\u4ee4\u7684\u5173\u952e\uff0c\u5c31\u662f\u5c06\u5ba2\u6237\u7aef\u6dfb\u52a0\u5230\u7ed9\u5b9achannel\u7684\u8ba2\u9605\u94fe\u8868\u4e2d\u3002<br \/>\n\u901a\u8fc7PUBLISH\u547d\u4ee4\u5411\u8ba2\u9605\u8005\u53d1\u9001\u6d88\u606f\uff0credis-server\u4f1a\u4f7f\u7528\u7ed9\u5b9a\u7684\u9891\u7387\u4f5c\u4e3a\u952e\uff0c\u5728\u5b83\u6240\u7ef4\u62a4\u7684channel\u5b57\u5178\u4e2d\u67e5\u627e\u8bb0\u5f55\u4e86\u8ba2\u9605\u8fd9\u4e2a\u9891\u9053\u7684\u6240\u6709\u5ba2\u6237\u7aef\u7684\u94fe\u8868\uff0c\u904d\u5386\u8fd9\u4e2a\u94fe\u8868\uff0c\u5c06\u6d88\u606f\u53d1\u5e03\u7ed9\u6240\u6709\u8ba2\u9605\u8005\u3002<br \/>\nPub\/Sub\u4ece\u5b57\u9762\u4e0a\u7406\u89e3\u5c31\u662f\u53d1\u5e03\uff08Publish\uff09\u4e0e\u8ba2\u9605\uff08Subscribe\uff09\uff0c\u5728Redis\u4e2d\uff0c\u4f60\u53ef\u4ee5\u8bbe\u5b9a\u5bf9\u67d0\u4e00\u4e2akey\u503c\u8fdb\u884c\u6d88\u606f\u53d1\u5e03\u53ca\u6d88\u606f\u8ba2\u9605\uff0c\u5f53\u4e00\u4e2akey\u503c\u4e0a\u8fdb\u884c\u4e86\u6d88\u606f\u53d1\u5e03\u4e4b\u540e\uff0c\u6240\u6709\u8ba2\u9605\u5b83\u7684\u5ba2\u6237\u7aef\u90fd\u4f1a\u6536\u5230\u76f8\u5e94\u7684\u6d88\u606f\u3002\u8fd9\u4e00\u529f\u80fd\u6700\u660e\u663e\u7684\u7528\u6cd5\u5c31\u662f\u7528\u4f5c\u5b9e\u65f6\u6d88\u606f\u7cfb\u7edf\uff0c\u6bd4\u5982\u666e\u901a\u7684\u5373\u65f6\u804a\u5929\uff0c\u7fa4\u804a\u7b49\u529f\u80fd\u3002<br \/>\n<strong>\u4f7f\u7528\u573a\u666f\uff1a<\/strong><br \/>\n1\u3001\u5b9e\u65f6\u6d88\u606f\u7cfb\u7edf\uff1b<br \/>\n2\u3001\u5b9e\u65f6\u804a\u5929\uff08\u9891\u9053\u5f53\u505a\u804a\u5929\u5ba4\uff0c\u5c06\u6d88\u606f\u56de\u663e\u7ed9\u6240\u6709\u4eba\u5373\u53ef\uff09\uff1b<br \/>\n3\u3001\u8ba2\u9605\u3001\u5173\u6ce8\u7cfb\u7edf\u3002<br \/>\n\u7a0d\u5fae\u590d\u6742\u7684\u573a\u666f\uff0c\u5c31\u4f1a\u4f7f\u7528\u6d88\u606f\u4e2d\u95f4\u4ef6MQ\uff08Kafka\u3001RabbitMQ\u7b49\uff09\u3002<\/p>\n<h1>Redis\u4e3b\u4ece\u590d\u5236<\/h1>\n<h2>\u6982\u5ff5<\/h2>\n<p>\u4e3b\u4ece\u590d\u5236\uff0c\u662f\u6307\u5c06\u4e00\u53f0Redis\u670d\u52a1\u5668\u7684\u6570\u636e\uff0c\u590d\u5236\u5230\u5176\u4ed6\u7684Redis\u670d\u52a1\u5668\u3002\u524d\u8005\u79f0\u4e3a\u4e3b\u8282\u70b9\uff08master\/leader\uff09\uff0c\u540e\u8005\u79f0\u4e3a\u4ece\u8282\u70b9\uff08slave\/follower\uff09\u3002<span class=\"text-highlighted-inline\" style=\"background-color: #fffd38;\">\u6570\u636e\u7684\u590d\u5236\u662f\u5355\u5411\u7684\uff0c\u53ea\u80fd\u4ece\u4e3b\u8282\u70b9\u5230\u4ece\u8282\u70b9<\/span>\u3002Master\u4ee5\u5199\u4e3a\u4e3b\uff0cSlave\u4ee5\u8bfb\u4e3a\u4e3b\u3002<br \/>\n<span class=\"text-highlighted-inline\" style=\"background-color: #fffd38;\">\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u6bcf\u53f0Redis\u670d\u52a1\u5668\u90fd\u662f\u4e3b\u8282\u70b9<\/span>\uff0c\u4e14\u4e00\u4e2a\u4e3b\u8282\u70b9\u53ef\u4ee5\u6709\u591a\u4e2a\u4ece\u8282\u70b9\uff08\u6216\u6ca1\u6709\u4ece\u8282\u70b9\uff09\uff0c\u4f46\u4e00\u4e2a\u4ece\u8282\u70b9\u53ea\u80fd\u6709\u4e00\u4e2a\u4e3b\u8282\u70b9\u3002<br \/>\n\u4e3b\u4ece\u590d\u5236\u7684\u4f5c\u7528\u4e3b\u8981\u5305\u62ec\uff1a<br \/>\n1\u3001\u6570\u636e\u5197\u4f59\uff1a\u4e3b\u4ece\u590d\u5236\u5b9e\u73b0\u4e86\u6570\u636e\u7684\u70ed\u5907\u4efd\uff0c\u662f\u6301\u4e45\u5316\u4e4b\u5916\u7684\u4e00\u79cd\u6570\u636e\u5197\u4f59\u65b9\u5f0f\uff1b<br \/>\n2\u3001\u6545\u969c\u6062\u590d\uff1a\u5f53\u4e3b\u8282\u70b9\u51fa\u73b0\u95ee\u9898\u65f6\uff0c\u53ef\u4ee5\u7531\u4ece\u8282\u70b9\u63d0\u4f9b\u670d\u52a1\uff0c\u5b9e\u73b0\u5feb\u901f\u7684\u6545\u969c\u6062\u590d\uff1b\u5b9e\u9645\u4e0a\u662f\u4e00\u79cd\u670d\u52a1\u7684\u5197\u4f59\uff1b<br \/>\n3\u3001\u8d1f\u8f7d\u5747\u8861\uff1a\u5728\u4e3b\u4ece\u590d\u5236\u7684\u57fa\u7840\u4e0a\uff0c\u914d\u5408\u8bfb\u5199\u5206\u79bb\uff0c\u53ef\u4ee5\u7531\u4e3b\u8282\u70b9\u63d0\u4f9b\u5199\u670d\u52a1\uff0c\u7531\u4ece\u8282\u70b9\u63d0\u4f9b\u8bfb\u670d\u52a1\uff08\u5373\u5199Redis\u6570\u636e\u65f6\uff0c\u5e94\u7528\u8fde\u63a5\u4e3b\u8282\u70b9\uff0c\u8bfbRedis\u6570\u636e\u662f\u5e94\u7528\u8fde\u63a5\u4ece\u8282\u70b9\uff09\uff0c\u5206\u62c5\u670d\u52a1\u5668\u8d1f\u8f7d\uff1b\u5c24\u5176\u662f\u5728\u5199\u5c11\u8bfb\u591a\u7684\u573a\u666f\u4e0b\uff0c\u901a\u8fc7\u591a\u4e2a\u8282\u70b9\u5206\u62c5\u8bfb\u8d1f\u8f7d\uff0c\u53ef\u4ee5\u5927\u5927\u63d0\u4f9bRedis\u670d\u52a1\u5668\u7684\u5e76\u53d1\u91cf\uff1b<br \/>\n4\u3001\u9ad8\u53ef\u7528\u57fa\u77f3\uff1a\u9664\u4e86\u4e0a\u8ff0\u4f5c\u7528\u4ee5\u5916\uff0c\u4e3b\u4ece\u590d\u5236\u8fd8\u662f\u54e8\u5175\u548c\u96c6\u7fa4\u80fd\u591f\u5b9e\u65bd\u7684\u57fa\u7840\uff0c\u56e0\u6b64\u8bf4\u4e3b\u4ece\u590d\u5236\u662fRedis\u9ad8\u53ef\u7528\u7684\u57fa\u7840\u3002<\/p>\n<p>\u4e00\u822c\u6765\u8bf4\uff0c\u8981\u5c06Redis\u8fd0\u7528\u4e8e\u5de5\u7a0b\u9879\u76ee\u4e2d\uff0c\u53ea\u4f7f\u7528\u4e00\u53f0Redis\u662f\u4e07\u4e07\u4e0d\u80fd\u7684\uff0c\u539f\u56e0\u5982\u4e0b\uff1a<br \/>\n1\u3001\u4ece\u7ed3\u6784\u4e0a\uff0c\u5355\u4e2aRedis\u670d\u52a1\u5668\u4f1a\u53d1\u751f\u5355\u70b9\u6545\u969c\uff0c\u5e76\u4e14\u4e00\u53f0\u670d\u52a1\u5668\u9700\u8981\u5904\u7406\u6240\u6709\u7684\u8bf7\u6c42\u8d1f\u8f7d\uff0c\u538b\u529b\u8f83\u5927\uff1b<br \/>\n2\u3001\u4ece\u5bb9\u91cf\u4e0a\u4e2a\uff0c\u5355\u4e2aRedis\u670d\u52a1\u5668\u7684\u5bb9\u91cf\u6709\u9650\uff0c\u5c31\u7b97\u4e00\u53f0Redis\u670d\u52a1\u5668\u7684\u5bb9\u91cf\u4e3a256G\uff0c\u4e5f\u4e0d\u80fd\u5c06\u6240\u6709\u5185\u5b58\u90fd\u7528\u4f5cRedis\u5b58\u50a8\u5185\u5b58\uff0c\u4e00\u822c\u6765\u8bf4\uff0c<span class=\"text-highlighted-inline\" style=\"background-color: #fffd38;\">\u5355\u53f0Redis\u6700\u5927\u4f7f\u7528\u5185\u5b58\u4e0d\u5e94\u8be5\u8d85\u8fc720G<\/span>\u3002<br \/>\n\u7535\u5546\u7f51\u7ad9\u4e0a\u7684\u5546\u54c1\uff0c\u4e00\u822c\u90fd\u662f\u4e00\u6b21\u4e0a\u4f20\uff0c\u65e0\u6570\u6b21\u6d4f\u89c8\u7684\uff0c\u4e13\u4e1a\u8bf4\u6cd5\u5c31\u662f\u201c\u591a\u8bfb\u5c11\u5199\u201d\u3002<br \/>\n\u5bf9\u4e8e\u8fd9\u79cd\u573a\u666f\uff0c\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u5982\u4e0b\u7684\u8fd9\u79cd\u67b6\u6784\uff1a<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/5ad255b8d1e649a9b57cce37fb89dbb8.png?x-oss-process=image\/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZmFpdGjnkZ7or5o=,size_20,color_FFFFFF,t_70,g_se,x_16\" alt=\"Redis\u4e3b\u4ece\u590d\u5236\u67b6\u6784\" \/><br \/>\n\u4e3b\u4ece\u590d\u5236\uff0c\u8bfb\u5199\u5206\u79bb\uff0c80%\u7684\u60c5\u51b5\u4e0b\u90fd\u662f\u8bfb\u64cd\u4f5c\uff0c\u53ef\u4ee5\u51cf\u7f13\u670d\u52a1\u5668\u7684\u538b\u529b\u3002\u67b6\u6784\u4e2d\u7ecf\u5e38\u4f7f\u7528\u3002\u6700\u4f4e\u914d\u7f6e\u662f\u4e00\u4e3b\u4e8c\u4ece\u3002<\/p>\n<h2>\u624b\u52a8\u6a21\u5f0f<\/h2>\n<h3>\u73af\u5883\u914d\u7f6e<\/h3>\n<p>\u53ea\u9700\u8981\u914d\u7f6e\u4ece\u5e93\uff0c\u4e0d\u9700\u8981\u914d\u7f6e\u4e3b\u5e93\uff0c\u56e0\u4e3aRedis\u9ed8\u8ba4\u81ea\u5df1\u662f\u4e3b\u5e93\u3002<br \/>\n\u8fde\u63a5Redis\u5ba2\u6237\u7aef\u4e4b\u540e\uff0c\u53ef\u4ee5\u67e5\u770b\u5f53\u524d\u5e93\u7684\u4e3b\u4ece\u914d\u7f6e\u4fe1\u606f\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\">127.0.0.1:6379&gt; info replication    # \u67e5\u770b\u5f53\u524d\u5e93\u7684\u4e3b\u4ece\u914d\u7f6e\u4fe1\u606f\n# Replication\nrole:master     # \u5f53\u524d\u5e93\u7684\u89d2\u8272\uff0c\u663e\u793a\u5728master\nconnected_slaves:0  # \u5f53\u524d\u8fde\u63a5\u8fd9\u4e2a\u5e93\u7684\u4ece\u673a\u7684\u4e2a\u6570\uff0c\u5f53\u524d\u662f0\nmaster_failover_state:no-failover\nmaster_replid:f4015fef8c42481e3846dd1d6c4a1d68fcef3ee9\nmaster_replid2:0000000000000000000000000000000000000000\nmaster_repl_offset:0\nsecond_repl_offset:-1\nrepl_backlog_active:0\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:0\nrepl_backlog_histlen:0\n<\/code><\/pre>\n<p>\u901a\u8fc7\u518d\u590d\u5236\u4e24\u4e2a<code>redis.conf<\/code>\u6587\u4ef6\uff0c\u53ef\u4ee5\u540c\u65f6\u542f\u52a8\u4e09\u4e2aRedis\u670d\u52a1\uff0c\u4ece\u800c\u5b9e\u73b0\u5728\u4e00\u53f0\u673a\u5668\u4e0a\u642d\u5efaRedis\u4e3b\u4ece\u590d\u5236\uff08\u4e00\u4e3b\u4e8c\u4ece\uff09\u67b6\u6784\u7684\u64cd\u4f5c\u3002<\/p>\n<pre><code class=\"language-bash line-numbers\">[root@localhost redis-6.2.4]# mkdir kconfig     # \u521b\u5efa\u96c6\u7fa4\u914d\u7f6e\u6587\u4ef6\u76ee\u5f55\n[root@localhost redis-6.2.4]# cp redis.conf kconfig\/redis79.conf\n[root@localhost redis-6.2.4]# cp redis.conf kconfig\/redis80.conf\n[root@localhost redis-6.2.4]# cp redis.conf kconfig\/redis81.conf\n<\/code><\/pre>\n<p>\u4fee\u6539\u914d\u7f6e\u6587\u4ef6\u4e2d\u7684\u5185\u5bb9\uff0c\u4f7f\u4e09\u4e2aRedis\u670d\u52a1\u5668\u80fd\u591f\u5728\u4e0d\u540c\u7684\u7aef\u53e3\u542f\u52a8\u8d77\u6765\uff0c\u9700\u8981\u4fee\u6539\u7684\u914d\u7f6e\u4e3b\u8981\u6709\u4ee5\u4e0b\u51e0\u9879\uff1a<br \/>\n1\u3001\u670d\u52a1\u76d1\u542c\u7aef\u53e3\u53f7\uff1b<br \/>\n2\u3001\u5f00\u542f\u4ee5\u5b88\u62a4\u8fdb\u7a0b\uff08\u540e\u53f0\uff09\u65b9\u5f0f\u8fd0\u884c\uff1b<br \/>\n3\u3001\u540e\u53f0\u8fdb\u7a0b\u6587\u4ef6\uff08pid\uff09\u540d\u79f0\uff1b<br \/>\n4\u3001\u65e5\u5fd7\u6587\u4ef6\uff08log\uff09\u540d\u79f0\uff1b<br \/>\n5\u3001rdb\u6301\u4e45\u5316\uff08\u5907\u4efd\uff09\u6587\u4ef6\u540d\u79f0\u3002<\/p>\n<pre><code class=\"language-bash line-numbers\">port 6380       # \u8981\u4fdd\u8bc1\u4e09\u53f0Redis\u670d\u52a1\u5668\u5de5\u4f5c\u5728\u4e0d\u540c\u7684\u7aef\u53e3\u4e0a\ndaemonize yes   # \u6253\u5f00\u4ee5\u5b88\u62a4\u8fdb\u7a0b\u65b9\uff08\u540e\u53f0\uff09\u5f0f\u8fd0\u884c\npidfile \/var\/run\/redis_6380.pid # \u4fee\u6539\u540e\u53f0\u8fdb\u7a0b\u6587\u4ef6\u540d\u79f0\uff0c\u4fdd\u8bc1\u6bcf\u4e2a\u670d\u52a1\u4e0d\u91cd\u540d\nlogfile \"redis6380.log\"     # \u4fee\u6539\u65e5\u5fd7\u6587\u4ef6\u540d\u79f0\uff0c\u4fdd\u8bc1\u6bcf\u4e2a\u670d\u52a1\u4e0d\u91cd\u540d\ndbfilename dump6380.rdb     # \u4fee\u6539rdb\u6301\u4e45\u5316\u6587\u4ef6\u540d\u79f0\uff0c\u4fdd\u8bc1\u6bcf\u4e2a\u670d\u52a1\u4e0d\u91cd\u540d\n<\/code><\/pre>\n<p>\u6bcf\u4e2a\u670d\u52a1\u7684\u4ee5\u4e0a\u51e0\u9879\u914d\u7f6e\u90fd\u9700\u8981\u8fdb\u884c\u4fee\u6539\uff0c\u786e\u4fdd\u6bcf\u4e2a\u670d\u52a1\u90fd\u80fd\u6b63\u5e38\u542f\u52a8\u3001\u8fd0\u884c\u3001\u5173\u95ed\u3002<br \/>\n\u914d\u7f6e\u6587\u4ef6\u4fee\u6539\u5b8c\u6210\u540e\uff0c\u542f\u52a8\u4e09\u4e2aredis\u670d\u52a1\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\">[root@localhost kconfig]# redis-server redis79.conf\n[root@localhost kconfig]# redis-server redis80.conf\n[root@localhost kconfig]# redis-server redis81.conf\n# \u67e5\u770b\u4e09\u4e2a\u670d\u52a1\u662f\u5426\u5df2\u7ecf\u542f\u52a8\n[root@localhost kconfig]# ps -ef | grep redis\nroot      3053     1  0 15:23 ?        00:00:00 redis-server *:6379\nroot      3062     1  0 15:24 ?        00:00:00 redis-server *:6380\nroot      3071     1  0 15:24 ?        00:00:00 redis-server *:6381\nroot      3094  2336  0 15:25 pts\/0    00:00:00 grep --color=auto redis\n<\/code><\/pre>\n<h3>\u4e00\u4e3b\u4e8c\u4ece<\/h3>\n<p><span class=\"text-highlighted-inline\" style=\"background-color: #fffd38;\">\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u6bcf\u4e2aRedis\u670d\u52a1\u90fd\u662f\u4e3b\u8282\u70b9\u3002<\/span>\u4e00\u822c\u60c5\u51b5\u4e0b\uff0c\u53ea\u9700\u8981\u914d\u7f6e\u4ece\u673a\u5c31\u53ef\u4ee5\u4e86\u3002<\/p>\n<h4>\u4f7f\u7528\u547d\u4ee4\u914d\u7f6e\u4ece\u673a\uff08\u4ece\u673a\u4e00\u65e6\u91cd\u542f\uff0c\u914d\u7f6e\u5c31\u4e22\u5931\u4e86\uff09<\/h4>\n<p>\u4f7f\u7528<code>redis-cli -p 638x<\/code>\u547d\u4ee4\uff0c\u8fde\u63a56380\u548c6381\u4e24\u53f0\u4ece\u673a\uff0c\u7136\u540e\u8fdb\u884c\u914d\u7f6e\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\">[root@localhost ~]# redis-cli -p 6380   # \u8fde\u63a5redis\u670d\u52a1\n127.0.0.1:6380&gt; SLAVEOF 127.0.0.1 6379  # \u4f7f\u7528SLAVEOF host port\u547d\u4ee4\u914d\u7f6e\u5f53\u524d\u670d\u52a1\u7684\u4e3b\u673a\nOK\n127.0.0.1:6380&gt; INFO replication        # \u67e5\u770b\u5f53\u524d\u670d\u52a1\u7684\u4e3b\u4ece\u914d\u7f6e\n# Replication\nrole:slave      # \u5f53\u524d\u670d\u52a1\u7684\u89d2\u8272\uff1a\u4ece\u673a\nmaster_host:127.0.0.1   # \u5f53\u524d\u4ece\u673a\u7684\u4e3b\u673aIP\nmaster_port:6379        # \u5f53\u524d\u4ece\u673a\u7684\u4e3b\u673a\u7aef\u53e3\u53f7\nmaster_link_status:up\nmaster_last_io_seconds_ago:5\nmaster_sync_in_progress:0\nslave_repl_offset:0\nslave_priority:100\nslave_read_only:1\nreplica_announced:1\nconnected_slaves:0\nmaster_failover_state:no-failover\nmaster_replid:1af7d504ec7075fe8bb8188c08c25c3ed9482078\nmaster_replid2:0000000000000000000000000000000000000000\nmaster_repl_offset:0\nsecond_repl_offset:-1\nrepl_backlog_active:1\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:1\nrepl_backlog_histlen:0\n<\/code><\/pre>\n<p>\u5f5380\u548c81\u4e24\u4e2a\u670d\u52a1\u90fd\u914d\u7f6e\u5b8c\u4e3b\u673a\u4fe1\u606f\u540e\uff0c\u5728\u4e3b\u673a\u4e2d\u67e5\u770b\u4e3b\u4ece\u914d\u7f6e\u4fe1\u606f\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\">[root@localhost kconfig]# redis-cli -p 6379 # \u8fde\u63a5redis\u670d\u52a1\n127.0.0.1:6379&gt; INFO replication        # \u67e5\u770b\u5f53\u524d\u670d\u52a1\u7684\u4e3b\u4ece\u914d\u7f6e\n# Replication\nrole:master     # \u5f53\u524d\u670d\u52a1\u7684\u89d2\u8272\uff1a\u4ece\u673a\nconnected_slaves:2  # \u5f53\u524d\u670d\u52a1\u7684\u4ece\u673a\u4e2a\u6570\uff1a2\u53f0\nslave0:ip=127.0.0.1,port=6380,state=online,offset=336,lag=1 # \u7b2c\u4e00\u53f0\u4ece\u673a\u7684\u4fe1\u606f\nslave1:ip=127.0.0.1,port=6381,state=online,offset=336,lag=1 # \u7b2c\u4e8c\u53f0\u4ece\u673a\u7684\u4fe1\u606f\nmaster_failover_state:no-failover\nmaster_replid:1af7d504ec7075fe8bb8188c08c25c3ed9482078\nmaster_replid2:0000000000000000000000000000000000000000\nmaster_repl_offset:336\nsecond_repl_offset:-1\nrepl_backlog_active:1\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:1\nrepl_backlog_histlen:336\n<\/code><\/pre>\n<p>\u5b9e\u9645\u573a\u666f\u4e0b\u7684\u4e3b\u4ece\u914d\u7f6e\uff0c\u5e94\u8be5\u5728\u914d\u7f6e\u6587\u4ef6\u4e2d\u914d\u7f6e\uff08\u73b0\u5728\u4f7f\u7528\u7684\u662f\u547d\u4ee4\uff09\uff0c\u5426\u5219\u4ece\u673a\u4e00\u65e6\u91cd\u542f\uff0c\u914d\u7f6e\u5c31\u4f1a\u4e22\u5931\u3002<br \/>\n<strong>\u7ec6\u8282\uff1a<\/strong><br \/>\n\u4e3b\u673a\u53ef\u4ee5\u5199\uff0c\u4ece\u673a\u4e0d\u80fd\u5199\uff0c\u53ea\u80fd\u8bfb\u3002\u4e3b\u673a\u4e2d\u6240\u6709\u7684\u4fe1\u606f\u548c\u6570\u636e\uff0c\u90fd\u4f1a\u81ea\u52a8\u88ab\u4ece\u673a\u4fdd\u5b58\u3002<br \/>\n\u5728\u4e3b\u673a\u4e2d\u5199\u5165\u7684\u6570\u636e\uff0c\u53ef\u4ee5\u5728\u4ece\u673a\u4e2d\u67e5\u8be2\u5230\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\"># \u57286379\u4e3b\u673a\u4e2d\u5199\u5165\u6570\u636e\n127.0.0.1:6379&gt; set k1 v1\nOK\n# \u57286379\u4e3b\u673a\u4e2d\u8bfb\u53d6\u6570\u636e\n127.0.0.1:6379&gt; get k1\n\"v1\"\n# \u57286380\u4ece\u673a\u4e2d\u8bfb\u53d6\u6570\u636e\n127.0.0.1:6380&gt; get k1\n\"v1\"\n# \u57286381\u4ece\u673a\u4e2d\u8bfb\u53d6\u6570\u636e\n127.0.0.1:6381&gt; get k1\n\"v1\"\n<\/code><\/pre>\n<p>\u5982\u679c\u5728\u4ece\u673a\u4e2d\u5199\uff0c\u5219\u4f1a\u62a5\u9519\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\">127.0.0.1:6380&gt; set k2 v2\n(error) READONLY You can't write against a read only replica.\n<\/code><\/pre>\n<p>\u5728\u672a\u914d\u7f6e\u54e8\u5175\u7684\u60c5\u51b5\u4e0b\uff0c\u4e3b\u673a\u5982\u679c\u5b95\u673a\u4e86\uff0c\u4ece\u673a\u4e0d\u4f1a\u53d1\u73b0\u4e3b\u673a\u5b95\u673a\uff0c\u4f1a\u7ee7\u7eed\u6309\u7167\u4ece\u673a\u7684\u5de5\u4f5c\u65b9\u5f0f\u5de5\u4f5c\uff0c\u4f46\u4ece\u673a\u7684\u6570\u636e\u4e0d\u4f1a\u4e22\u5931\u3002\u4e3b\u673a\u91cd\u65b0\u4e0a\u7ebf\u4e4b\u540e\uff0c\u662f\u53ef\u4ee5\u7ee7\u7eed\u548c\u4ece\u673a\u540c\u6b65\u6570\u636e\u7684\u3002<br \/>\n\u5982\u679c\u662f\u4f7f\u7528\u547d\u4ee4\u884c\uff08\u975e\u914d\u7f6e\u6587\u4ef6\uff09\u914d\u7f6e\u7684\u4e3b\u4ece\uff0c\u5982\u679c\u4ece\u673a\u5b95\u673a\u4e86\uff0c\u518d\u6b21\u542f\u52a8\u540e\uff0c\u4ece\u673a\u4f1a\u81ea\u52a8\u53d8\u6210\u53e6\u4e00\u4e2a\u4e3b\u673a\uff0c\u5982\u679c\u518d\u6b21\u901a\u8fc7<code>SLAVEOF<\/code>\u547d\u4ee4\u914d\u7f6e\u56de\u4ece\u673a\uff0c\u5219\u5728\u4ece\u673a\u65ad\u7ebf\u8fd9\u6bb5\u65f6\u95f4\u5185\uff0c\u4e3b\u673a\u8bbe\u7f6e\u7684\u503c\uff0c\u4e5f\u4f1a\u7acb\u5373\u540c\u6b65\u5230\u4ece\u673a\u3002<br \/>\n<strong>\u4e3b\u4ece\u673a\u4e4b\u95f4\u7684\u590d\u5236\u539f\u7406\uff1a<\/strong><br \/>\nSlave\u542f\u52a8\u6210\u529f\u8fde\u63a5\u5230Master\u540e\uff0c\u4f1a\u53d1\u9001\u4e00\u4e2async\u547d\u4ee4\u3002Master\u63a5\u5230\u547d\u4ee4\uff0c\u542f\u52a8\u540e\u53f0\u7684\u5b58\u76d8\u8fdb\u7a0b\uff0c\u540c\u65f6\u6536\u96c6\u6240\u6709\u63a5\u6536\u5230\u7684\u7528\u4e8e\u4fee\u6539\u6570\u636e\u7684\u547d\u4ee4\uff0c\u5728\u540e\u53f0\u8fdb\u7a0b\u6267\u884c\u5b8c\u6bd5\u540e\uff0c<span class=\"text-highlighted-inline\" style=\"background-color: #fffd38;\">Master\u5c06\u4f20\u9001\u6574\u4e2a\u6570\u636e\u6587\u4ef6\u5230Slave\uff0c\u5e76\u5b8c\u6210\u4e00\u6b21\u5b8c\u5168\u540c\u6b65\u3002<\/span><br \/>\n\u5168\u91cf\u590d\u5236\uff1a\u800cSlave\u670d\u52a1\u5728\u63a5\u6536\u5230\u6570\u636e\u5e93\u6587\u4ef6\u540e\uff0c\u5c06\u5176\u5b58\u76d8\u5e76\u52a0\u8f7d\u5230\u5185\u5b58\u4e2d\u3002<br \/>\n\u589e\u91cf\u590d\u5236\uff1aMaster\u7ee7\u7eed\u5c06\u65b0\u7684\u6240\u6709\u6536\u96c6\u5230\u7684\u4fee\u6539\u547d\u4ee4\u4f9d\u6b21\u4f20\u7ed9Slave\uff0c\u5b8c\u6210\u540c\u6b65\u3002<br \/>\n\u4f46\u662f\u53ea\u8981\u662f\u91cd\u65b0\u8fde\u63a5Master\uff0c\u4e00\u6b21\u5b8c\u5168\u540c\u6b65\uff08\u5168\u91cf\u590d\u5236\uff09\u5c06\u88ab\u81ea\u52a8\u6267\u884c\u3002<\/p>\n<h4>\u4f7f\u7528\u914d\u7f6e\u6587\u4ef6\u914d\u7f6e\u4ece\u673a\uff08\u4ece\u673a\u91cd\u542f\u65f6\uff0c\u4f1a\u6839\u636e\u914d\u7f6e\u6587\u4ef6\u91cd\u65b0\u8fde\u63a5\u4e3b\u673a\uff09<\/h4>\n<p>\u6253\u5f00\u4ece\u673a\u7684\u914d\u7f6e\u6587\u4ef6\uff0c\u7136\u540e\u4fee\u6539REPLICATION\u90e8\u5206\u7684\u914d\u7f6e\u5373\u53ef\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\">replicaof &lt;masterip&gt; &lt;masterport&gt;   # \u914d\u7f6e\u4e3b\u673a\u7684IP\u5730\u5740\u548c\u7aef\u53e3\u53f7\nmasterauth &lt;master-password&gt;        # \u5982\u679c\u4e3b\u673a\u8bbe\u7f6e\u4e86\u8fde\u63a5\u5bc6\u7801(requirepass)\uff0c\u5219\u5728\u8fd9\u91cc\u914d\u7f6e\u4e3b\u673a\u7684\u5bc6\u7801\nmasteruser &lt;username&gt;               # \u5982\u679c\u4e3b\u673a\u8bbe\u7f6e\u4e86\u7528\u6237\u540d(user)\uff0c\u5219\u5728\u8fd9\u91cc\u914d\u7f6e\u4e3b\u673a\u7684\u7528\u6237\u540d\n<\/code><\/pre>\n<h3>\u5c42\u5c42\u94fe\u8def<\/h3>\n<p>\u4e0e\u4e00\u4e3b\u4e8c\u4ece\u7684\u7ed3\u6784\uff08\u4e24\u4e2a\u4ece\u8282\u70b9\u90fd\u8fde\u63a5\u81f3\u4e3b\u8282\u70b9\uff09\u4e0d\u540c\uff0c\u5c42\u5c42\u94fe\u8def\u7684\u7ed3\u6784\u662f\uff0cA\u4ece\u8282\u70b9\u8fde\u63a5B\u4ece\u8282\u70b9\uff0cB\u4ece\u8282\u70b9\u8fde\u63a5\u4e3b\u8282\u70b9\uff1a<br \/>\n <img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/a238bcff8db247769ac262e111710502.png?x-oss-process=image\/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZmFpdGjnkZ7or5o=,size_20,color_FFFFFF,t_70,g_se,x_16\" alt=\"\u5c42\u5c42\u94fe\u8def\u7684\u7ed3\u6784\" \/><br \/>\n<span class=\"text-highlighted-inline\" style=\"background-color: #fffd38;\">\u9700\u8981\u7279\u522b\u6ce8\u610f\u7684\u662f\uff0c6380\u8282\u70b9\u5728\u903b\u8f91\u4e0a\u65e2\u662f6379\u7684\u4ece\u8282\u70b9\uff0c\u540c\u65f6\u4e5f\u662f6381\u7684\u4e3b\u8282\u70b9\uff0c\u4f46\u662f\u5728\u5b9e\u9645\u4e2d\uff0c6380\u8282\u70b9\u4ecd\u7136\u53ea\u53d1\u6325\u4ece\u8282\u70b9\u7684\u4f5c\u7528\uff0c\u4e0d\u80fd\u8fdb\u884c\u5199\u64cd\u4f5c\uff01<\/span><br \/>\n\u8c0b\u671d\u7be1\u4f4d\uff01\u5373\u4f7f6379\u53c8\u542f\u52a8\u4e86\uff0c\u53ef\u4ee5\u6b63\u5e38\u670d\u52a1\u4e86\uff0c\u4f46\u662f\u7531\u4e8e6380\u5df2\u7ecf\u6210\u4e3a\u4e86\u4e3b\u8282\u70b9\uff0c\u4e3b\u4ece\u7ed3\u6784\u4e5f\u4e0d\u4f1a\u81ea\u52a8\u53d8\u56de\u539f\u6765\u7684\u6837\u5b50\uff0c\u5982\u679c\u60f3\u8981\u53d8\u56de\u539f\u6765\u7684\u6837\u5b50\uff0c\u9700\u8981\u624b\u52a8\u8bbe\u7f6e\u3002<br \/>\n\u5176\u914d\u7f6e\u8fc7\u7a0b\u5982\u4e0b\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\"># \u542f\u52a8\u4e09\u4e2aredis\u670d\u52a1\n[root@localhost kconfig]# redis-server redis79.conf\n[root@localhost kconfig]# redis-server redis80.conf\n[root@localhost kconfig]# redis-server redis81.conf\n[root@localhost kconfig]# ps -ef | grep redis\nroot      6890     1  0 21:00 ?        00:00:00 redis-server *:6379\nroot      6897     1  0 21:00 ?        00:00:00 redis-server *:6380\nroot      6904     1  0 21:00 ?        00:00:00 redis-server *:6381\nroot      6909  6800  0 21:00 pts\/0    00:00:00 grep --color=auto redis\n\n# \u4f7f\u7528redis\u5ba2\u6237\u7aef\u8fde\u63a56381\u670d\u52a1\uff0c\u7136\u540e\u914d\u7f6e\u5176\u4e3b\u673a\u4e3a6380\u670d\u52a1\n[root@localhost ~]# redis-cli -p 6381\n127.0.0.1:6381&gt; SLAVEOF 127.0.0.1 6380  # \u914d\u7f6e\u5176\u4e3b\u8282\u70b9\u4e3a6380\u670d\u52a1\nOK\n127.0.0.1:6381&gt; INFO replication\n# Replication\nrole:slave      # \u5f53\u524d\u670d\u52a1\u4e3a\u4ece\u8282\u70b9\nmaster_host:127.0.0.1   # \u4e3b\u8282\u70b9IP\u5730\u5740\nmaster_port:6380        # \u4e3b\u8282\u70b9\u7aef\u53e3\u53f7\nmaster_link_status:up\nmaster_last_io_seconds_ago:4\nmaster_sync_in_progress:0\nslave_repl_offset:14\nslave_priority:100\nslave_read_only:1\nreplica_announced:1\nconnected_slaves:0\nmaster_failover_state:no-failover\nmaster_replid:bcfdba95a84dc7e54e5b71ceee8c6def1d551460\nmaster_replid2:0000000000000000000000000000000000000000\nmaster_repl_offset:14\nsecond_repl_offset:-1\nrepl_backlog_active:1\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:1\nrepl_backlog_histlen:14\n\n# \u4f7f\u7528redis\u5ba2\u6237\u7aef\u8fde\u63a56380\u670d\u52a1\uff0c\u7136\u540e\u914d\u7f6e\u5176\u4e3b\u673a\u4e3a6379\u670d\u52a1\n[root@localhost ~]# redis-cli -p 6380\n127.0.0.1:6380&gt; SLAVEOF 127.0.0.1 6379  # \u914d\u7f6e\u5176\u4e3b\u8282\u70b9\u4e3a6379\u670d\u52a1\nOK\n127.0.0.1:6380&gt; INFO replication\n# Replication\nrole:slave      # \u5f53\u524d\u670d\u52a1\u4e3a\u4ece\u8282\u70b9\uff08\u867d\u7136\u5f53\u524d\u670d\u52a1\u4e5f\u6709\u4ece\u670d\u52a1\uff0c\u4f46\u662f\u5f53\u524d\u670d\u52a1\u8fd8\u662f\u4ece\u8282\u70b9\uff0c\u4e0d\u80fd\u8fdb\u884c\u5199\u64cd\u4f5c\uff09\nmaster_host:127.0.0.1   # \u4e3b\u8282\u70b9IP\nmaster_port:6379        # \u4e3b\u8282\u70b9\u7aef\u53e3\u53f7\nmaster_link_status:up\nmaster_last_io_seconds_ago:5\nmaster_sync_in_progress:0\nslave_repl_offset:252\nslave_priority:100\nslave_read_only:1\nreplica_announced:1\nconnected_slaves:1\nslave0:ip=127.0.0.1,port=6381,state=online,offset=252,lag=1\nmaster_failover_state:no-failover\nmaster_replid:ddc8454cc70fc03633225e266167f787c05a29ad\nmaster_replid2:0000000000000000000000000000000000000000\nmaster_repl_offset:252\nsecond_repl_offset:-1\nrepl_backlog_active:1\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:1\nrepl_backlog_histlen:252\n\n# \u4f7f\u7528redis\u5ba2\u6237\u7aef\u8fde\u63a56379\u670d\u52a1\uff0c\u67e5\u770b\u5176\u4e3b\u4ece\u914d\u7f6e\u4fe1\u606f\n127.0.0.1:6379&gt; INFO replication\n# Replication\nrole:master\nconnected_slaves:1\nslave0:ip=127.0.0.1,port=6380,state=online,offset=308,lag=1\nmaster_failover_state:no-failover\nmaster_replid:ddc8454cc70fc03633225e266167f787c05a29ad\nmaster_replid2:0000000000000000000000000000000000000000\nmaster_repl_offset:322\nsecond_repl_offset:-1\nrepl_backlog_active:1\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:1\nrepl_backlog_histlen:322\n<\/code><\/pre>\n<p>\u914d\u7f6e\u6210\u529f\u540e\uff0c\u8fdb\u884c\u6d4b\u8bd5\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\"># \u5c1d\u8bd5\u57286380\u8282\u70b9\u8fdb\u884c\u5199\u64cd\u4f5c\uff0c\u7cfb\u7edf\u4f1a\u62a5\u9519\uff0c\u6240\u4ee56380\u8282\u70b9\u4e0d\u80fd\u5199\n127.0.0.1:6380&gt; set k5 v5\n(error) READONLY You can't write against a read only replica.\n\n# \u57286379\u8282\u70b9\u8fdb\u884c\u5199\u64cd\u4f5c\uff0c\u7136\u540e\u518d6380\u548c6381\u8282\u70b9\u8fdb\u884c\u6570\u636e\u67e5\u8be2\n127.0.0.1:6379&gt; set k6 v6\nOK\n127.0.0.1:6380&gt; get k6\n\"v6\"\n127.0.0.1:6381&gt; get k6\n\"v6\"\n<\/code><\/pre>\n<blockquote><p>\n  \u5982\u679c\u6ca1\u6709\u8001\u5927\u4e86\uff086379\u5b95\u673a\u4e86\uff09\uff0c\u5728\u6ca1\u6709\u54e8\u5175\u6a21\u5f0f\u7684\u60c5\u51b5\u4e0b\uff0c\u53ef\u4ee5\u901a\u8fc7<code>SLAVEOF no one<\/code>\u547d\u4ee4\u624b\u52a8\u4fee\u65396380\u8282\u70b9\u4e3a\u4e3b\u8282\u70b9\u3002<br \/>\n  \u5177\u4f53\u64cd\u4f5c\u5982\u4e0b\uff1a\n<\/p><\/blockquote>\n<pre><code class=\"language-bash line-numbers\"># \u4f7f\u7528SLAVEOF no one\u547d\u4ee4\uff0c\u4fee\u65396380\u8282\u70b9\u7684\u4ece\u5c5e\u5173\u7cfb\n127.0.0.1:6380&gt; SLAVEOF no one\nOK\n127.0.0.1:6380&gt; INFO replication\n# Replication\nrole:master     # \u4fee\u6539\u540e\uff0c\u5f53\u524d\u8282\u70b9\u4e3a\u4e3b\u8282\u70b9\nconnected_slaves:1\nslave0:ip=127.0.0.1,port=6381,state=online,offset=920,lag=1\nmaster_failover_state:no-failover\nmaster_replid:cb1285055e0b09ce969738c28316d18631ec52e9\nmaster_replid2:ddc8454cc70fc03633225e266167f787c05a29ad\nmaster_repl_offset:920\nsecond_repl_offset:921\nrepl_backlog_active:1\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:1\nrepl_backlog_histlen:920\n\n# \u57286380\u8282\u70b9\u8fdb\u884c\u5199\u64cd\u4f5c\uff0c\u7136\u540e\u518d6381\u8282\u70b9\u67e5\u8be2\u6570\u636e\n127.0.0.1:6380&gt; set k7 v7\nOK\n127.0.0.1:6381&gt; get k7\n\"v7\"\n<\/code><\/pre>\n<h2>\u54e8\u5175\u6a21\u5f0f\uff08\u81ea\u52a8\u9009\u4e3e\u4e3b\u8282\u70b9\uff09<\/h2>\n<h3>\u6982\u8ff0<\/h3>\n<p>\u4e3b\u4ece\u5207\u6362\u6280\u672f\u7684\u65b9\u6cd5\u662f\uff1a\u5f53\u4e3b\u670d\u52a1\u5668\u5b95\u673a\u540e\uff0c\u9700\u8981\u624b\u52a8\u628a\u4e00\u53f0\u670d\u52a1\u5668\u5207\u6362\u4e3a\u4e3b\u670d\u52a1\u5668\uff0c\u8fd9\u5c31\u9700\u8981\u4eba\u5de5\u5e72\u9884\uff0c\u8d39\u65f6\u8d39\u529b\uff0c\u8fd8\u4f1a\u9020\u6210\u4e00\u6bb5\u65f6\u95f4\u5185\u670d\u52a1\u4e0d\u53ef\u7528\u3002\u8fd9\u4e0d\u662f\u4e00\u79cd\u63a8\u8350\u7684\u65b9\u5f0f\uff0c\u66f4\u591a\u7684\u65f6\u5019\uff0c\u6211\u4eec\u8981\u4f18\u5148\u8003\u8651\u54e8\u5175\u6a21\u5f0f\u3002Redis\u4ece2.8\u7248\u672c\u5f00\u59cb\u6b63\u5f0f\u63d0\u4f9b\u4e86Sentinel\uff08\u54e8\u5175\uff09\u67b6\u6784\u6765\u89e3\u51b3\u8fd9\u4e2a\u95ee\u9898\u3002<br \/>\n\u8c0b\u671d\u7be1\u4f4d\u7684\u81ea\u52a8\u7248\uff0c\u80fd\u591f\u540e\u53f0\u76d1\u63a7\u4e3b\u673a\u662f\u5426\u6545\u969c\uff0c\u5982\u679c\u6545\u969c\u4e86\u6839\u636e\u6295\u7968\u6570<span class=\"text-highlighted-inline\" style=\"background-color: #fffd38;\">\u81ea\u52a8\u5c06\u4ece\u5e93\u8f6c\u6362\u4e3a\u4e3b\u5e93<\/span>\u3002<br \/>\n\u54e8\u5175\u6a21\u5f0f\u662f\u4e00\u79cd\u7279\u6b8a\u7684\u6a21\u5f0f\uff0c\u9996\u5148Redis\u63d0\u4f9b\u4e86\u54e8\u5175\u7684\u547d\u4ee4\uff0c\u54e8\u5175\u662f\u4e00\u4e2a\u72ec\u7acb\u7684\u8fdb\u7a0b\uff0c\u4f5c\u4e3a\u8fdb\u7a0b\uff0c\u5b83\u4f1a\u72ec\u7acb\u8fd0\u884c\u3002\u5176\u539f\u7406\u662f<strong>\u54e8\u5175\u901a\u8fc7\u53d1\u9001\u547d\u4ee4\uff0c\u7b49\u5f85Redis\u670d\u52a1\u54cd\u5e94\uff0c\u4ece\u800c\u76d1\u63a7\u8fd0\u884c\u7684\u591a\u4e2aRedis\u5b9e\u4f8b\u3002<\/strong><br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/ac18b3670ad240968c7a8a5eb3078a2e.png?x-oss-process=image\/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZmFpdGjnkZ7or5o=,size_17,color_FFFFFF,t_70,g_se,x_16\" alt=\"\u54e8\u5175\u6a21\u5f0f\" \/><br \/>\n\u8fd9\u91cc\u7684\u54e8\u5175\u6709\u4e24\u4e2a\u4f5c\u7528\uff1a<br \/>\n* \u901a\u8fc7\u53d1\u9001\u547d\u4ee4\uff0c\u8ba9Redis\u670d\u52a1\u8fd4\u56de\u76d1\u63a7\u5176\u8fd0\u884c\u72b6\u6001\uff0c\u5305\u62ec\u4e3b\u670d\u52a1\u5668\u548c\u4ece\u670d\u52a1\u5668\uff1b<br \/>\n* \u5f53\u54e8\u5175\u76d1\u63a7\u5230Master\u5b95\u673a\uff0c\u4f1a\u81ea\u52a8\u5c06Slave\u5207\u6362\u6210Master\uff0c\u7136\u540e\u901a\u8fc7<strong>\u53d1\u5e03\u8ba2\u9605\u6a21\u5f0f<\/strong>\u901a\u77e5\u5176\u4ed6\u7684\u4ece\u670d\u52a1\uff0c\u4fee\u6539\u914d\u7f6e\u6587\u4ef6\uff0c\u8ba9\u5b83\u4eec\u5207\u6362\u4e3b\u673a\u3002<\/p>\n<p>\u7136\u800c\u4e00\u4e2a\u54e8\u5175\u8fdb\u7a0b\u5bf9Redis\u670d\u52a1\u8fdb\u884c\u76d1\u63a7\uff0c\u53ef\u80fd\u4f1a\u51fa\u73b0\u95ee\u9898\uff0c\u4e3a\u6b64\uff0c\u6211\u4eec\u53ef\u4ee5\u4f7f\u7528\u591a\u4e2a\u54e8\u5175\u8fdb\u884c\u76d1\u63a7\u3002\u5404\u4e2a\u54e8\u5175\u4e4b\u95f4\u8fd8\u4f1a\u8fdb\u884c\u76d1\u63a7\uff0c\u8fd9\u6837\u5c31\u5f62\u6210\u4e86\u591a\u54e8\u5175\u6a21\u5f0f\u3002<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/e0e52b74abd947efb9bdd45c9488e9a3.png?x-oss-process=image\/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZmFpdGjnkZ7or5o=,size_20,color_FFFFFF,t_70,g_se,x_16\" alt=\"\u591a\u54e8\u5175\u6a21\u5f0f\" \/><br \/>\n\u5047\u8bbe\u4e3b\u670d\u52a1\u5b95\u673a\uff0c\u54e8\u51751\u5148\u76d1\u6d4b\u5230\u8fd9\u4e2a\u60c5\u51b5\uff0c\u7cfb\u7edf\u5e76\u4e0d\u4f1a\u9a6c\u4e0a\u8fdb\u884cfailover\uff08\u6545\u969c\u8f6c\u79fb\uff09\u8fc7\u7a0b\uff0c\u4ec5\u4ec5\u662f\u54e8\u51751\u4e3b\u7ba1\u7684\u8ba4\u4e3a\u4e3b\u670d\u52a1\u4e0d\u53ef\u7528\uff0c\u8fd9\u4e2a\u73b0\u8c61\u79f0\u4e3a<strong>\u4e3b\u89c2\u4e0b\u7ebf<\/strong>\u3002\u5f53\u540e\u9762\u54e8\u5175\u4e5f\u76d1\u6d4b\u5230\u4e3b\u670d\u52a1\u4e0d\u53ef\u7528\uff0c\u5e76\u4e14\u6570\u91cf\u8fbe\u5230\u4e00\u5b9a\u503c\u65f6\uff0c\u90a3\u4e48\u54e8\u5175\u4e4b\u95f4\u4f1a\u8fdb\u884c\u4e00\u6b21\u6295\u7968\uff0c\u6295\u7968\u7684\u7ed3\u679c\u7531\u4e00\u4e2a\u54e8\u5175\u53d1\u8d77\uff0c\u8fdb\u884cfailover\uff08\u6545\u969c\u8f6c\u79fb\uff09\u64cd\u4f5c\u3002\u5207\u6362\u6210\u529f\u540e\uff0c\u5c31\u4f1a\u901a\u8fc7\u53d1\u5e03\u8ba2\u9605\u6a21\u5f0f\uff0c\u8ba9\u5404\u4e2a\u54e8\u5175\u628a\u81ea\u5df1\u76d1\u63a7\u7684\u4ece\u670d\u52a1\u5b9e\u73b0\u5207\u6362\u4e3b\u670d\u52a1\uff0c\u8fd9\u4e2a\u8fc7\u7a0b\u79f0\u4e3a<strong>\u5ba2\u89c2\u4e0b\u7ebf<\/strong>\u3002<\/p>\n<h3>\u4e00\u4e3b\u4e8c\u4ece\u5355\u54e8\u5175\u67b6\u6784<\/h3>\n<p><strong>1\u3001\u914d\u7f6e\u54e8\u5175\u914d\u7f6e\u6587\u4ef6sentinel.conf\uff1a<\/strong><\/p>\n<pre><code class=\"language-bash line-numbers\"># sentinel monitor \u88ab\u76d1\u63a7\u7684\u540d\u79f0\uff08\u81ea\u5b9a\u4e49\u7684\uff09 \u76d1\u63a7\u7684redis\u670d\u52a1host \u76d1\u63a7\u7684redis\u670d\u52a1\u7aef\u53e3 \u914d\u7f6e\u591a\u5c11\u4e2a\u54e8\u5175\u8ba4\u4e3a\u4e3b\u8282\u70b9\u5931\u8054\uff0c\u5219\u5207\u6362\u4e3b\u8282\u70b9\nsentinel monitor mymaster 192.168.76.128 6379 1\n<\/code><\/pre>\n<p>\u540e\u9762\u7684\u6570\u5b571\uff0c\u4ee3\u8868\u4e3b\u673a\u6302\u4e86\u4e4b\u540e\uff0c\u591a\u5c11\u4e2aSentinel\u8ba4\u4e3a\u4e3b\u8282\u70b9\u5931\u8054\uff0c\u624d\u4f1a\u5207\u6362\u4e3b\u8282\u70b9\uff0c<span class=\"text-highlighted-inline\" style=\"background-color: #fffd38;\">\u8fd9\u91cc\u5fc5\u987b\u8981\u914d\u7f6e\u6210\u5c0f\u4e8e\u7b49\u4e8e\u54e8\u5175\u8fdb\u7a0b\u7684\u4e2a\u6570\uff0c\u5426\u5219\u4e3b\u8282\u70b9\u5c06\u6c38\u8fdc\u4e0d\u4f1a\u88ab\u5ba2\u89c2\u4e0b\u7ebf\uff01\uff01\uff01<\/span><br \/>\n<strong>2\u3001\u542f\u52a8Redis\u670d\u52a1\uff1a<\/strong><\/p>\n<pre><code class=\"language-bash line-numbers\">[root@localhost kconfig]# redis-server redis79.conf\n[root@localhost kconfig]# redis-server redis80.conf\n[root@localhost kconfig]# redis-server redis81.conf\n[root@localhost kconfig]# ps -ef | grep redis\nroot      8585     1  0 20:39 ?        00:00:00 redis-server *:6379\nroot      8594     1  0 20:39 ?        00:00:00 redis-server *:6380\nroot      8603     1  0 20:39 ?        00:00:00 redis-server *:6381\nroot      8608  8096  0 20:39 pts\/0    00:00:00 grep --color=auto redis\n<\/code><\/pre>\n<p><strong>3\u3001\u624b\u52a8\u914d\u7f6eRedis\u4e3b\u4ece\u5173\u7cfb\uff08\u82e5\u4e3b\u4ece\u5173\u7cfb\u5df2\u5728\u914d\u7f6e\u6587\u4ef6\u4e2d\u660e\u786e\uff0c\u5219\u5ffd\u7565\u6b64\u6b65\u9aa4\uff09\uff1a<\/strong><br \/>\n\u767b\u5f556380\u670d\u52a1\uff0c\u914d\u7f6e\u5176\u4e3b\u8282\u70b9\u4e3a6379\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\">[root@localhost kconfig]# redis-cli -p 6380\n127.0.0.1:6380&gt; SLAVEOF 192.168.76.128 6379\nOK\n<\/code><\/pre>\n<p>\u8fd9\u91cc\u8981\u7279\u522b\u6ce8\u610f\uff0c\u5982\u679c\u9700\u8981\u5728\u5176\u4ed6\u673a\u5668\u4e0a\u4f7f\u7528\u4ee3\u7801\u7684\u65b9\u5f0f\u8bbf\u95eeredis\u96c6\u7fa4\u7684\u8bdd\uff0c\u8fd9\u91cc\u7684IP\u5730\u5740\u5fc5\u987b\u5199\u672c\u673a\u7684\u771f\u5b9eIP\uff0c\u800c\u4e0d\u80fd\u662f127.0.0.1\uff0c<br \/>\n\u767b\u5f556381\u670d\u52a1\uff0c\u914d\u7f6e\u5176\u4e3b\u8282\u70b9\u4e3a6379\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\">[root@localhost ~]# redis-cli -p 6381\n127.0.0.1:6381&gt; SLAVEOF 192.168.76.128 6379\nOK\n<\/code><\/pre>\n<p><strong>4\u3001\u542f\u52a8\u54e8\u5175\u8fdb\u7a0b\uff1a<\/strong><\/p>\n<pre><code class=\"language-bash line-numbers\">[root@localhost kconfig]# redis-sentinel sentinel.conf\n8813:X 28 Feb 2022 20:44:07.447 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo\n8813:X 28 Feb 2022 20:44:07.447 # Redis version=6.2.4, bits=64, commit=00000000, modified=0, pid=8813, just started\n8813:X 28 Feb 2022 20:44:07.447 # Configuration loaded\n8813:X 28 Feb 2022 20:44:07.447 * Increased maximum number of open files to 10032 (it was originally set to 1024).\n8813:X 28 Feb 2022 20:44:07.447 * monotonic clock: POSIX clock_gettime\n                _._\n           _.-``__ ''-._\n      _.-``    `.  `_.  ''-._           Redis 6.2.4 (00000000\/0) 64 bit\n  .-`` .-```.  ```\\\/    _.,_ ''-._\n (    '      ,       .-`  | `,    )     Running in sentinel mode\n |`-._`-...-` __...-.``-._|'` _.-'|     Port: 26379\n |    `-._   `._    \/     _.-'    |     PID: 8813\n  `-._    `-._  `-.\/  _.-'    _.-'\n |`-._`-._    `-.__.-'    _.-'_.-'|\n |    `-._`-._        _.-'_.-'    |           https:\/\/redis.io\n  `-._    `-._`-.__.-'_.-'    _.-'\n |`-._`-._    `-.__.-'    _.-'_.-'|\n |    `-._`-._        _.-'_.-'    |\n  `-._    `-._`-.__.-'_.-'    _.-'\n      `-._    `-.__.-'    _.-'\n          `-._        _.-'\n              `-.__.-'\n\n8813:X 28 Feb 2022 20:44:07.449 # WARNING: The TCP backlog setting of 511 cannot be enforced because \/proc\/sys\/net\/core\/somaxconn is set to the lower value of 128.\n8813:X 28 Feb 2022 20:44:07.451 # Sentinel ID is 444b312ed7090099c49fbdb7934f1855d3c35dda\n8813:X 28 Feb 2022 20:44:07.451 # +monitor master mymaster 127.0.0.1 6379 quorum 2\n8813:X 28 Feb 2022 20:44:07.452 * +slave slave 127.0.0.1:6380 127.0.0.1 6380 @ mymaster 127.0.0.1 6379\n8813:X 28 Feb 2022 20:44:07.455 * +slave slave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6379\n<\/code><\/pre>\n<p>\u6b64\u65f6\uff0c\u54e8\u5175\u6a21\u5f0f\u542f\u52a8\u6210\u529f\uff0c\u4ece\u54e8\u5175\u7684\u65e5\u5fd7\u4e2d\u4e5f\u53ef\u4ee5\u770b\u5230\uff0c\u5176\u76d1\u63a7\u4e86\u4e3b\u8282\u70b9\uff0c\u540c\u65f6\uff0c\u4e5f\u53d1\u73b0\u4e86\u4e3b\u8282\u70b9\u4e0b\u7684\u4e24\u4e2a\u4ece\u8282\u70b9\u3002<\/p>\n<p><strong>\u6d4b\u8bd5\u4e3b\u8282\u70b9\u610f\u5916\u5b95\u673a\u7684\u60c5\u51b5\uff1a<\/strong><br \/>\n1\u3001\u5728\u4e3b\u8282\u70b9\u5199\u5165\u503c\uff0c\u5e76\u5173\u95ed\u4e3b\u8282\u70b9\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\">127.0.0.1:6379&gt; set k1 v1\nOK\n127.0.0.1:6379&gt; SHUTDOWN\n<\/code><\/pre>\n<p>2\u3001\u6b64\u65f6\uff0c\u4ece\u8282\u70b9\u4e0d\u4f1a\u9a6c\u4e0a\u5347\u7ea7\u6210\u4e3a\u4e3b\u8282\u70b9\uff0c\u8fd8\u9700\u8981\u7b49\u5f85\u54e8\u5175\u53d1\u73b0\u4e3b\u8282\u70b9\u5df2\u4e0b\u7ebf\uff1b<\/p>\n<pre><code class=\"language-bash line-numbers\">127.0.0.1:6380&gt; INFO replication\n# Replication\nrole:slave\nmaster_host:127.0.0.1\nmaster_port:6379            # \u8fd8\u662f\u539f\u6765\u7684\u4e3b\u8282\u70b9\nmaster_link_status:down     # \u4e3b\u8282\u70b9\u5df2\u4e0b\u7ebf\nmaster_last_io_seconds_ago:-1\nmaster_sync_in_progress:0\nslave_repl_offset:3607\nmaster_link_down_since_seconds:24\nslave_priority:100\nslave_read_only:1\nreplica_announced:1\nconnected_slaves:0\nmaster_failover_state:no-failover\nmaster_replid:7d6f61ba0b7c027c839d145d8bd0647989d4edca\nmaster_replid2:0000000000000000000000000000000000000000\nmaster_repl_offset:3607\nsecond_repl_offset:-1\nrepl_backlog_active:1\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:1\nrepl_backlog_histlen:3607\n\n\n127.0.0.1:6381&gt; INFO replication\n# Replication\nrole:slave\nmaster_host:127.0.0.1\nmaster_port:6379            # \u8fd8\u662f\u539f\u6765\u7684\u4e3b\u8282\u70b9\nmaster_link_status:down     # \u4e3b\u622a\u70b9\u5df2\u4e0b\u7ebf\nmaster_last_io_seconds_ago:-1\nmaster_sync_in_progress:0\nslave_repl_offset:9069\nmaster_link_down_since_seconds:173\nslave_priority:100\nslave_read_only:1\nreplica_announced:1\nconnected_slaves:0\nmaster_failover_state:no-failover\nmaster_replid:37dc07b4a17ee461d36a56eb0e9f2837386085da\nmaster_replid2:0000000000000000000000000000000000000000\nmaster_repl_offset:9069\nsecond_repl_offset:-1\nrepl_backlog_active:1\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:1\nrepl_backlog_histlen:9069\n<\/code><\/pre>\n<p>3\u3001\u54e8\u5175\u53d1\u73b0\u4e3b\u8282\u70b9\u5ba2\u89c2\u4e0b\u7ebf\u540e\uff0c\u4f1a\u81ea\u52a8\u4ece\u4e24\u4e2a\u4ece\u8282\u70b9\u4e2d\u9009\u4e3e\u51fa\u4e00\u4e2a\u4e3b\u8282\u70b9\u6765\uff1b<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/3e7abcda53b04a52bc651e3ad24ecae3.png?x-oss-process=image\/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZmFpdGjnkZ7or5o=,size_20,color_FFFFFF,t_70,g_se,x_16\" alt=\"\u54e8\u5175\u6a21\u5f0f\u68c0\u6d4b\u5230\u4e3b\u8282\u70b9\u4e0b\u7ebf\u540e\u7684\u65e5\u5fd7\" \/><br \/>\n4\u3001\u6b64\u65f6\uff0c\u5206\u522b\u67e5\u770b6380\u548c6381\u670d\u52a1\u5668\u7684\u4e3b\u4ece\u670d\u52a1\u4fe1\u606f\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\"># 6380\u670d\u52a1\n127.0.0.1:6380&gt; INFO replication\n# Replication\nrole:slave\nmaster_host:127.0.0.1\nmaster_port:6381        # \u5176\u4e3b\u8282\u70b9\u4fe1\u606f\u5df2\u7ecf\u53d1\u751f\u53d8\u5316\nmaster_link_status:up   # \u4e3b\u8282\u70b9\u5728\u7ebf\nmaster_last_io_seconds_ago:0\nmaster_sync_in_progress:0\nslave_repl_offset:44636\nslave_priority:100\nslave_read_only:1\nreplica_announced:1\nconnected_slaves:0\nmaster_failover_state:no-failover\nmaster_replid:347b3f04dfcb3cb0dbad83cb7c346087f9ca4dc3\nmaster_replid2:7d6f61ba0b7c027c839d145d8bd0647989d4edca\nmaster_repl_offset:44636\nsecond_repl_offset:3608\nrepl_backlog_active:1\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:1\nrepl_backlog_histlen:44636\n\n# 6381\u670d\u52a1\n127.0.0.1:6381&gt; INFO replication\n# Replication\nrole:master     # 6381\u670d\u52a1\u5df2\u53d8\u6210\u4e3b\u8282\u70b9\nconnected_slaves:1\nslave0:ip=127.0.0.1,port=6380,state=online,offset=3763,lag=0\nmaster_failover_state:no-failover\nmaster_replid:347b3f04dfcb3cb0dbad83cb7c346087f9ca4dc3\nmaster_replid2:7d6f61ba0b7c027c839d145d8bd0647989d4edca\nmaster_repl_offset:3763\nsecond_repl_offset:3608\nrepl_backlog_active:1\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:1\nrepl_backlog_histlen:3763\n<\/code><\/pre>\n<p>5\u3001\u82e5\u6b64\u65f6\u539f\u6765\u7684\u4e3b\u8282\u70b9\u91cd\u65b0\u4e0a\u7ebf\u4e86\uff0c\u90a3\u4e48\u4e5f\u53ea\u80fd\u5f52\u5e76\u4e8e\u65b0\u9009\u4e3e\u51fa\u7684\u4e3b\u8282\u70b9\u4e4b\u4e0b\uff0c\u6210\u4e3a\u4e00\u4e2a\u4ece\u8282\u70b9\u3002<\/p>\n<pre><code class=\"language-bash line-numbers\"># \u54e8\u5175\u76d1\u542c\u52306379\u670d\u52a1\u518d\u6b21\u4e0a\u7ebf\u4e86\uff0c\u5e76\u5c06\u5176\u4e3b\u8282\u70b9\u8bbe\u7f6e\u4e3a6381\u670d\u52a1\n10335:X 28 Feb 2022 22:51:11.001 # -sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6381\n10335:X 28 Feb 2022 22:51:20.988 * +convert-to-slave slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6381\n\n# \u4f7f\u7528redis-cli\u8fde\u63a56379\u670d\u52a1\uff0c\u5e76\u67e5\u770b\u5176\u4e3b\u4ece\u4fe1\u606f\n127.0.0.1:6379&gt; INFO replication\n# Replication\nrole:slave\nmaster_host:127.0.0.1\nmaster_port:6381\nmaster_link_status:up\nmaster_last_io_seconds_ago:1\nmaster_sync_in_progress:0\nslave_repl_offset:53339\nslave_priority:100\nslave_read_only:1\nreplica_announced:1\nconnected_slaves:0\nmaster_failover_state:no-failover\nmaster_replid:347b3f04dfcb3cb0dbad83cb7c346087f9ca4dc3\nmaster_replid2:0000000000000000000000000000000000000000\nmaster_repl_offset:53339\nsecond_repl_offset:-1\nrepl_backlog_active:1\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:51014\nrepl_backlog_histlen:2326\n<\/code><\/pre>\n<p><strong>\u4f18\u70b9\uff1a<\/strong><br \/>\n1\u3001\u54e8\u5175\u96c6\u7fa4\uff0c\u57fa\u4e8e\u4e3b\u4ece\u590d\u5236\u6a21\u5f0f\uff0c\u6240\u6709\u7684\u4e3b\u4ece\u914d\u7f6e\u4f18\u70b9\uff0c\u5b83\u5168\u6709\uff1b<br \/>\n2\u3001\u4e3b\u4ece\u53ef\u4ee5\u5207\u6362\uff0c\u6545\u969c\u53ef\u4ee5\u8f6c\u79fb\uff0c\u7cfb\u7edf\u7684\u53ef\u7528\u6027\u5c31\u4f1a\u66f4\u597d\uff1b<br \/>\n3\u3001\u54e8\u5175\u6a21\u5f0f\u5c31\u662f\u4e3b\u4ece\u6a21\u5f0f\u7684\u5347\u7ea7\uff0c\u624b\u52a8\u5230\u81ea\u52a8\uff0c\u66f4\u52a0\u5065\u58ee\uff1b<br \/>\n<strong>\u7f3a\u70b9\uff1a<\/strong><br \/>\n1\u3001Redis\u4e0d\u597d\u5728\u7ebf\u6269\u5bb9\uff0c\u96c6\u7fa4\u5bb9\u91cf\u4e00\u65e6\u8fbe\u5230\u4e0a\u9650\uff0c\u5728\u7ebf\u6269\u5bb9\u5c31\u5341\u5206\u9ebb\u70e6\uff1b<br \/>\n2\u3001\u5b9e\u73b0\u54e8\u5175\u6a21\u5f0f\u7684\u914d\u7f6e\u5176\u5b9e\u662f\u975e\u5e38\u9ebb\u70e6\u7684\uff0c\u91cc\u9762\u6709\u5f88\u591a\u914d\u7f6e\u9879\u3002<\/p>\n<p><strong>\u54e8\u5175\u6a21\u5f0f\u7684\u5168\u90e8\u914d\u7f6e\uff1a<\/strong><\/p>\n<pre><code class=\"language-bash line-numbers\"># \u54e8\u5175Sentinel\u5b9e\u4f8b\u8fd0\u884c\u7684\u7aef\u53e3\u53f7\uff0c\u9ed8\u8ba4\u4e3a26379\uff0c\u5982\u679c\u6709\u54e8\u5175\u96c6\u7fa4\uff0c\u6211\u4eec\u8fd8\u9700\u8981\u914d\u7f6e\u591a\u4e2a\u54e8\u5175\u914d\u7f6e\u6587\u4ef6\uff0c\u7c7b\u4f3c\u4e8e\u542f\u52a8Redis\u96c6\u7fa4\nport 26379\n\n# \u54e8\u5175Sentinel\u7684\u5de5\u4f5c\u76ee\u5f55\uff0c\u7528\u4e8e\u5b58\u653e\u4e00\u4e9b\u6587\u4ef6\ndir \/tmp\n\n# \u54e8\u5175Sentinel\u76d1\u63a7\u7684Redis\u4e3b\u8282\u70b9\u7684IP\u548c\u7aef\u53e3\u53f7\n# Master-name\u53ef\u4ee5\u81ea\u5b9a\u4e49\u547d\u540d\u4e3b\u8282\u70b9\u540d\u79f0\uff0c\u53ea\u80fd\u7531\u5927\u5c0f\u5199\u5b57\u6bcd\u3001\u6570\u5b57\u548c\".-_\"\u7ec4\u6210\n# quorum\u914d\u7f6e\u591a\u5c11\u4e2aSentinel\u54e8\u5175\u7edf\u4e00\u8ba4\u4e3aMaster\u4e3b\u8282\u70b9\u5931\u8054\uff0c\u90a3\u4e48\u8fd9\u662f\u5ba2\u89c2\u4e0a\u8ba4\u4e3a\u4e3b\u8282\u70b9\u5931\u8054\uff0c\u5176\u6570\u91cf\u53ea\u80fd\u5c0f\u4e8e\u7b49\u4e8e\u54e8\u5175\u8fdb\u7a0b\u7684\u4e2a\u6570\uff0c\u5426\u5219\u4e3b\u8282\u70b9\u5373\u4f7f\u5b95\u673a\u4e5f\u6c38\u8fdc\u4e0d\u53ef\u80fd\u5ba2\u89c2\u4e0b\u7ebf\uff0c\u4e00\u822c\u662f\u8fc7\u534a\u539f\u5219\uff08\u8d85\u8fc7\u4e00\u534a\u7684\u54e8\u5175\u8ba4\u4e3a\u4e3b\u8282\u70b9\u4e0b\u7ebf\u5219\u5ba2\u89c2\u4e0b\u7ebf\uff09\uff0c\u5373\uff08N\u4e2a\u54e8\u5175 \/ 2 + 1\uff09\n# sentinel monitor &lt;master-name&gt; &lt;ip&gt; &lt;redis-port&gt; &lt;quorum&gt;\nsentinel monitor mymaster 127.0.0.1 6379 2\n\n# \u5f53\u5728Redis\u5b9e\u4f8b\u4e2d\u5f00\u542f\u4e86requirepass\u5bc6\u7801\u914d\u7f6e\u65f6\uff0c\u9700\u8981\u8fdb\u884c\u8be5\u914d\u7f6e\uff0c\u4ee5\u4fbf\u54e8\u5175\u8fde\u63a5Redis\u5b9e\u4f8b\n# \u8bbe\u7f6e\u54e8\u5175Sentinel\u8fde\u63a5\u4e3b\u4ece\u7684\u5bc6\u7801\uff0c\u6ce8\u610f\uff0c\u4e3b\u4ece\u5fc5\u987b\u8bbe\u7f6e\u4e00\u6837\u7684\u5bc6\u7801\n# sentinel auth-pass &lt;master-name&gt; &lt;password&gt;\nsentinel auth-pass mymaster MySUPER--secret-0123passw0rd\n\n# \u6307\u5b9a\u591a\u5c11\u6beb\u79d2\u4e4b\u540e\uff0c\u4e3b\u8282\u70b9\u6ca1\u6709\u54cd\u5e94\u54e8\u5175Sentinel\uff0c\u54e8\u5175\u5219\u8ba4\u4e3a\u4e3b\u8282\u70b9\u4e3b\u89c2\u4e0b\u7ebf\uff0c\u9ed8\u8ba4\u662f30000\u6beb\u79d2\uff08\u537330\u79d2\uff09\n# sentinel down-after-milliseconds &lt;master-name&gt; &lt;milliseconds&gt;\nsentinel down-after-milliseconds mymaster 30000\n\n# \u8fd9\u4e2a\u914d\u7f6e\u6307\u5b9a\u4e86\u53d1\u751ffailover\u4e3b\u5907\u5207\u6362\u65f6\uff0c\u6700\u591a\u53ef\u4ee5\u6709\u591a\u5c11\u4e2aSlave\u540c\u65f6\u5bf9\u65b0\u7684Master\u8fdb\u884c\u540c\u6b65\uff0c\n# \u8fd9\u4e2a\u6570\u5b57\u8d8a\u5c0f\uff0c\u5b8c\u6210failover\u6240\u9700\u8981\u7684\u65f6\u95f4\u5c31\u8d8a\u957f\uff0c\n# \u4f46\u662f\u8fd9\u4e2a\u6570\u5b57\u8d8a\u5927\uff0c\u5c31\u610f\u5473\u7740\uff0c\u591a\u4e2aSlave\u56e0\u4e3b\u4ece\u5207\u6362\u800c\u4e0d\u53ef\u7528\u3002\n# \u53ef\u4ee5\u901a\u8fc7\u5c06\u8fd9\u4e2a\u6570\u503c\u8bbe\u4e3a 1 \u6765\u4fdd\u8bc1\u6bcf\u6b21\u53ea\u6709\u4e00\u4e2aSlave\u5904\u4e8e\u4e0d\u80fd\u5904\u7406\u547d\u4ee4\u8bf7\u6c42\u7684\u72b6\u6001\u3002\n# sentinel parallel-syncs &lt;master-name&gt; &lt;numreplicas&gt;\nsentinel parallel-syncs mymaster 1\n\n# \u6545\u969c\u8f6c\u79fb\u7684\u8d85\u65f6\u65f6\u95f4\uff0cfailover-timeout\u53ef\u4ee5\u7528\u5728\u4ee5\u4e0b\u8fd9\u4e9b\u65b9\u9762\n# 1\u3001\u540c\u4e00\u4e2aSentinel\u5bf9\u540c\u4e00\u4e2aMaster\u4e24\u6b21failover\u4e4b\u95f4\u7684\u95f4\u9694\u65f6\u95f4\uff1b\n# 2\u3001\u5f53\u4e00\u4e2aSlave\u4ece\u4e00\u4e2a\u9519\u8bef\u7684Master\u90a3\u91cc\u540c\u6b65\u6570\u636e\u5f00\u59cb\u8ba1\u7b97\u65f6\u95f4\uff0c\u77e5\u9053Slave\u88ab\u7ea0\u6b63\u4e3a\u5411\u6b63\u786e\u7684Master\u90a3\u91cc\u540c\u6b65\u6570\u636e\u65f6\uff1b\n# 3\u3001\u5f53\u60f3\u53d6\u6d88\u4e00\u4e2a\u6b63\u5728\u8fdb\u884c\u7684failover\u6240\u9700\u8981\u7684\u65f6\u95f4\uff1b\n# 4\u3001\u5f53\u8fdb\u884cfailover\u65f6\uff0c\u914d\u7f6e\u6240\u6709Slave\u6307\u5411\u65b0\u7684Master\u6240\u9700\u7684\u6700\u5927\u65f6\u95f4\uff0c\u4e0d\u8fc7\uff0c\u5373\u4f7f\u8fc7\u4e86\u8fd9\u4e2a\u8d85\u65f6\u65f6\u95f4\uff0cSlave\u4f9d\u7136\u4f1a\u88ab\u6b63\u786e\u914d\u7f6e\u4e3a\u6307\u5411Master\uff0c\u4f46\u662f\u5c31\u4e0d\u88abparallel-sync\u6240\u914d\u7f6e\u7684\u89c4\u5219\u6765\u4e86\n# \u9ed8\u8ba4\u4e09\u5206\u949f\n# sentinel failover-timeout &lt;master-name&gt; &lt;milliseconds&gt;\nsentinel failover-timeout mymaster 180000\n\n# SCRIPTS EXECUTION\n\n# \u914d\u7f6e\u5f53\u67d0\u4e00\u4e8b\u4ef6\u53d1\u751f\u65f6\u6240\u9700\u6267\u884c\u7684\u811a\u672c\uff0c\u53ef\u4ee5\u901a\u8fc7\u811a\u672c\u6765\u901a\u77e5\u7ba1\u7406\u5458\uff0c\u4f8b\u5982\u5f53\u7cfb\u7edf\u8fd0\u884c\u4e0d\u6b63\u5e38\u65f6\u53d1\u9001\u90ae\u4ef6\u901a\u77e5\u76f8\u5173\u4eba\u5458\u3002\n# \u5bf9\u4e8e\u811a\u672c\u7684\u8fd0\u884c\u7ed3\u679c\uff0c\u6709\u4ee5\u4e0b\u89c4\u5219\uff1a\n# 1\u3001\u82e5\u811a\u672c\u6267\u884c\u540e\u8fd4\u56de1\uff0c\u90a3\u4e48\u6539\u811a\u672c\u7a0d\u540e\u4f1a\u518d\u6b21\u88ab\u6267\u884c\uff0c\u91cd\u590d\u6b21\u6570\u76ee\u524d\u9ed8\u8ba4\u4e3a10\u6b21\uff1b\n# 2\u3001\u82e5\u811a\u672c\u6267\u884c\u540e\u8fd4\u56de2\uff0c\u6216\u8005\u6bd42\u5927\u7684\u6570\uff0c\u811a\u672c\u5c06\u4e0d\u4f1a\u91cd\u590d\u6267\u884c\uff1b\n# 3\u3001\u82e5\u811a\u672c\u5728\u6267\u884c\u8fc7\u7a0b\u4e2d\u7531\u4e8e\u6536\u5230\u7cfb\u7edf\u7684\u4e2d\u65ad\u4fe1\u53f7\u88ab\u7ec8\u6b62\u4e86\uff0c\u5219\u540c\u8fd4\u56de\u503c\u4e3a1\u7684\u884c\u4e3a\u76f8\u540c\u3002\n# \u4e00\u4e2a\u811a\u672c\u7684\u6700\u5927\u6267\u884c\u65f6\u95f4\u4e3a60\u79d2\uff0c\u5982\u679c\u8d85\u8fc7\u8fd9\u4e2a\u65f6\u95f4\uff0c\u811a\u672c\u5c06\u4f1a\u88ab\u4e00\u4e2aSIGKILL\u4fe1\u53f7\u7ec8\u6b62\uff0c\u4e4b\u540e\u91cd\u65b0\u6267\u884c\u3002\n\n# NOTIFICATION SCRIPT\u901a\u77e5\u578b\u811a\u672c\n# \u5f53Sentinel\u6709\u4efb\u4f55\u8b66\u544a\u7ea7\u522b\u7684\u4e8b\u4ef6\u53d1\u751f\u65f6\uff08\u5982Redis\u5b9e\u4f8b\u7684\u4e3b\u89c2\u4e0b\u7ebf\u548c\u5ba2\u89c2\u4e0b\u7ebf\u7b49\u4e8b\u4ef6\uff09\uff0c\u5c06\u4f1a\u8c03\u7528\u8fd9\u4e2a\u811a\u672c\uff0c\u8fd9\u662f\u8fd9\u4e2a\u811a\u672c\u5e94\u8be5\u901a\u8fc7\u90ae\u4ef6\uff0cSMS\u7b49\u65b9\u5f0f\u53bb\u901a\u77e5\u7cfb\u7edf\u7ba1\u7406\u5458\u5173\u4e8e\u7cfb\u7edf\u4e0d\u6b63\u5e38\u8fd0\u884c\u7684\u4fe1\u606f\u3002\u8c03\u7528\u8be5\u811a\u672c\u65f6\uff0c\u5c06\u4f20\u7ed9\u811a\u672c\u4e24\u4e2a\u53c2\u6570\uff0c\u4e00\u4e2a\u662f\u4e8b\u4ef6\u7684\u7c7b\u578b\uff0c\u4e00\u4e2a\u662f\u4e8b\u4ef6\u7684\u63cf\u8ff0\u3002\u5982\u679csentinel.conf\u914d\u7f6e\u6587\u4ef6\u4e2d\u914d\u7f6e\u4e86\u8fd9\u4e2a\u811a\u672c\u8def\u5f84\uff0c\u90a3\u4e48\u5fc5\u987b\u4fdd\u8bc1\u8fd9\u4e2a\u811a\u672c\u5b58\u5728\uff0c\u5e76\u4e14\u662f\u53ef\u6267\u884c\u7684\uff0c\u5426\u5219Sentinel\u65e0\u6cd5\u6b63\u5e38\u542f\u52a8\u6210\u529f\u3002\n# sentinel notification-script &lt;master-name&gt; &lt;script-path&gt;\nsentinel notification-script mymaster \/var\/redis\/notify.sh\n\n# CLIENTS RECONFIGURATION SCRIPT\u5ba2\u6237\u7aef\u91cd\u65b0\u914d\u7f6e\u4e3b\u8282\u70b9\u53c2\u6570\u811a\u672c\n# \u5f53\u4e00\u4e2aMaster\u7531\u4e8efailover\u800c\u53d1\u751f\u6539\u53d8\u65f6\uff0c\u8fd9\u4e2a\u811a\u672c\u4f1a\u88ab\u8c03\u7528\uff0c\u901a\u77e5\u76f8\u5173\u7684\u5ba2\u6237\u7aef\u5173\u4e8eMaster\u5730\u5740\u5df2\u7ecf\u53d1\u751f\u53d8\u66f4\u7684\u4fe1\u606f\u3002  \n# \u4ee5\u4e0b\u53c2\u6570\u5c06\u4f1a\u5728\u8c03\u7528\u811a\u672c\u65f6\u4f20\u7ed9\u811a\u672c\uff1a\n# &lt;master-name&gt; &lt;role&gt; &lt;state&gt; &lt;from-ip&gt; &lt;from-port&gt; &lt;to-ip&gt; &lt;to-port&gt;\n# \u53c2\u6570from-ip\u3001from-port\u3001to-ip\u3001to-port\u662f\u7528\u6765\u548c\u65e7\u7684Master\u548c\u65b0\u7684Master\uff08\u5373\u65e7\u7684Slave\uff09\u901a\u4fe1\u7684\uff0c\u53ef\u4ee5\u7528\u6765\u901a\u77e5\u8fd0\u7ef4\u4eba\u5458\u65b0\u65e7\u4e3b\u8282\u70b9\u7684IP\u548c\u7aef\u53e3\u53f7\u3002\n# \u8fd9\u4e2a\u811a\u672c\u5e94\u8be5\u662f\u901a\u7528\u7684\uff0c\u80fd\u88ab\u591a\u6b21\u8c03\u7528\uff0c\u4e0d\u662f\u9488\u5bf9\u6027\u7684\u3002\n# sentinel client-reconfig-script &lt;master-name&gt; &lt;script-path&gt;\nsentinel client-reconfig-script mymaster \/var\/redis\/reconfig.sh\n<\/code><\/pre>\n<h3>\u4e00\u4e3b\u4e8c\u4ece\u4e09\u54e8\u5175\u67b6\u6784<\/h3>\n<p><strong>1\u3001\u4fee\u6539\u4e09\u4e2aRedis\u8282\u70b9\u7684\u914d\u7f6e\u6587\u4ef6\uff1a<\/strong><br \/>\n\u5148\u786e\u4fdd\u6240\u6709\u7684Redis\u670d\u52a1\u5df2\u7ecfshutdown\u3002<br \/>\n\u56e0\u4e3a\u524d\u9762\u542f\u52a8\u8fc7Sentinel\uff0c\u6240\u4ee5Sentinel\u4f1a\u81ea\u52a8\u5728\u6bcf\u4e2aRedis\u7684\u914d\u7f6e\u6587\u4ef6\u6700\u540e\u8865\u5145\u51e0\u884c\u914d\u7f6e\uff0c\u4e3a\u4e86\u4e0d\u5f71\u54cd\u63a5\u4e0b\u6765\u7684\u90e8\u7f72\uff0c\u6240\u4ee5<span class=\"text-highlighted-inline\" style=\"background-color: #fffd38;\">\u9700\u8981\u5220\u9664\u6389\u4e09\u4e2aRedis\u914d\u7f6e\u6587\u4ef6\u7684\u6700\u540e\u51e0\u884c<\/span>\uff0c\u5185\u5bb9\u5982\u4e0b\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\"># redis79.conf\u6587\u4ef6\u9700\u8981\u5220\u6389\u5982\u4e0b\u5185\u5bb9\uff1a\n# Generated by CONFIG REWRITE\nsave 3600 1\nsave 300 100\nsave 60 10000\nuser default on nopass ~* &amp;* +@all\nreplicaof 127.0.0.1 6381\n\"redis79.conf\" 2059L, 93949C\n\n# redis80.conf\u6587\u4ef6\u9700\u8981\u5220\u6389\u5982\u4e0b\u5185\u5bb9\uff1a\n# Generated by CONFIG REWRITE\nsave 3600 1\nsave 300 100\nsave 60 10000\nuser default on nopass ~* &amp;* +@all\nreplicaof 127.0.0.1 6381\n\n# redis81.conf\u6587\u4ef6\u9700\u8981\u5220\u6389\u5982\u4e0b\u5185\u5bb9\uff1a\n# Generated by CONFIG REWRITE\nsave 3600 1\nsave 300 100\nsave 60 10000\nuser default on nopass ~* &amp;* +@all\n<\/code><\/pre>\n<p>\u5220\u6389\u7531Sentinel\u81ea\u52a8\u8865\u5145\u7684\u914d\u7f6e\u4fe1\u606f\u540e\uff0c\u9700\u8981\u5bf9\u4e09\u4e2aRedis\u670d\u52a1\u7684\u914d\u7f6e\u6587\u4ef6\u4f5c\u51fa\u5982\u4e0b\u4fee\u6539\uff1a<br \/>\n\u4fee\u65396379\u8282\u70b9\u914d\u7f6e\u6587\u4ef6\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\"># \u589e\u52a0\u5bc6\u7801\uff0c\u589e\u52a0\u5b89\u5168\u6027\nrequirepass 123456\n<\/code><\/pre>\n<p>\u4fee\u65396380\u8282\u70b9\u914d\u7f6e\u6587\u4ef6\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\"># \u589e\u52a0\u5bc6\u7801\uff0c\u4e0e\u4e3b\u8282\u70b9\u4fdd\u6301\u76f8\u540c\u5bc6\u7801\nrequirepass 123456\n\n################################# REPLICATION #################################\n# \u4e3b\u4ece\u590d\u5236\u914d\u7f6e\u90e8\u5206\n# \u914d\u7f6e\u4e3b\u8282\u70b9IP\u548c\u7aef\u53e3\u53f7\nreplicaof 127.0.0.1 6379\n# \u914d\u7f6e\u4e3b\u8282\u70b9\u5bc6\u7801\nmasterauth 123456\n<\/code><\/pre>\n<p>\u4fee\u65396381\u8282\u70b9\u7684\u914d\u7f6e\u6587\u4ef6\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\"># \u589e\u52a0\u5bc6\u7801\uff0c\u4e0e\u4e3b\u8282\u70b9\u4fdd\u6301\u4e00\u81f4\nrequirepass 123456\n\n################################# REPLICATION #################################\n# \u4e3b\u4ece\u590d\u5236\u914d\u7f6e\u90e8\u5206\n# \u914d\u7f6e\u4e3b\u8282\u70b9IP\u548c\u7aef\u53e3\u53f7\nreplicaof 127.0.0.1 6379\n# \u914d\u7f6e\u4e3b\u8282\u70b9\u5bc6\u7801\nmasterauth 123456\n<\/code><\/pre>\n<p><strong>2\u3001\u542f\u52a8\u4e09\u4e2aRedis\u670d\u52a1\uff1a<\/strong><\/p>\n<pre><code class=\"language-bash line-numbers\">[root@localhost kconfig]# redis-server redis79.conf\n[root@localhost kconfig]# redis-server redis80.conf\n[root@localhost kconfig]# redis-server redis81.conf\n[root@localhost kconfig]# ps -ef | grep redis\nroot     11700     1  0 21:22 ?        00:00:00 redis-server *:6379\nroot     11707     1  0 21:22 ?        00:00:00 redis-server *:6380\nroot     11714     1  0 21:22 ?        00:00:00 redis-server *:6381\nroot     11719 11214  0 21:23 pts\/0    00:00:00 grep --color=auto redis\n<\/code><\/pre>\n<p><strong>3\u3001\u4f7f\u7528redis-cli\u8fde\u63a5\u4e09\u4e2a\u5ba2\u6237\u7aef\u5e76\u8fdb\u884c\u6d4b\u8bd5\uff08\u5177\u4f53\u6b65\u9aa4\u89c1\u524d\u6587\uff09\uff1a<\/strong><br \/>\n<strong>4\u3001\u62f7\u8d1d\u4e09\u4efdSentinel\u793a\u4f8b\u914d\u7f6e\u6587\u4ef6\uff1a<\/strong><\/p>\n<pre><code class=\"language-bash line-numbers\">[root@localhost kconfig]# cp ..\/sentinel.conf sentinel79.conf\n[root@localhost kconfig]# cp ..\/sentinel.conf sentinel80.conf\n[root@localhost kconfig]# cp ..\/sentinel.conf sentinel81.conf\n<\/code><\/pre>\n<p><strong>5\u3001\u5206\u522b\u4fee\u6539\u4e09\u4efdSentinel\u914d\u7f6e\u6587\u4ef6\uff1a<\/strong><br \/>\n\u4fee\u6539sentinel79.conf\u6587\u4ef6\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\">[root@localhost kconfig]# vim sentinel79.conf\n\n# \u914d\u7f6e\u6587\u4ef6\u4fee\u6539\u5185\u5bb9\n# \u54e8\u5175\u7aef\u53e3\u53f7\nport 26379\n# \u4ee5\u5b88\u62a4\u8fdb\u7a0b\uff08\u540e\u53f0\u8fd0\u884c\uff09\u65b9\u5f0f\u8fd0\u884c\uff0c\u9ed8\u8ba4\u662fno\ndaemonize yes\n# \u4fee\u6539pidfile\u8def\u5f84\uff0c\u907f\u514d\u91cd\u540d\uff08\u56e0\u4e3a\u6211\u662f\u5728\u540c\u4e00\u53f0\u673a\u5668\u4e0a\u642d\u5efa\uff0c\u6240\u4ee5\u624d\u9700\u8981\u8be5\u64cd\u4f5c\uff09\npidfile \/var\/run\/redis-sentinel79.pid\n# \u4fee\u6539Sentinel\u65e5\u5fd7\u6587\u4ef6\u540d\u79f0\nlogfile \"sentinel79.log\"\n# \u4e3b\u8282\u70b9\u540d\u79f0\u3001IP\u3001\u7aef\u53e3\u53f7\u3001\u5ba2\u89c2\u4e0b\u7ebf\u7968\u6570\uff08\u4e00\u822c\u662f\u8fc7\u534a\u539f\u5219\uff09\nsentinel monitor mymaster 127.0.0.1 6379 2\n# \u4e3b\u8282\u70b9\u5bc6\u7801\nsentinel auth-pass mymaster 123456\n# \u6307\u5b9a\u591a\u5c11\u6beb\u79d2\u4e4b\u540e\uff0c\u4e3b\u8282\u70b9\u6ca1\u6709\u54cd\u5e94\u54e8\u5175Sentinel\uff0c\u54e8\u5175\u5219\u8ba4\u4e3a\u4e3b\u8282\u70b9\u4e3b\u89c2\u4e0b\u7ebf\uff0c\u9ed8\u8ba4\u662f30000\u6beb\u79d2\uff08\u537330\u79d2\uff09\nsentinel down-after-milliseconds mymaster 30000\n# \u53d1\u751ffailover\u4e3b\u5907\u5207\u6362\u65f6\uff0c\u6700\u591a\u53ef\u4ee5\u6709\u591a\u5c11\u4e2aSlave\u540c\u65f6\u5bf9\u65b0\u7684Master\u8fdb\u884c\u540c\u6b65\uff0c\u9ed8\u8ba41\u4e2a\nsentinel parallel-syncs mymaster 1\n# \u6545\u969c\u8f6c\u79fb\u7684\u8d85\u65f6\u65f6\u95f4\uff0c\u9ed8\u8ba4\u4e09\u5206\u949f\nsentinel failover-timeout mymaster 180000\n<\/code><\/pre>\n<p>\u4fee\u6539sentinel80.conf\u6587\u4ef6\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\">[root@localhost kconfig]# vim sentinel80.conf\n\n# \u914d\u7f6e\u6587\u4ef6\u4fee\u6539\u5185\u5bb9\n# \u54e8\u5175\u7aef\u53e3\u53f7\nport 26380\n# \u4ee5\u5b88\u62a4\u8fdb\u7a0b\uff08\u540e\u53f0\u8fd0\u884c\uff09\u65b9\u5f0f\u8fd0\u884c\uff0c\u9ed8\u8ba4\u662fno\ndaemonize yes\n# \u4fee\u6539pidfile\u8def\u5f84\uff0c\u907f\u514d\u91cd\u540d\uff08\u56e0\u4e3a\u6211\u662f\u5728\u540c\u4e00\u53f0\u673a\u5668\u4e0a\u642d\u5efa\uff0c\u6240\u4ee5\u624d\u9700\u8981\u8be5\u64cd\u4f5c\uff09\npidfile \/var\/run\/redis-sentinel80.pid\n# \u4fee\u6539Sentinel\u65e5\u5fd7\u6587\u4ef6\u540d\u79f0\nlogfile \"sentinel80.log\"\n# \u4e3b\u8282\u70b9\u540d\u79f0\u3001IP\u3001\u7aef\u53e3\u53f7\u3001\u5ba2\u89c2\u4e0b\u7ebf\u7968\u6570\uff08\u4e00\u822c\u662f\u8fc7\u534a\u539f\u5219\uff09\nsentinel monitor mymaster 127.0.0.1 6379 2\n# \u4e3b\u8282\u70b9\u5bc6\u7801\nsentinel auth-pass mymaster 123456\n# \u6307\u5b9a\u591a\u5c11\u6beb\u79d2\u4e4b\u540e\uff0c\u4e3b\u8282\u70b9\u6ca1\u6709\u54cd\u5e94\u54e8\u5175Sentinel\uff0c\u54e8\u5175\u5219\u8ba4\u4e3a\u4e3b\u8282\u70b9\u4e3b\u89c2\u4e0b\u7ebf\uff0c\u9ed8\u8ba4\u662f30000\u6beb\u79d2\uff08\u537330\u79d2\uff09\nsentinel down-after-milliseconds mymaster 30000\n# \u53d1\u751ffailover\u4e3b\u5907\u5207\u6362\u65f6\uff0c\u6700\u591a\u53ef\u4ee5\u6709\u591a\u5c11\u4e2aSlave\u540c\u65f6\u5bf9\u65b0\u7684Master\u8fdb\u884c\u540c\u6b65\uff0c\u9ed8\u8ba41\u4e2a\nsentinel parallel-syncs mymaster 1\n# \u6545\u969c\u8f6c\u79fb\u7684\u8d85\u65f6\u65f6\u95f4\uff0c\u9ed8\u8ba4\u4e09\u5206\u949f\nsentinel failover-timeout mymaster 180000\n<\/code><\/pre>\n<p>\u4fee\u6539sentinel81.conf\u6587\u4ef6\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\">[root@localhost kconfig]# vim sentinel81.conf\n\n# \u914d\u7f6e\u6587\u4ef6\u4fee\u6539\u5185\u5bb9\n# \u54e8\u5175\u7aef\u53e3\u53f7\nport 26381\n# \u4ee5\u5b88\u62a4\u8fdb\u7a0b\uff08\u540e\u53f0\u8fd0\u884c\uff09\u65b9\u5f0f\u8fd0\u884c\uff0c\u9ed8\u8ba4\u662fno\ndaemonize yes\n# \u4fee\u6539pidfile\u8def\u5f84\uff0c\u907f\u514d\u91cd\u540d\uff08\u56e0\u4e3a\u6211\u662f\u5728\u540c\u4e00\u53f0\u673a\u5668\u4e0a\u642d\u5efa\uff0c\u6240\u4ee5\u624d\u9700\u8981\u8be5\u64cd\u4f5c\uff09\npidfile \/var\/run\/redis-sentinel81.pid\n# \u4fee\u6539Sentinel\u65e5\u5fd7\u6587\u4ef6\u540d\u79f0\nlogfile \"sentinel81.log\"\n# \u4e3b\u8282\u70b9\u540d\u79f0\u3001IP\u3001\u7aef\u53e3\u53f7\u3001\u5ba2\u89c2\u4e0b\u7ebf\u7968\u6570\uff08\u4e00\u822c\u662f\u8fc7\u534a\u539f\u5219\uff09\nsentinel monitor mymaster 127.0.0.1 6379 2\n# \u4e3b\u8282\u70b9\u5bc6\u7801\nsentinel auth-pass mymaster 123456\n# \u6307\u5b9a\u591a\u5c11\u6beb\u79d2\u4e4b\u540e\uff0c\u4e3b\u8282\u70b9\u6ca1\u6709\u54cd\u5e94\u54e8\u5175Sentinel\uff0c\u54e8\u5175\u5219\u8ba4\u4e3a\u4e3b\u8282\u70b9\u4e3b\u89c2\u4e0b\u7ebf\uff0c\u9ed8\u8ba4\u662f30000\u6beb\u79d2\uff08\u537330\u79d2\uff09\nsentinel down-after-milliseconds mymaster 30000\n# \u53d1\u751ffailover\u4e3b\u5907\u5207\u6362\u65f6\uff0c\u6700\u591a\u53ef\u4ee5\u6709\u591a\u5c11\u4e2aSlave\u540c\u65f6\u5bf9\u65b0\u7684Master\u8fdb\u884c\u540c\u6b65\uff0c\u9ed8\u8ba41\u4e2a\nsentinel parallel-syncs mymaster 1\n# \u6545\u969c\u8f6c\u79fb\u7684\u8d85\u65f6\u65f6\u95f4\uff0c\u9ed8\u8ba4\u4e09\u5206\u949f\nsentinel failover-timeout mymaster 180000\n<\/code><\/pre>\n<p><strong>6\u3001\u5206\u522b\u542f\u52a8\u4e09\u4e2a\u54e8\u5175\uff1a<\/strong><\/p>\n<pre><code class=\"language-bash line-numbers\">[root@localhost kconfig]# redis-sentinel sentinel79.conf\n[root@localhost kconfig]# redis-sentinel sentinel80.conf\n[root@localhost kconfig]# redis-sentinel sentinel81.conf\n[root@localhost kconfig]# ps -ef | grep sentinel\nroot     12876     1  0 22:30 ?        00:00:00 redis-sentinel *:26379 [sentinel]\nroot     12897     1  0 22:30 ?        00:00:00 redis-sentinel *:26380 [sentinel]\nroot     12904     1  0 22:30 ?        00:00:00 redis-sentinel *:26381 [sentinel]\nroot     12909 12167  0 22:30 pts\/0    00:00:00 grep --color=auto sentinel\n<\/code><\/pre>\n<p><strong>7\u3001\u6a21\u62df6379\uff08\u5f53\u524d\u7684\u4e3b\u670d\u52a1\uff09\u670d\u52a1\u6302\u6389\uff1a<\/strong><\/p>\n<pre><code class=\"language-bash line-numbers\">[root@localhost kconfig]# ps -ef | grep redis\nroot     12350     1  0 21:51 ?        00:00:02 redis-server *:6379\nroot     12357     1  0 21:51 ?        00:00:02 redis-server *:6380\nroot     12365     1  0 21:51 ?        00:00:02 redis-server *:6381\nroot     12876     1  0 22:30 ?        00:00:00 redis-sentinel *:26379 [sentinel]\nroot     12897     1  0 22:30 ?        00:00:00 redis-sentinel *:26380 [sentinel]\nroot     12904     1  0 22:30 ?        00:00:00 redis-sentinel *:26381 [sentinel]\nroot     12921 12167  0 22:31 pts\/0    00:00:00 grep --color=auto redis\n[root@localhost kconfig]# kill -9 12350\n[root@localhost kconfig]# ps -ef | grep redis\nroot     12357     1  0 21:51 ?        00:00:02 redis-server *:6380\nroot     12365     1  0 21:51 ?        00:00:02 redis-server *:6381\nroot     12876     1  0 22:30 ?        00:00:00 redis-sentinel *:26379 [sentinel]\nroot     12897     1  0 22:30 ?        00:00:00 redis-sentinel *:26380 [sentinel]\nroot     12904     1  0 22:30 ?        00:00:00 redis-sentinel *:26381 [sentinel]\nroot     12942 12167  0 22:33 pts\/0    00:00:00 grep --color=auto redis\n<\/code><\/pre>\n<p><strong>8\u3001\u4f7f\u7528redis-cli\u8fde\u63a56380\u670d\u52a1\uff0c\u67e5\u770b\u6545\u969c\u8f6c\u79fb\uff08\u4e3b\u8282\u70b9\u5207\u6362\uff09\u7684\u60c5\u51b5\uff1a<\/strong><\/p>\n<pre><code class=\"language-bash line-numbers\">[root@localhost kconfig]# redis-cli -p 6380\n127.0.0.1:6380&gt; AUTH 123456\nOK\n127.0.0.1:6380&gt; INFO replication\n# Replication\nrole:master\nconnected_slaves:1\nslave0:ip=127.0.0.1,port=6381,state=online,offset=42208,lag=1\nmaster_failover_state:no-failover\nmaster_replid:e55f1ce7d3feba71be8b8d46d03f18c252000733\nmaster_replid2:1ad62275c6c978b78501e8aca1f99397648fa62c\nmaster_repl_offset:42474\nsecond_repl_offset:24105\nrepl_backlog_active:1\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:1\nrepl_backlog_histlen:42474\n<\/code><\/pre>\n<p>\u53ef\u4ee5\u770b\u5230\uff0c\u6b64\u65f66380\u8282\u70b9\u5df2\u7ecf\u6210\u4e3a\u4e86\u4e3b\u8282\u70b9\uff0c\u6b64\u65f6\uff0c\u57286380\u8282\u70b9\u8bbe\u7f6e\u4e00\u4e2a\u65b0\u7684\u952e\u503c\uff0c\u7136\u540e\u518d6381\u8282\u70b9\u67e5\u8be2\u503c\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\">[root@localhost kconfig]# redis-cli -p 6380\n127.0.0.1:6380&gt; AUTH 123456\nOK\n127.0.0.1:6380&gt; SET k2 v2\nOK\n\n[root@localhost kconfig]# redis-cli -p 6381\n127.0.0.1:6381&gt; AUTH 123456\nOK\n127.0.0.1:6381&gt; GET k2\n\"v2\"\n127.0.0.1:6381&gt; INFO replication\n# Replication\nrole:slave\nmaster_host:127.0.0.1\nmaster_port:6380\nmaster_link_status:up\nmaster_last_io_seconds_ago:0\nmaster_sync_in_progress:0\nslave_repl_offset:88577\nslave_priority:100\nslave_read_only:1\nreplica_announced:1\nconnected_slaves:0\nmaster_failover_state:no-failover\nmaster_replid:e55f1ce7d3feba71be8b8d46d03f18c252000733\nmaster_replid2:1ad62275c6c978b78501e8aca1f99397648fa62c\nmaster_repl_offset:88577\nsecond_repl_offset:24105\nrepl_backlog_active:1\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:1\nrepl_backlog_histlen:88577\n<\/code><\/pre>\n<p><strong>9\u3001\u518d\u6b21\u5c066379\u670d\u52a1\u542f\u52a8\uff0c\u67e5\u770b\u542f\u52a8\u540e\uff0c\u5404redis\u670d\u52a1\u7684\u60c5\u51b5\uff1a<\/strong><\/p>\n<pre><code class=\"language-bash line-numbers\">[root@localhost kconfig]# redis-cli -p 6379\n127.0.0.1:6379&gt; AUTH 123456\nOK\n127.0.0.1:6379&gt; INFO replication\n# Replication\nrole:slave\nmaster_host:127.0.0.1\nmaster_port:6380            # \u4e3b\u8282\u70b9\u5df2\u7ecf\u53d8\u6210\u4e866380\u8282\u70b9\nmaster_link_status:down     # \u4f46\u662f\u53d1\u73b0\u4e3b\u8282\u70b9\u53d8\u6210\u4e86\u79bb\u7ebf\u72b6\u6001\uff0c\u7ecf\u8fc7\u67e5\u8be2\uff0c\u5b9e\u9645\u4e0a6380\u8282\u70b9\u662f\u5728\u7ebf\u7684\nmaster_last_io_seconds_ago:-1\nmaster_sync_in_progress:0\nslave_repl_offset:1\nmaster_link_down_since_seconds:-1\nslave_priority:100\nslave_read_only:1\nreplica_announced:1\nconnected_slaves:0\nmaster_failover_state:no-failover\nmaster_replid:09007a3b577f81c501bdc3cda63840a9a936d7ec\nmaster_replid2:0000000000000000000000000000000000000000\nmaster_repl_offset:0\nsecond_repl_offset:-1\nrepl_backlog_active:0\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:0\nrepl_backlog_histlen:0\n<\/code><\/pre>\n<p>\u67e5\u770bredis6379.log\u65e5\u5fd7\u6587\u4ef6\uff08\u53736379\u8282\u70b9\u7684\u65e5\u5fd7\u6587\u4ef6\uff09\uff0c\u4f7f\u7528vtail -n 10 redis6379.log\u67e5\u770b\u65e5\u5fd7\u7684\u6700\u540e10\u884c \uff1a<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/2cf5f9d46da94a24bed20b9ccca37f13.png?x-oss-process=image\/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZmFpdGjnkZ7or5o=,size_20,color_FFFFFF,t_70,g_se,x_16\" alt=\"6379\u65e5\u5fd7\u62a5\u9519\u4fe1\u606f\" \/><\/p>\n<p>\u4ece\u65e5\u5fd7\u6587\u4ef6\u4e2d\u53ef\u4ee5\u770b\u51fa\uff0c6379\u8282\u70b9\u8fde\u63a56380\u4e3b\u8282\u70b9\u65f6\uff0c\u56e0\u4e3a\u5bc6\u7801\u8ba4\u8bc1\u95ee\u9898\u5bfc\u81f4\u8fde\u63a5\u5931\u8d25\u4e86\u3002<br \/>\n\u67e5\u770bredis6379.conf\u914d\u7f6e\u6587\u4ef6\uff0c\u5e76\u5207\u6362\u5230\u914d\u7f6e\u6587\u4ef6\u6700\u540e\u4e00\u884c\uff0c\u6dfb\u52a0\u4e3b\u8282\u70b9\u7684\u5bc6\u7801\u914d\u7f6e\u4fe1\u606f\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\">[root@localhost kconfig]# vim redis79.conf\n<\/code><\/pre>\n<p><img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/853d35468dd64e1da3ff87732166c15d.png?x-oss-process=image\/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZmFpdGjnkZ7or5o=,size_20,color_FFFFFF,t_70,g_se,x_16\" alt=\"\u5728\u8fd9\u91cc\u63d2\u5165\u56fe\u7247\u63cf\u8ff0\" \/><br \/>\n\u91cd\u65b0\u542f\u52a86379\u8282\u70b9\uff1a<\/p>\n<pre><code class=\"language-bash line-numbers\"># \u5148\u4f7f\u7528redis-cli\u547d\u4ee4\u8fde\u63a56379\u8282\u70b9\uff0c\u5e76\u5173\u95ed6379\u670d\u52a1\n[root@localhost kconfig]# redis-cli -p 6379\n127.0.0.1:6379&gt; AUTH 123456\nOK\n127.0.0.1:6379&gt; SHUTDOWN\nnot connected&gt; exit\n\n# \u518d\u6b21\u542f\u52a86379\u8282\u70b9\n[root@localhost kconfig]# redis-server redis79.conf\n\n# \u518d\u6b21\u4f7f\u7528redis-cli\u547d\u4ee4\u8fde\u63a56379\u8282\u70b9\uff0c\u5e76\u67e5\u770b\u662f\u5426\u8fde\u63a5\u6210\u529f\n[root@localhost kconfig]# redis-cli -p 6379\n127.0.0.1:6379&gt; AUTH 123456\nOK\n127.0.0.1:6379&gt; INFO replication\n# Replication\nrole:slave\nmaster_host:127.0.0.1\nmaster_port:6380\nmaster_link_status:up       # \u53ef\u4ee5\u770b\u5230\u6b64\u65f6\u4e3b\u8282\u70b9\u5728\nmaster_last_io_seconds_ago:1\nmaster_sync_in_progress:0\nslave_repl_offset:328070\nslave_priority:100\nslave_read_only:1\nreplica_announced:1\nconnected_slaves:0\nmaster_failover_state:no-failover\nmaster_replid:e55f1ce7d3feba71be8b8d46d03f18c252000733\nmaster_replid2:0000000000000000000000000000000000000000\nmaster_repl_offset:328070\nsecond_repl_offset:-1\nrepl_backlog_active:1\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:323631\nrepl_backlog_histlen:4440\n<\/code><\/pre>\n<p><strong>10\u3001\u4f7f\u7528redis-cli\u8fde\u63a56380\uff0c\u5e76\u57286379\u6d4b\u8bd5\u4e3b\u4ece\u590d\u5236\u72b6\u6001\uff1a<\/strong><\/p>\n<pre><code class=\"language-bash line-numbers\"># \u8fde\u63a56380\u8282\u70b9\n[root@localhost ~]# redis-cli -p 6380\n127.0.0.1:6380&gt; AUTH 123456\nOK\n127.0.0.1:6380&gt; INFO replication\n# Replication\nrole:master\nconnected_slaves:2      # \u53ef\u4ee5\u770b\u5230\u6b64\u65f6\u6709\u4e24\u4e2a\u4ece\u8282\u70b9\nslave0:ip=127.0.0.1,port=6381,state=online,offset=395194,lag=1\nslave1:ip=127.0.0.1,port=6379,state=online,offset=395194,lag=1  # 6379\u8282\u70b9\u5df2\u7ecf\u6210\u529f\u8fde\u63a5\nmaster_failover_state:no-failover\nmaster_replid:e55f1ce7d3feba71be8b8d46d03f18c252000733\nmaster_replid2:1ad62275c6c978b78501e8aca1f99397648fa62c\nmaster_repl_offset:395460\nsecond_repl_offset:24105\nrepl_backlog_active:1\nrepl_backlog_size:1048576\nrepl_backlog_first_byte_offset:1\nrepl_backlog_histlen:395460\n127.0.0.1:6380&gt; SET k3 v3   # \u8bbe\u7f6e\u952e\u4e3ak3\uff0c\u503c\u4e3av3\u7684\u952e\u503c\u5bf9\nOK\n\n# \u8fde\u63a56379\u8282\u70b9\n[root@localhost kconfig]# redis-cli -p 6379\n127.0.0.1:6379&gt; AUTH 123456\nOK\n127.0.0.1:6379&gt; GET k3\n\"v3\"\n<\/code><\/pre>\n<h3>SpringBoot\u4e2d\u6574\u5408\u54e8\u5175\u6a21\u5f0f<\/h3>\n<p>\u53c2\u8003\u8d44\u6599\uff1a<a class=\"wp-editor-md-post-content-link\" href=\"https:\/\/www.cnblogs.com\/sunnycc\/p\/15810366.html\">springBoot \u6574\u5408 Redis\u54e8\u5175\/\u8bfb\u5199\u5206\u79bb\/Lettuce<\/a><\/p>\n<p><strong>\u4ee3\u7801\u76ee\u5f55\u7ed3\u679c\u5982\u4e0b\u56fe\u6240\u793a\uff1a<\/strong><br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/7a5887ec39c746b3af1ef5c8775683c8.png?x-oss-process=image\/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZmFpdGjnkZ7or5o=,size_15,color_FFFFFF,t_70,g_se,x_16\" alt=\"\u4ee3\u7801\u76ee\u5f55\u7ed3\u6784\" \/><br \/>\n<strong>1\u3001pom.xml<\/strong><\/p>\n<pre data-language=XML><code class=\"language-markup line-numbers\">        &lt;dependency&gt;\n            &lt;groupId&gt;org.springframework.boot&lt;\/groupId&gt;\n            &lt;artifactId&gt;spring-boot-starter-data-redis&lt;\/artifactId&gt;\n        &lt;\/dependency&gt;\n        &lt;!-- \u63d0\u4f9bRedis\u8fde\u63a5\u6c60 --&gt;\n        &lt;dependency&gt;\n            &lt;groupId&gt;org.apache.commons&lt;\/groupId&gt;\n            &lt;artifactId&gt;commons-pool2&lt;\/artifactId&gt;\n        &lt;\/dependency&gt;\n<\/code><\/pre>\n<p><strong>2\u3001\u914d\u7f6e\u6587\u4ef6\uff1a<\/strong><br \/>\napplication.yml<\/p>\n<pre><code class=\"language-yml line-numbers\">spring:\n  redis:\n    password: 123456\n    timeout: 5000\n    ###################\u4ee5\u4e0b\u4e3aredis\u54e8\u5175\u589e\u52a0\u7684\u914d\u7f6e###########################\n    sentinel:\n      nodes: 192.168.76.128:26379,192.168.76.128:26380,192.168.76.128:26381\n      master: mymaster\n    ###################\u4ee5\u4e0b\u4e3alettuce\u8fde\u63a5\u6c60\u589e\u52a0\u7684\u914d\u7f6e###########################\n    lettuce:\n      pool:\n        # \u8fde\u63a5\u6c60\u6700\u5927\u8fde\u63a5\u6570\uff08\u4f7f\u7528\u8d1f\u503c\u8868\u793a\u6ca1\u6709\u9650\u5236\uff09\n        max-active: 8\n        # \u8fde\u63a5\u6c60\u4e2d\u7684\u6700\u5927\u7a7a\u95f2\u8fde\u63a5\n        max-idle: 8\n        # \u8fde\u63a5\u6c60\u4e2d\u7684\u6700\u5c0f\u7a7a\u95f2\u8fde\u63a5\n        min-idle: 1\n        # \u8fde\u63a5\u6c60\u6700\u5927\u963b\u585e\u7b49\u5f85\u65f6\u95f4\uff08\u4f7f\u7528\u8d1f\u503c\u8868\u793a\u6ca1\u6709\u9650\u5236\uff09\n        max-wait: 5000\n<\/code><\/pre>\n<p><strong>3\u3001RedisTemplate\u914d\u7f6e\uff1a<\/strong><br \/>\n\u53ef\u4ee5\u76f4\u63a5\u590d\u7528\u4e4b\u524dSpringBoot\u6574\u5408\u5355\u53f0Redis\u670d\u52a1\u7684RedisTemplate\u914d\u7f6e\u4ee3\u7801\uff1a<\/p>\n<pre><code class=\"language-java line-numbers\">@Configuration\npublic class RedisConfig {\n    \/\/ \u7f16\u5199\u6211\u4eec\u81ea\u5df1\u7684RedisTemplate\n    @Bean\n    @SuppressWarnings(\"all\")\n    public RedisTemplate&lt;String, Object&gt; redisTemplate(RedisConnectionFactory redisConnectionFactory) {\n        \/\/ \u6211\u4eec\u4e3a\u4e86\u81ea\u5df1\u5f00\u53d1\u65b9\u4fbf\uff0c\u4e00\u822c\u53ea\u63a5\u4f7f\u7528&lt;String, Objec&gt;\u6cdb\u578b\n        RedisTemplate&lt;String, Object&gt; template = new RedisTemplate();\n        template.setConnectionFactory(redisConnectionFactory);\n\n        \/\/ \u914d\u7f6e\u5177\u4f53\u7684\u5e8f\u5217\u5316\u65b9\u5f0f\n        \/\/ Json\u7684\u5e8f\u5217\u5316\n        Jackson2JsonRedisSerializer&lt;Object&gt; jackson2JsonRedisSerializer = new Jackson2JsonRedisSerializer&lt;Object&gt;(Object.class);\n        ObjectMapper om = new ObjectMapper();\n        om.setVisibility(PropertyAccessor.ALL, JsonAutoDetect.Visibility.ANY);\n        om.enableDefaultTyping(ObjectMapper.DefaultTyping.NON_FINAL);\n        jackson2JsonRedisSerializer.setObjectMapper(om);\n        template.setKeySerializer(jackson2JsonRedisSerializer);\n        \/\/ String\u7684\u5e8f\u5217\u5316\n        StringRedisSerializer stringRedisSerializer = new StringRedisSerializer();\n\n        \/\/ key\u91c7\u7528String\u7684\u5e8f\u5217\u5316\u65b9\u5f0f\n        template.setKeySerializer(stringRedisSerializer);\n        \/\/ hash\u7684key\u4e5f\u91c7\u7528String\u7684\u5e8f\u5217\u5316\u65b9\u5f0f\n        template.setHashKeySerializer(stringRedisSerializer);\n        \/\/ value\u5e8f\u5217\u5316\u65b9\u5f0f\u91c7\u7528jackson\n        template.setValueSerializer(jackson2JsonRedisSerializer);\n        template.afterPropertiesSet();\n\n        return template;\n    }\n}\n<\/code><\/pre>\n<p><strong>4\u3001Redis\u54e8\u5175\u914d\u7f6e\uff1a<\/strong><\/p>\n<pre><code class=\"language-java line-numbers\">@Configuration\n@ConfigurationProperties(prefix = \"spring.redis.sentinel\")\npublic class RedisSentinelConfig {\n    \/\/ \u54e8\u5175\u8282\u70b9\n    private Set&lt;String&gt; nodes;\n    \/\/ \u4e3b\u8282\u70b9\u540d\u79f0\n    private String master;\n\n    @Value(\"<span class=\"katex math inline\">{spring.redis.timeout}\")\n    private long timeout;\n    @Value(\"<\/span>{spring.redis.password}\")\n    private String password;\n    @Value(\"<span class=\"katex math inline\">{spring.redis.lettuce.pool.max-idle}\")\n    private int maxIdle;\n    @Value(\"<\/span>{spring.redis.lettuce.pool.min-idle}\")\n    private int minIdle;\n    @Value(\"<span class=\"katex math inline\">{spring.redis.lettuce.pool.max-wait}\")\n    private long maxWait;\n    @Value(\"<\/span>{spring.redis.lettuce.pool.max-active}\")\n    private int maxActive;\n\n    @Bean\n    public RedisConnectionFactory lettuceConnectionFactory() {\n        RedisSentinelConfiguration redisSentinelConfiguration = new RedisSentinelConfiguration(master, nodes);\n        NamedNode master = redisSentinelConfiguration.getMaster();\n        String name = master.getName();\n        redisSentinelConfiguration.setPassword(RedisPassword.of(password.toCharArray()));\n        GenericObjectPoolConfig genericObjectPoolConfig = new GenericObjectPoolConfig();\n        genericObjectPoolConfig.setMaxIdle(maxIdle);\n        genericObjectPoolConfig.setMinIdle(minIdle);\n        genericObjectPoolConfig.setMaxTotal(maxActive);\n        genericObjectPoolConfig.setMaxWaitMillis(maxWait);\n        \/\/readFrom(ReadFrom.REPLICA) \u53ef\u8bbe\u7f6e\uff0c\u8bbe\u7f6e\u4e86\u5c31\u5f62\u6210\u8bfb\u5199\u5206\u79bb\uff0c\u8bfb\u4f1a\u8bfb\u53d6\u4ece\u8282\u70b9\uff0c\u4f46\u662f\u56e0\u4e3a\u6709\u590d\u5236\u8fc7\u7a0b\uff0c\u8981\u80fd\u5bb9\u5fcd\u77ed\u65f6\u95f4\u7684\u810f\u6570\u636e\uff0c\u9002\u5408\u5bf9\u6570\u636e\u8981\u6c42\u4e0d\u592a\u53ca\u65f6\u7684\n        LettucePoolingClientConfiguration lettuceClientConfiguration = LettucePoolingClientConfiguration.builder()\n                .poolConfig(genericObjectPoolConfig).readFrom(ReadFrom.ANY_REPLICA)\n                .build();\n\n\n        return new LettuceConnectionFactory(redisSentinelConfiguration, lettuceClientConfiguration);\n    }\n\n\n    public void setNodes(Set&lt;String&gt; nodes) {\n        this.nodes = nodes;\n    }\n\n    public void setMaster(String master) {\n        this.master = master;\n    }\n}\n<\/code><\/pre>\n<p><strong>5\u3001\u7f16\u5199\u6d4b\u8bd5\u4ee3\u7801\uff1a<\/strong><\/p>\n<pre><code class=\"language-java line-numbers\">@SpringBootTest\nclass Redis03SentinelApplicationTests {\n\n    @Autowired\n    @Qualifier(\"redisTemplate\")\n    private RedisTemplate redisTemplate;\n\n    @Test\n    void contextLoads() throws JsonProcessingException {\n\/\/      \/\/ \u83b7\u53d6\u5f53\u524d\u8fde\u63a5\u7684\u670d\u52a1\u5668\u4fe1\u606f\n\/\/      try {\n\/\/          RedisConnectionFactory factory = redisTemplate.getConnectionFactory();\n\/\/          RedisConnection connection = RedisConnectionUtils.getConnection(factory);\n\/\/          System.out.println(connection.info());\n\/\/      }catch (Exception ex) {\n\/\/          ex.printStackTrace();\n\/\/      }\n        redisTemplate.opsForValue().set(\"k1\", \"v1\");\n        System.out.println(redisTemplate.opsForValue().get(\"k1\"));\n\n        User user = new User(\"\u5f20\u4e09\", 18);\n        String jsonUser = new ObjectMapper().writeValueAsString(user);\n        redisTemplate.opsForValue().set(\"user\", jsonUser);\n        System.out.println(redisTemplate.opsForValue().get(\"user\"));\n    }\n}\n<\/code><\/pre>\n<p>\u4ee3\u7801\u6267\u884c\u6548\u679c\uff1a<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/f816ed06971541a4b79687b49a6898a7.png\" alt=\"\u4ee3\u7801\u6267\u884c\u6548\u679c\" \/><\/p>\n<p><strong>6\u3001\u4f7f\u7528\u547d\u4ee4\u884c\u67e5\u770b\u4ee3\u7801set\u8fdb\u53bb\u7684\u952e\u503c\uff1a<\/strong><\/p>\n<pre><code class=\"language-bash line-numbers\">[root@localhost kconfig]# redis-cli -p 6381\n127.0.0.1:6381&gt; AUTH 123456\nOK\n127.0.0.1:6381&gt; KEYS *\n1) \"user\"\n2) \"k1\"\n3) \"mykey\"\n127.0.0.1:6381&gt; GET user\n\"\\\"{\\\\\\\"name\\\\\\\":\\\\\\\"\\xe5\\xbc\\xa0\\xe4\\xb8\\x89\\\\\\\",\\\\\\\"age\\\\\\\":18}\\\"\"\n<\/code><\/pre>\n<p><strong>\u9700\u8981\u6ce8\u610f\u7684\u70b9\uff1a<\/strong><br \/>\n1\u3001\u4e00\u5b9a\u8981\u786e\u4fddSentinel\u914d\u7f6e\u6587\u4ef6\u4e2d\u7684\u4e3b\u8282\u70b9\u7684IP\u3001\u7aef\u53e3\u53f7\u3001Redis\u5bc6\u7801\u8981\u6b63\u786e\uff1b<br \/>\n2\u3001\u6240\u6709Redis\u670d\u52a1\u7684\u5bc6\u7801\u5fc5\u987b\u8981\u4e00\u6837\uff1b<br \/>\n3\u3001Redis\u914d\u7f6e\u6587\u4ef6\u548c\u54e8\u5175\u914d\u7f6e\u6587\u4ef6\u4e2d\uff0c\u4e00\u5b9a\u4e0d\u8981\u4f7f\u7528127.0.0.1\u8fd9\u6837\u7684IP\u5730\u5740\uff0c\u5fc5\u987b\u8981\u4f7f\u7528\u771f\u5b9e\u7684IP\uff0c\u5426\u5219\u53ef\u80fd\u5bfc\u81f4\u4ee3\u7801\u62a5\u4e0d\u80fd\u8fde\u63a5\u7684\u9519\u8bef\uff1b<br \/>\n4\u3001\u914d\u7f6e\u6587\u4ef6\u4e2d\uff0c\u4e0d\u9700\u8981\u660e\u786e\u6307\u5b9a\u4e3b\u8282\u70b9\u7684IP\u548c\u7aef\u53e3\u53f7\uff1b<br \/>\n5\u3001\u5982\u679cRedis\u670d\u52a1\u91cd\u542f\u4e86\uff0c\u6216\u8005Sentinel\u670d\u52a1\u91cd\u542f\u4e86\uff0c\u4e00\u5b9a\u8bb0\u5f97\u8981\u68c0\u67e5\u4e00\u4e0b\u5bf9\u5e94\u7684\u914d\u7f6e\u6587\u4ef6\uff0c\u56e0\u4e3a\u54e8\u5175\u6a21\u5f0f\u4f1a\u6839\u636e\u8282\u70b9\u548c\u54e8\u5175\u7684\u53d8\u5316\u60c5\u51b5\uff0c\u81ea\u52a8\u4fee\u6539\u5bf9\u5e94\u7684\u914d\u7f6e\u6587\u4ef6\uff0c\u6709\u7684\u65f6\u5019\u53ef\u80fd\u4f1a\u5bfc\u81f4\u51fa\u73b0\u95ee\u9898\uff1b<br \/>\n6\u3001\u5982\u679credis\u670d\u52a1\u8bbe\u7f6e\u4e86\u5bc6\u7801\uff0c\u90a3\u4e48\u5373\u4f7f\u662f\u9ed8\u8ba4\u7684\u4e3b\u8282\u70b9\u7684\u914d\u7f6e\u6587\u4ef6\uff0c\u4e5f\u8981\u628amasterauth\u8fd9\u4e2a\u914d\u7f6e\u9879\u914d\u597d\uff0c\u4ee5\u514d\u5728\u4e3b\u670d\u52a1\u610f\u5916\u5b95\u673a\uff0c\u7136\u540e\u518d\u91cd\u542f\u65f6\uff0c\u56e0\u4e3a\u6ca1\u6709\u914d\u7f6e\u65b0\u7684\u4e3b\u8282\u70b9\u7684\u8ba4\u8bc1\u5bc6\u7801\u800c\u5bfc\u81f4\u65e0\u6cd5\u6b63\u5e38\u8fde\u63a5\u3002<\/p>\n<h1>Redis\u7f13\u5b58\u7a7f\u900f\u548c\u96ea\u5d29<\/h1>\n<p>\u7f13\u5b58\u7cfb\u7edf\u7684\u4f7f\u7528\u573a\u666f\uff1a\u524d\u53f0\u8bf7\u6c42\uff0c\u540e\u53f0\u5148\u4ece\u7f13\u5b58\u4e2d\u53d6\u6570\u636e\uff0c\u53d6\u5230\u76f4\u63a5\u8fd4\u56de\u7ed3\u679c\uff0c\u53d6\u4e0d\u5230\u65f6\u4ece\u6570\u636e\u5e93\u4e2d\u53d6\uff0c\u6570\u636e\u5e93\u53d6\u5230\u66f4\u65b0\u7f13\u5b58\uff0c\u5e76\u8fd4\u56de\u7ed3\u679c\uff0c\u6570\u636e\u5e93\u4e5f\u6ca1\u53d6\u5230\uff0c\u90a3\u76f4\u63a5\u8fd4\u56de\u7a7a\u7ed3\u679c\u3002<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/f49b7d82e9fd42c6b403f3f02f968d9d.png?x-oss-process=image\/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZmFpdGjnkZ7or5o=,size_20,color_FFFFFF,t_70,g_se,x_16\" alt=\"\u7f13\u5b58\u7cfb\u7edf\u6d41\u7a0b\" \/><\/p>\n<h2>\u7f13\u5b58\u7a7f\u900f<\/h2>\n<p><strong>\u63cf\u8ff0\uff1a<\/strong><br \/>\n<span class=\"text-highlighted-inline\" style=\"background-color: #fffd38;\">\u7528\u6237\u4e0d\u65ad\u7684\u8bf7\u6c42\u7f13\u5b58\u548c\u6570\u636e\u5e93\u4e2d\u90fd\u4e0d\u5b58\u5728\u7684\u6570\u636e<\/span>\uff0c\u7531\u4e8e\u7f13\u5b58\u662f\u4e0d\u547d\u4e2d\u65f6\u88ab\u52a8\u5199\u7684\uff0c\u5e76\u4e14\u51fa\u4e8e\u5bb9\u9519\u8003\u8651\uff0c\u5982\u679c\u4ece\u6570\u636e\u5e93\u67e5\u4e0d\u5230\u6570\u636e\u5219\u4e0d\u5199\u5165\u7f13\u5b58\uff0c\u8fd9\u5c06\u5bfc\u81f4\u8fd9\u4e2a\u4e0d\u5b58\u5728\u7684\u6570\u636e\u6bcf\u6b21\u8bf7\u6c42\u90fd\u8981\u5230\u6570\u636e\u5e93\u53bb\u67e5\u8be2\uff0c\u5931\u53bb\u4e86\u7f13\u5b58\u7684\u610f\u4e49\u3002<br \/>\n\u5728\u6d41\u91cf\u5927\u65f6\uff0c\u53ef\u80fd\u6570\u636e\u5e93\u5c31\u4f1a\u6302\u6389\u4e86\uff0c\u8981\u662f\u6709\u4eba\u5229\u7528\u4e0d\u5b58\u5728\u7684key\u9891\u7e41\u653b\u51fb\u6211\u4eec\u7684\u5e94\u7528\uff0c\u8fd9\u5c31\u662f\u6f0f\u6d1e\u3002<br \/>\n\u5982\u53d1\u8d77\u4e3aid\u4e3a\u201c-1\u201d\u7684\u6570\u636e\u6216id\u4e3a\u7279\u522b\u5927\u4e0d\u5b58\u5728\u7684\u6570\u636e\u3002\u8fd9\u65f6\u7684\u7528\u6237\u5f88\u53ef\u80fd\u662f\u653b\u51fb\u8005\uff0c\u653b\u51fb\u4f1a\u5bfc\u81f4\u6570\u636e\u5e93\u538b\u529b\u8fc7\u5927\u3002<br \/>\n<strong>\u89e3\u51b3\u65b9\u6848\uff1a<\/strong><br \/>\n1\u3001\u63a5\u53e3\u5c42\u589e\u52a0\u6821\u9a8c\uff0c\u5982\u7528\u6237\u9274\u6743\u6821\u9a8c\uff0cid\u505a\u57fa\u7840\u6821\u9a8c\uff0cid&lt;=0\u7684\u76f4\u63a5\u62e6\u622a\uff1b<br \/>\n2\u3001\u5e03\u9686\u8fc7\u6ee4\u5668\uff08Bloom Filter\uff09\uff0c\u5c06\u6240\u6709\u53ef\u80fd\u5b58\u5728\u7684\u6570\u636e\u54c8\u5e0c\u5230\u4e00\u4e2a\u8db3\u591f\u5927\u7684bitmap\u4e2d\uff0c\u4e00\u4e2a\u4e00\u5b9a\u4e0d\u5b58\u5728\u7684\u6570\u636e\u4f1a\u88ab\u8fd9\u4e2abitmap\u62e6\u622a\u6389\uff0c\u4ece\u800c\u907f\u514d\u4e86\u5bf9\u5e95\u5c42\u5b58\u50a8\u7cfb\u7edf\u7684\u67e5\u8be2\u538b\u529b\uff1b<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/8a1f369760e1414683aa04b61f46fe92.png?x-oss-process=image\/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZmFpdGjnkZ7or5o=,size_11,color_FFFFFF,t_70,g_se,x_16\" alt=\"\u5e03\u9686\u8fc7\u6ee4\u5668\u7684\u4f7f\u7528\u573a\u666f\" \/><br \/>\n3\u3001\u5bf9\u4e0d\u5b58\u5728\u7684\u6570\u636e\u4e5f\u8fdb\u884c\u7f13\u5b58\uff0c\u5982\u679c\u4e00\u4e2a\u67e5\u8be2\u8fd4\u56de\u7684\u6570\u636e\u4e3a\u7a7a\uff08\u4e0d\u7ba1\u662f\u6570\u636e\u4e0d\u5b58\u5728\uff0c\u8fd8\u662f\u7cfb\u7edf\u6545\u969c\uff09\uff0c\u6211\u4eec\u4ecd\u7136\u628a\u8fd9\u4e2a\u7a7a\u7ed3\u679c\u8fdb\u884c\u7f13\u5b58\uff0c\u4f46\u5b83\u7684\u8fc7\u671f\u65f6\u95f4\u4f1a\u5f88\u77ed\uff0c\u6700\u957f\u4e0d\u8d85\u8fc7\u4e94\u5206\u949f\u3002<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/87061cd56ee744ba8b67e4d15b8182ba.png?x-oss-process=image\/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZmFpdGjnkZ7or5o=,size_9,color_FFFFFF,t_70,g_se,x_16\" alt=\"\u7f13\u5b58\u7a7a\u5bf9\u8c61\" \/><br \/>\n\u4f46\u8fd9\u79cd\u65b9\u6cd5\u4f1a\u5b58\u5728\u4e24\u4e2a\u95ee\u9898\uff1a<br \/>\n1\u3001\u5982\u679c\u7a7a\u503c\u80fd\u591f\u88ab\u7f13\u5b58\u8d77\u6765\uff0c\u8fd9\u5c31\u610f\u5473\u7740\u7f13\u5b58\u9700\u8981\u66f4\u591a\u7684\u7a7a\u95f4\u5b58\u50a8\u66f4\u591a\u7684\u952e\uff0c\u56e0\u4e3a\u8fd9\u5f53\u4e2d\u53ef\u80fd\u4f1a\u6709\u5f88\u591a\u7684\u7a7a\u503c\u7684\u952e\uff1b<br \/>\n2\u3001\u5373\u4f7f\u5bf9\u7a7a\u503c\u8bbe\u7f6e\u4e86\u8fc7\u671f\u65f6\u95f4\uff0c\u8fd8\u662f\u4f1a\u5b58\u5728\u7f13\u5b58\u5c42\u548c\u5b58\u50a8\u5c42\u7684\u6570\u636e\u4f1a\u6709\u4e00\u6bb5\u65f6\u95f4\u7a97\u53e3\u7684\u4e0d\u4e00\u81f4\uff0c\u8fd9\u5bf9\u4e8e\u9700\u8981\u4fdd\u6301\u4e00\u81f4\u6027\u7684\u4e1a\u52a1\u4f1a\u6709\u5f71\u54cd\u3002<\/p>\n<h2>\u7f13\u5b58\u51fb\u7a7f<\/h2>\n<p><strong>\u63cf\u8ff0\uff1a<\/strong><br \/>\n\u7f13\u5b58\u51fb\u7a7f\u662f\u6307\u4e00\u4e2akey\u975e\u5e38\u70ed\u70b9\uff0c\u5728\u4e0d\u505c\u7684\u625b\u7740\u5927\u5e76\u53d1\u91cf\uff0c\u5927\u5e76\u53d1\u91cf\u96c6\u4e2d\u5bf9\u8fd9\u4e00\u4e2akey\u8fdb\u884c\u8bbf\u95ee\uff0c\u5f53\u8fd9\u4e2akey\u5931\u6548\u7684\u77ac\u95f4\uff0c\u6301\u7eed\u7684\u5927\u5e76\u53d1\u5c31\u4f1a\u51fb\u7a7f\u7f13\u5b58\uff0c\u5927\u91cf\u7684\u8bf7\u6c42\u77ac\u95f4\u6253\u5728\u6570\u636e\u5e93\u4e0a\uff0c\u5bfc\u81f4\u6570\u636e\u5e93\u538b\u529b\u77ac\u95f4\u589e\u5927\u3002<br \/>\n\u4f8b\u5982\u5fae\u535a\u5728\u7279\u5b9a\u4e8b\u4ef6\u65f6\u7a81\u7136\u5b95\u673a\u3002<br \/>\n<strong>\u89e3\u51b3\u65b9\u6848\uff1a<\/strong><br \/>\n1\u3001\u8bbe\u7f6e\u70ed\u70b9\u6570\u636e\u6c38\u4e0d\u8fc7\u671f\uff0c\u5982\u679ckey\u4e0d\u8bbe\u7f6e\u8fc7\u671f\u65f6\u95f4\uff0c\u5219\u4e0d\u53ef\u80fd\u51fa\u73b0\u5931\u6548\u7684\u77ac\u95f4\uff0c\u5373\u4e0d\u53ef\u80fd\u51fa\u73b0\u7f13\u5b58\u51fb\u7a7f\uff0c\u4f46\u662f\u4e0d\u8fc7\u671f\u7684\u8bdd\uff0c\u7f13\u5b58\u6709\u53ef\u80fd\u8d8a\u6765\u8d8a\u5927\uff0c\u5f53\u7f13\u5b58\u8dd1\u6ee1\u65f6\uff0credis\u4f1a\u6839\u636e\u914d\u7f6e\u7684\u89c4\u5219\u5bf9\u6570\u636e\u8fdb\u884c\u6e05\u7406\uff08\u5982\u6e05\u7406\u6389\u957f\u65f6\u95f4\u4e0d\u88ab\u8bbf\u95ee\u7684key\u3001\u968f\u673a\u6e05\u7406\u6389\u4e00\u4e2akey\u7b49\uff09\uff1b<br \/>\n2\u3001\u52a0\u4e92\u65a5\u9501\uff0c\u4f7f\u7528\u5206\u5e03\u5f0f\u9501\uff0c\u4fdd\u8bc1\u5bf9\u4e8e\u6bcf\u4e2akey\u540c\u4e00\u65f6\u95f4\u53ea\u80fd\u6709\u4e00\u4e2a\u7ebf\u7a0b\u53bb\u67e5\u8be2\u540e\u7aef\u670d\u52a1\uff0c\u5176\u4ed6\u7ebf\u7a0b\u6ca1\u6709\u83b7\u53d6\u5206\u5e03\u5f0f\u9501\u7684\u6743\u9650\uff0c\u56e0\u6b64\u53ea\u9700\u8981\u7b49\u5f85\u5373\u53ef\uff0c\u5f53\u7b2c\u4e00\u4e2a\u7ebf\u7a0b\u8fd4\u56de\u540e\uff0c\u6570\u636e\u88ab\u5237\u65b0\u5230\u4e86\u7f13\u5b58\u4e2d\uff0c\u540e\u7eed\u7ebf\u7a0b\u76f4\u63a5\u4ece\u7f13\u5b58\u4e2d\u83b7\u53d6\u6570\u636e\u5373\u53ef\u3002\u8fd9\u79cd\u65b9\u5f0f\u5c06\u9ad8\u5e76\u53d1\u7684\u538b\u529b\u8f6c\u79fb\u5230\u4e86\u5206\u5e03\u5f0f\u9501\uff0c\u56e0\u6b64\u5bf9\u5206\u5e03\u5f0f\u9501\u7684\u8003\u9a8c\u5f88\u5927\u3002<\/p>\n<h2>\u96ea\u5d29<\/h2>\n<p><strong>\u63cf\u8ff0\uff1a<\/strong><br \/>\n\u5728\u67d0\u4e00\u4e2a\u65f6\u95f4\u6bb5\u5185\uff0c\u7f13\u5b58\u4e2d\u6570\u636e\u5927\u6279\u91cf\u96c6\u4e2d\u8fc7\u671f\u5931\u6548\uff0c\u6216\u8005\u7f13\u5b58\u5b95\u673a\uff0c\u800c\u67e5\u8be2\u6570\u636e\u91cf\u5de8\u5927\uff0c\u5927\u91cf\u7684\u6570\u636e\u8bf7\u6c42\u76f4\u63a5\u6253\u5728\u4e86\u6570\u636e\u5e93\u4e0a\uff0c\u5f15\u8d77\u6570\u636e\u5e93\u538b\u529b\u8fc7\u5927\u751a\u81f3down\u673a\u3002<br \/>\n\u548c\u7f13\u5b58\u51fb\u7a7f\u4e0d\u540c\u7684\u662f\uff0c \u7f13\u5b58\u51fb\u7a7f\u6307\u5e76\u53d1\u67e5\u540c\u4e00\u6761\u6570\u636e\uff0c\u7f13\u5b58\u96ea\u5d29\u662f\u4e0d\u540c\u6570\u636e\u90fd\u8fc7\u671f\u4e86\uff0c\u5f88\u591a\u6570\u636e\u90fd\u67e5\u4e0d\u5230\u4ece\u800c\u67e5\u6570\u636e\u5e93\u3002<br \/>\n<img decoding=\"async\" src=\"https:\/\/img-blog.csdnimg.cn\/4077a72fafc144d0a8bba298112fe917.png?x-oss-process=image\/watermark,type_d3F5LXplbmhlaQ,shadow_50,text_Q1NETiBAZmFpdGjnkZ7or5o=,size_20,color_FFFFFF,t_70,g_se,x_16\" alt=\"\u7f13\u5b58\u96ea\u5d29\" \/><br \/>\n\u5176\u5b9e\u96c6\u4e2d\u8fc7\u671f\u5e76\u4e0d\u662f\u6700\u81f4\u547d\u7684\uff0c\u6bd4\u8f83\u81f4\u547d\u7684\u662f\u7f13\u5b58\u670d\u52a1\u5668\u67d0\u4e2a\u8282\u70b9\u5b95\u673a\u6216\u65ad\u7f51\u3002\u56e0\u4e3a\u81ea\u7136\u5f62\u6210\u7684\u7f13\u5b58\u96ea\u5d29\uff0c\u4e00\u5b9a\u662f\u5728\u67d0\u4e2a\u65f6\u95f4\u6bb5\u96c6\u4e2d\u521b\u5efa\u7f13\u5b58\uff0c\u8fd9\u4e2a\u65f6\u5019\uff0c\u6570\u636e\u5e93\u4e5f\u662f\u53ef\u4ee5\u6297\u4f4f\u538b\u529b\u7684\u3002\u65e0\u975e\u5c31\u662f\u5bf9\u6570\u636e\u5e93\u4ea7\u751f\u5468\u671f\u6027\u7684\u538b\u529b\u800c\u5df2\uff0c\u800c\u7f13\u5b58\u670d\u52a1\u8282\u70b9\u7684\u5b95\u673a\uff0c\u5bf9\u6570\u636e\u5e93\u7684\u670d\u52a1\u5668\u9020\u6210\u7684\u538b\u529b\u662f\u4e0d\u53ef\u9884\u77e5\u7684\uff0c\u5f88\u6709\u53ef\u80fd\u77ac\u95f4\u628a\u6570\u636e\u5e93\u538b\u57ae\u3002<\/p>\n<p><strong>\u89e3\u51b3\u65b9\u6848\uff1a<\/strong><\/p>\n<p>1\u3001Redis\u9ad8\u53ef\u7528\uff0c\u642d\u5efaRedis\u96c6\u7fa4\uff0c\u4fdd\u8bc1\u5373\u4f7f\u4e00\u53f0\u8282\u70b9\u6302\u6389\uff0c\u5176\u4ed6\u7684\u8282\u70b9\u8fd8\u53ef\u4ee5\u7ee7\u7eed\u5de5\u4f5c\uff1b<br \/>\n2\u3001\u9650\u6d41\u964d\u7ea7\uff0c\u5728\u7f13\u5b58\u5931\u6548\u540e\uff0c\u901a\u8fc7\u52a0\u9501\u6216\u8005\u961f\u5217\u6765\u63a7\u5236\u8bfb\u6570\u636e\u5e93\u5199\u7f13\u5b58\u7684\u7ebf\u7a0b\u6570\u91cf\uff0c\u6bd4\u5982\u67d0\u4e2akey\u53ea\u5141\u8bb8\u4e00\u4e2a\u7ebf\u7a0b\u67e5\u8be2\u6570\u636e\u5e93\u548c\u5199\u7f13\u5b58\uff0c\u5176\u4ed6\u7ebf\u7a0b\u7b49\u5f85\uff1b<br \/>\n3\u3001\u6570\u636e\u9884\u70ed\uff0c\u5728\u6b63\u5f0f\u90e8\u7f72\u4e4b\u524d\uff0c\u5148\u628a\u53ef\u80fd\u7684\u6570\u636e\u9884\u5148\u8bbf\u95ee\u4e00\u904d\uff0c\u8fd9\u6837\u90e8\u5206\u53ef\u80fd\u5927\u91cf\u8bbf\u95ee\u7684\u6570\u636e\u5c31\u4f1a\u52a0\u8f7d\u5230\u7f13\u5b58\u4e2d\uff1b<br \/>\n4\u3001\u968f\u673a\u8bbe\u7f6e\u7f13\u5b58\u6570\u636e\u7684\u8fc7\u671f\u65f6\u95f4\uff0c\u9632\u6b62\u540c\u4e00\u65f6\u95f4\u5927\u91cf\u6570\u636e\u8fc7\u671f\u3002<\/p>\n  \n  \n  ","protected":false},"excerpt":{"rendered":"<p>\u76ee\u5f55 [toc] \u89c6\u9891\u5730\u5740\uff1ahttps:\/\/www.bilibili.com\/video\/BV1S54y1R7&hellip;<a href=\"https:\/\/www.softeng.cn\/?p=430\" class=\"more-link\">Continue reading <span class=\"screen-reader-text\">\u300aB\u7ad9-Redis\u6559\u7a0b\u300b\u5b66\u4e60\u7b14\u8bb0<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[32],"tags":[60,59,61,62],"class_list":["post-430","post","type-post","status-publish","format-standard","hentry","category-32","tag-jedis","tag-redis","tag-redistemplate","tag-springboot"],"_links":{"self":[{"href":"https:\/\/www.softeng.cn\/index.php?rest_route=\/wp\/v2\/posts\/430"}],"collection":[{"href":"https:\/\/www.softeng.cn\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.softeng.cn\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.softeng.cn\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.softeng.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=430"}],"version-history":[{"count":1,"href":"https:\/\/www.softeng.cn\/index.php?rest_route=\/wp\/v2\/posts\/430\/revisions"}],"predecessor-version":[{"id":431,"href":"https:\/\/www.softeng.cn\/index.php?rest_route=\/wp\/v2\/posts\/430\/revisions\/431"}],"wp:attachment":[{"href":"https:\/\/www.softeng.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=430"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.softeng.cn\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=430"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.softeng.cn\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=430"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}