{"id":1249,"date":"2017-08-12T19:27:18","date_gmt":"2017-08-12T11:27:18","guid":{"rendered":"http:\/\/www.kumouse.com\/?p=1249"},"modified":"2017-08-12T19:27:18","modified_gmt":"2017-08-12T11:27:18","slug":"redis%e5%b8%b8%e7%94%a8%e6%95%b0%e6%8d%ae%e7%b1%bb%e5%9e%8b%e4%bb%8b%e7%bb%8d%e3%80%81%e4%bd%bf%e7%94%a8%e5%9c%ba%e6%99%af%e5%8f%8a%e5%85%b6%e6%93%8d%e4%bd%9c%e5%91%bd%e4%bb%a4","status":"publish","type":"post","link":"https:\/\/www.kumouse.com\/?p=1249","title":{"rendered":"Redis\u5e38\u7528\u6570\u636e\u7c7b\u578b\u4ecb\u7ecd\u3001\u4f7f\u7528\u573a\u666f\u53ca\u5176\u64cd\u4f5c\u547d\u4ee4"},"content":{"rendered":"<p>Redis\u76ee\u524d\u652f\u63015\u79cd\u6570\u636e\u7c7b\u578b\uff0c\u5206\u522b\u662f\uff1a<\/p>\n<ol>\n<li>String\uff08\u5b57\u7b26\u4e32\uff09<\/li>\n<li>List\uff08\u5217\u8868\uff09<\/li>\n<li>Hash\uff08\u5b57\u5178\uff09<\/li>\n<li>Set\uff08\u96c6\u5408\uff09<\/li>\n<li>Sorted Set\uff08\u6709\u5e8f\u96c6\u5408\uff09<\/li>\n<\/ol>\n<p>\u4e0b\u9762\u5c31\u5206\u522b\u4ecb\u7ecd\u8fd9\u4e94\u79cd\u6570\u636e\u7c7b\u578b\u53ca\u5176\u76f8\u5e94\u7684\u64cd\u4f5c\u547d\u4ee4\u3002<\/p>\n<h2 id=\"string\u5b57\u7b26\u4e32\">1. String\uff08\u5b57\u7b26\u4e32\uff09<\/h2>\n<p>String\u662f\u7b80\u5355\u7684 key-value \u952e\u503c\u5bf9\uff0cvalue \u4e0d\u4ec5\u53ef\u4ee5\u662f String\uff0c\u4e5f\u53ef\u4ee5\u662f\u6570\u5b57\u3002String\u5728redis\u5185\u90e8\u5b58\u50a8\u9ed8\u8ba4\u5c31\u662f\u4e00\u4e2a\u5b57\u7b26\u4e32\uff0c\u88abredisObject\u6240\u5f15\u7528\uff0c\u5f53\u9047\u5230incr,decr\u7b49\u64cd\u4f5c\u65f6\u4f1a\u8f6c\u6210\u6570\u503c\u578b\u8fdb\u884c\u8ba1\u7b97\uff0c\u6b64\u65f6redisObject\u7684encoding\u5b57\u6bb5\u4e3aint\u3002<\/p>\n<p>String\u5728redis\u5185\u90e8\u5b58\u50a8\u9ed8\u8ba4\u5c31\u662f\u4e00\u4e2a\u5b57\u7b26\u4e32\uff0c\u88abredisObject\u6240\u5f15\u7528\uff0c\u5f53\u9047\u5230incr,decr\u7b49\u64cd\u4f5c\u65f6\u4f1a\u8f6c\u6210\u6570\u503c\u578b\u8fdb\u884c\u8ba1\u7b97\uff0c\u6b64\u65f6redisObject\u7684encoding\u5b57\u6bb5\u4e3aint\u3002<\/p>\n<h3 id=\"\u5e94\u7528\u573a\u666f\">\u5e94\u7528\u573a\u666f<\/h3>\n<p>String\u662f\u6700\u5e38\u7528\u7684\u4e00\u79cd\u6570\u636e\u7c7b\u578b\uff0c\u666e\u901a\u7684key\/value\u5b58\u50a8\u90fd\u53ef\u4ee5\u5f52\u4e3a\u6b64\u7c7b\uff0c\u8fd9\u91cc\u5c31\u4e0d\u6240\u505a\u89e3\u91ca\u4e86\u3002<\/p>\n<h3 id=\"\u76f8\u5173\u547d\u4ee4\">\u76f8\u5173\u547d\u4ee4<\/h3>\n<pre><code class=\"hljs sql\"><span class=\"hljs-keyword\">SET<\/span> <span class=\"hljs-keyword\">key<\/span> <span class=\"hljs-keyword\">value<\/span>                   \u8bbe\u7f6e<span class=\"hljs-keyword\">key<\/span>=<span class=\"hljs-keyword\">value<\/span>\r\n<span class=\"hljs-keyword\">GET<\/span> <span class=\"hljs-keyword\">key<\/span>                         \u6216\u8005\u952e<span class=\"hljs-keyword\">key<\/span>\u5bf9\u5e94\u7684\u503c\r\nGETRANGE <span class=\"hljs-keyword\">key<\/span> <span class=\"hljs-keyword\">start<\/span> <span class=\"hljs-keyword\">end<\/span>          \u5f97\u5230\u5b57\u7b26\u4e32\u7684\u5b50\u5b57\u7b26\u4e32\u5b58\u653e\u5728\u4e00\u4e2a\u952e\r\nGETSET <span class=\"hljs-keyword\">key<\/span> <span class=\"hljs-keyword\">value<\/span>                \u8bbe\u7f6e\u952e\u7684\u5b57\u7b26\u4e32\u503c\uff0c\u5e76\u8fd4\u56de\u65e7\u503c\r\nGETBIT <span class=\"hljs-keyword\">key<\/span> <span class=\"hljs-keyword\">offset<\/span>               \u8fd4\u56de\u5b58\u50a8\u5728\u952e\u4f4d\u503c\u7684\u5b57\u7b26\u4e32\u503c\u7684\u504f\u79fb\r\nMGET key1 [key2..]              \u5f97\u5230\u6240\u6709\u7684\u7ed9\u5b9a\u952e\u7684\u503c\r\nSETBIT <span class=\"hljs-keyword\">key<\/span> <span class=\"hljs-keyword\">offset<\/span> <span class=\"hljs-keyword\">value<\/span>         \u8bbe\u7f6e\u6216\u6e05\u9664\u8be5\u4f4d\u5728\u5b58\u50a8\u5728\u952e\u7684\u5b57\u7b26\u4e32\u503c\u504f\u79fb\r\nSETEX <span class=\"hljs-keyword\">key<\/span> seconds <span class=\"hljs-keyword\">value<\/span>         \u952e\u5230\u671f\u65f6\u8bbe\u7f6e\u503c\r\nSETNX <span class=\"hljs-keyword\">key<\/span> <span class=\"hljs-keyword\">value<\/span>                 \u8bbe\u7f6e\u952e\u7684\u503c\uff0c\u53ea\u6709\u5f53\u8be5\u952e\u4e0d\u5b58\u5728\r\nSETRANGE <span class=\"hljs-keyword\">key<\/span> <span class=\"hljs-keyword\">offset<\/span> <span class=\"hljs-keyword\">value<\/span>       \u8986\u76d6\u5b57\u7b26\u4e32\u7684\u4e00\u90e8\u5206\u4ece\u6307\u5b9a\u952e\u7684\u504f\u79fb\r\nSTRLEN <span class=\"hljs-keyword\">key<\/span>                      \u5f97\u5230\u5b58\u50a8\u5728\u952e\u7684\u503c\u7684\u957f\u5ea6\r\nMSET <span class=\"hljs-keyword\">key<\/span> <span class=\"hljs-keyword\">value<\/span> [<span class=\"hljs-keyword\">key<\/span> <span class=\"hljs-keyword\">value<\/span>...]   \u8bbe\u7f6e\u591a\u4e2a\u952e\u548c\u591a\u4e2a\u503c\r\nMSETNX <span class=\"hljs-keyword\">key<\/span> <span class=\"hljs-keyword\">value<\/span> [<span class=\"hljs-keyword\">key<\/span> <span class=\"hljs-keyword\">value<\/span>...] \u8bbe\u7f6e\u591a\u4e2a\u952e\u591a\u4e2a\u503c\uff0c\u53ea\u6709\u5728\u5f53\u6ca1\u6709\u6309\u952e\u7684\u5b58\u5728\u65f6\r\nPSETEX <span class=\"hljs-keyword\">key<\/span> milliseconds <span class=\"hljs-keyword\">value<\/span>   \u8bbe\u7f6e\u952e\u7684\u6beb\u79d2\u503c\u548c\u5230\u671f\u65f6\u95f4\r\nINCR <span class=\"hljs-keyword\">key<\/span>                        \u589e\u52a0\u952e\u7684\u6574\u6570\u503c\u4e00\u6b21\r\nINCRBY <span class=\"hljs-keyword\">key<\/span> <span class=\"hljs-keyword\">increment<\/span>            \u7531\u7ed9\u5b9a\u7684\u6570\u91cf\u9012\u589e\u952e\u7684\u6574\u6570\u503c\r\nINCRBYFLOAT <span class=\"hljs-keyword\">key<\/span> <span class=\"hljs-keyword\">increment<\/span>       \u7531\u7ed9\u5b9a\u7684\u6570\u91cf\u9012\u589e\u952e\u7684\u6d6e\u70b9\u503c\r\nDECR <span class=\"hljs-keyword\">key<\/span>                        \u9012\u51cf\u952e\u4e00\u6b21\u7684\u6574\u6570\u503c\r\nDECRBY <span class=\"hljs-keyword\">key<\/span> <span class=\"hljs-keyword\">decrement<\/span>            \u7531\u7ed9\u5b9a\u6570\u76ee\u9012\u51cf\u952e\u7684\u6574\u6570\u503c\r\nAPPEND <span class=\"hljs-keyword\">key<\/span> <span class=\"hljs-keyword\">value<\/span>                \u8ffd\u52a0\u503c\u5230\u4e00\u4e2a\u952e<\/code><\/pre>\n<p>\u5176\u4e2d\u7528\u4e8e\u64cd\u4f5c\u7ba1\u7406\u952e\u7684\u547d\u4ee4\u6709\uff1a<\/p>\n<pre><code class=\"hljs vbnet\">DEL <span class=\"hljs-keyword\">key<\/span>                         \u5982\u679c\u5b58\u5728\u5220\u9664\u952e\r\nDUMP <span class=\"hljs-keyword\">key<\/span>                        \u8fd4\u56de\u5b58\u50a8\u5728\u6307\u5b9a\u952e\u7684\u503c\u7684\u5e8f\u5217\u5316\u7248\u672c\r\nEXISTS <span class=\"hljs-keyword\">key<\/span>                      \u6b64\u547d\u4ee4\u68c0\u67e5\u8be5\u952e\u662f\u5426\u5b58\u5728\r\nEXPIRE <span class=\"hljs-keyword\">key<\/span> seconds              \u6307\u5b9a\u952e\u7684\u8fc7\u671f\u65f6\u95f4\r\nEXPIREAT <span class=\"hljs-keyword\">key<\/span> timestamp          \u6307\u5b9a\u7684\u952e\u8fc7\u671f\u65f6\u95f4\u3002\u5728\u8fd9\u91cc\uff0c\u65f6\u95f4\u662f\u5728Unix\u65f6\u95f4\u6233\u683c\u5f0f\r\nPEXPIRE <span class=\"hljs-keyword\">key<\/span> milliseconds        \u8bbe\u7f6e\u952e\u4ee5\u6beb\u79d2\u4e3a\u5355\u4f4d\u5230\u671f\r\nPEXPIREAT <span class=\"hljs-keyword\">key<\/span> milliseconds-timestamp        \u8bbe\u7f6e\u952e\u5728Unix\u65f6\u95f4\u6233\u6307\u5b9a\u4e3a\u6beb\u79d2\u5230\u671f\r\nKEYS pattern                    \u67e5\u627e\u4e0e\u6307\u5b9a\u6a21\u5f0f\u5339\u914d\u7684\u6240\u6709\u952e\r\nMOVE <span class=\"hljs-keyword\">key<\/span> db                     \u79fb\u52a8\u952e\u5230\u53e6\u4e00\u4e2a\u6570\u636e\u5e93\r\nPERSIST <span class=\"hljs-keyword\">key<\/span>                     \u79fb\u9664\u8fc7\u671f\u7684\u952e\r\nPTTL <span class=\"hljs-keyword\">key<\/span>                        \u4ee5\u6beb\u79d2\u4e3a\u5355\u4f4d\u83b7\u53d6\u5269\u4f59\u65f6\u95f4\u7684\u5230\u671f\u952e\u3002\r\nTTL <span class=\"hljs-keyword\">key<\/span>                         \u83b7\u53d6\u952e\u5230\u671f\u7684\u5269\u4f59\u65f6\u95f4\u3002\r\nRANDOMKEY                       \u4eceRedis\u8fd4\u56de\u968f\u673a\u952e\r\nRENAME <span class=\"hljs-keyword\">key<\/span> newkey               \u66f4\u6539\u952e\u7684\u540d\u79f0\r\nRENAMENX <span class=\"hljs-keyword\">key<\/span> newkey             \u91cd\u547d\u540d\u952e\uff0c\u5982\u679c\u65b0\u7684\u952e\u4e0d\u5b58\u5728\r\nTYPE <span class=\"hljs-keyword\">key<\/span>                        \u8fd4\u56de\u5b58\u50a8\u5728\u952e\u7684\u6570\u636e\u7c7b\u578b\u7684\u503c\u3002<\/code><\/pre>\n<h3 id=\"\u4f7f\u7528\u793a\u4f8b\">\u4f7f\u7528\u793a\u4f8b<\/h3>\n<pre><code class=\"hljs nginx\"><span class=\"hljs-attribute\">redis<\/span> <span class=\"hljs-number\">127.0.0.1:6379<\/span>&gt; set baidu http:\/\/www.baidu\r\nOK\r\nredis <span class=\"hljs-number\">127.0.0.1:6379<\/span>&gt; append baidu .com\r\n(integer) <span class=\"hljs-number\">20<\/span>\r\nredis <span class=\"hljs-number\">127.0.0.1:6379<\/span>&gt; get baidu\r\n<span class=\"hljs-string\">\"http:\/\/www.baidu.com\"<\/span>\r\nredis <span class=\"hljs-number\">127.0.0.1:6379<\/span>&gt; set visitors <span class=\"hljs-number\">0<\/span>\r\nOK\r\nredis <span class=\"hljs-number\">127.0.0.1:6379<\/span>&gt; incr visitors\r\n(integer) <span class=\"hljs-number\">1<\/span>\r\nredis <span class=\"hljs-number\">127.0.0.1:6379<\/span>&gt; incr visitors\r\n(integer) <span class=\"hljs-number\">2<\/span>\r\nredis <span class=\"hljs-number\">127.0.0.1:6379<\/span>&gt; get visitors\r\n<span class=\"hljs-string\">\"2\"<\/span>\r\nredis <span class=\"hljs-number\">127.0.0.1:6379<\/span>&gt; incrby visitors <span class=\"hljs-number\">100<\/span>\r\n(integer) <span class=\"hljs-number\">102<\/span>\r\nredis <span class=\"hljs-number\">127.0.0.1:6379<\/span>&gt; get visitors\r\n<span class=\"hljs-string\">\"102\"<\/span>\r\nredis <span class=\"hljs-number\">127.0.0.1:6379<\/span>&gt; type baidu\r\nstring\r\nredis <span class=\"hljs-number\">127.0.0.1:6379<\/span>&gt; type visitors\r\nstring\r\nredis <span class=\"hljs-number\">127.0.0.1:6379<\/span>&gt; ttl baidu\r\n(integer) -<span class=\"hljs-number\">1<\/span>\r\nredis <span class=\"hljs-number\">127.0.0.1:6379<\/span>&gt; rename baidu baidu-site\r\nOK\r\nredis <span class=\"hljs-number\">127.0.0.1:6379<\/span>&gt; get baidu\r\n(nil)\r\nredis <span class=\"hljs-number\">127.0.0.1:6379<\/span>&gt; get baidu-site\r\n<span class=\"hljs-string\">\"http:\/\/www.baidu.com\"<\/span><\/code><\/pre>\n<h2 id=\"list\u5217\u8868\">2. List\uff08\u5217\u8868\uff09<\/h2>\n<p>Redis\u5217\u8868\u662f\u7b80\u5355\u7684\u5b57\u7b26\u4e32\u5217\u8868\uff0c\u53ef\u4ee5\u7c7b\u6bd4\u5230C++\u4e2d\u7684std::list\uff0c\u7b80\u5355\u7684\u8bf4\u5c31\u662f\u4e00\u4e2a\u94fe\u8868\u6216\u8005\u8bf4\u662f\u4e00\u4e2a\u961f\u5217\u3002\u53ef\u4ee5\u4ece\u5934\u90e8\u6216\u5c3e\u90e8\u5411Redis\u5217\u8868\u6dfb\u52a0\u5143\u7d20\u3002\u5217\u8868\u7684\u6700\u5927\u957f\u5ea6\u4e3a2^32 &#8211; 1\uff0c\u4e5f\u5373\u6bcf\u4e2a\u5217\u8868\u652f\u6301\u8d85\u8fc740\u4ebf\u4e2a\u5143\u7d20\u3002<\/p>\n<p>Redis list\u7684\u5b9e\u73b0\u4e3a\u4e00\u4e2a\u53cc\u5411\u94fe\u8868\uff0c\u5373\u53ef\u4ee5\u652f\u6301\u53cd\u5411\u67e5\u627e\u548c\u904d\u5386\uff0c\u66f4\u65b9\u4fbf\u64cd\u4f5c\uff0c\u4e0d\u8fc7\u5e26\u6765\u4e86\u90e8\u5206\u989d\u5916\u7684\u5185\u5b58\u5f00\u9500\uff0cRedis\u5185\u90e8\u7684\u5f88\u591a\u5b9e\u73b0\uff0c\u5305\u62ec\u53d1\u9001\u7f13\u51b2\u961f\u5217\u7b49\u4e5f\u90fd\u662f\u7528\u7684\u8fd9\u4e2a\u6570\u636e\u7ed3\u6784\u3002<\/p>\n<h3 id=\"\u5e94\u7528\u573a\u666f-1\">\u5e94\u7528\u573a\u666f<\/h3>\n<p>Redis list\u7684\u5e94\u7528\u573a\u666f\u975e\u5e38\u591a\uff0c\u4e5f\u662fRedis\u6700\u91cd\u8981\u7684\u6570\u636e\u7ed3\u6784\u4e4b\u4e00\uff0c\u6bd4\u5982twitter\u7684\u5173\u6ce8\u5217\u8868\u3001\u7c89\u4e1d\u5217\u8868\u7b49\u90fd\u53ef\u4ee5\u7528Redis\u7684list\u7ed3\u6784\u6765\u5b9e\u73b0\uff0c\u518d\u6bd4\u5982\u6709\u7684\u5e94\u7528\u4f7f\u7528Redis\u7684list\u7c7b\u578b\u5b9e\u73b0\u4e00\u4e2a\u7b80\u5355\u7684\u8f7b\u91cf\u7ea7\u6d88\u606f\u961f\u5217\uff0c\u751f\u4ea7\u8005push\uff0c\u6d88\u8d39\u8005pop\/bpop\u3002<\/p>\n<h3 id=\"\u76f8\u5173\u547d\u4ee4-1\">\u76f8\u5173\u547d\u4ee4<\/h3>\n<ul>\n<li>BLPOP<br \/>\nBLPOP key1 [key2 ] timeout \u53d6\u51fa\u5e76\u83b7\u53d6\u5217\u8868\u4e2d\u7684\u7b2c\u4e00\u4e2a\u5143\u7d20\uff0c\u6216\u963b\u585e\uff0c\u76f4\u5230\u6709\u53ef\u7528<\/li>\n<li>BRPOP<br \/>\nBRPOP key1 [key2 ] timeout \u53d6\u51fa\u5e76\u83b7\u53d6\u5217\u8868\u4e2d\u7684\u6700\u540e\u4e00\u4e2a\u5143\u7d20\uff0c\u6216\u963b\u585e\uff0c\u76f4\u5230\u6709\u53ef\u7528<\/li>\n<li>BRPOPLPUSH<br \/>\nBRPOPLPUSH source destination timeout \u4ece\u5217\u8868\u4e2d\u5f39\u51fa\u4e00\u4e2a\u503c\uff0c\u5b83\u63a8\u5230\u53e6\u4e00\u4e2a\u5217\u8868\u5e76\u8fd4\u56de\u5b83;\u6216\u963b\u585e\uff0c\u76f4\u5230\u6709\u53ef\u7528<\/li>\n<li>LINDEX<br \/>\nLINDEX key index \u4ece\u4e00\u4e2a\u5217\u8868\u5176\u7d22\u5f15\u83b7\u53d6\u5bf9\u5e94\u7684\u5143\u7d20<\/li>\n<li>LINSERT<br \/>\nLINSERT key BEFORE|AFTER pivot value \u5728\u5217\u8868\u4e2d\u7684\u5176\u4ed6\u5143\u7d20\u4e4b\u540e\u6216\u4e4b\u524d\u63d2\u5165\u4e00\u4e2a\u5143\u7d20<\/li>\n<li>LLEN<br \/>\nLLEN key \u83b7\u53d6\u5217\u8868\u7684\u957f\u5ea6<\/li>\n<li>LPOP<br \/>\nLPOP key \u83b7\u53d6\u5e76\u53d6\u51fa\u5217\u8868\u4e2d\u7684\u7b2c\u4e00\u4e2a\u5143\u7d20<\/li>\n<li>LPUSH<br \/>\nLPUSH key value1 [value2] \u5728\u524d\u9762\u52a0\u4e0a\u4e00\u4e2a\u6216\u591a\u4e2a\u503c\u7684\u5217\u8868<\/li>\n<li>LPUSHX<br \/>\nLPUSHX key value \u5728\u524d\u9762\u52a0\u4e0a\u4e00\u4e2a\u503c\u5217\u8868\uff0c\u4ec5\u5f53\u5217\u8868\u4e2d\u5b58\u5728<\/li>\n<li>LRANGE<br \/>\nLRANGE key start stop \u4ece\u4e00\u4e2a\u5217\u8868\u83b7\u53d6\u5404\u79cd\u5143\u7d20<\/li>\n<li>LREM<br \/>\nLREM key count value \u4ece\u5217\u8868\u4e2d\u5220\u9664\u5143\u7d20<\/li>\n<li>LSET<br \/>\nLSET key index value \u5728\u5217\u8868\u4e2d\u7684\u7d22\u5f15\u8bbe\u7f6e\u4e00\u4e2a\u5143\u7d20\u7684\u503c<\/li>\n<li>LTRIM<br \/>\nLTRIM key start stop \u4fee\u526a\u5217\u8868\u5230\u6307\u5b9a\u7684\u8303\u56f4\u5185<\/li>\n<li>RPOP<br \/>\nRPOP key \u53d6\u51fa\u5e76\u83b7\u53d6\u5217\u8868\u4e2d\u7684\u6700\u540e\u4e00\u4e2a\u5143\u7d20<\/li>\n<li>RPOPLPUSH<br \/>\nRPOPLPUSH source destination \u5220\u9664\u6700\u540e\u4e00\u4e2a\u5143\u7d20\u7684\u5217\u8868\uff0c\u5c06\u5176\u9644\u52a0\u5230\u53e6\u4e00\u4e2a\u5217\u8868\u5e76\u8fd4\u56de\u5b83<\/li>\n<li>RPUSH<br \/>\nRPUSH key value1 [value2] \u6dfb\u52a0\u4e00\u4e2a\u6216\u591a\u4e2a\u503c\u5230\u5217\u8868<\/li>\n<li>RPUSHX<br \/>\nRPUSHX key value \u6dfb\u52a0\u4e00\u4e2a\u503c\u5217\u8868\uff0c\u4ec5\u5f53\u5217\u8868\u4e2d\u5b58\u5728<\/li>\n<\/ul>\n<h3 id=\"\u4f7f\u7528\u793a\u4f8b-1\">\u4f7f\u7528\u793a\u4f8b<\/h3>\n<pre><code class=\"hljs css\"><span class=\"hljs-selector-tag\">redis<\/span> 127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">lpush<\/span> <span class=\"hljs-selector-tag\">list1<\/span> <span class=\"hljs-selector-tag\">redis<\/span>\r\n(<span class=\"hljs-selector-tag\">integer<\/span>) 1\r\n<span class=\"hljs-selector-tag\">redis<\/span> 127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">lpush<\/span> <span class=\"hljs-selector-tag\">list1<\/span> <span class=\"hljs-selector-tag\">hello<\/span>\r\n(<span class=\"hljs-selector-tag\">integer<\/span>) 2\r\n<span class=\"hljs-selector-tag\">redis<\/span> 127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">rpush<\/span> <span class=\"hljs-selector-tag\">list1<\/span> <span class=\"hljs-selector-tag\">world<\/span>\r\n(<span class=\"hljs-selector-tag\">integer<\/span>) 3\r\n<span class=\"hljs-selector-tag\">redis<\/span> 127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">llen<\/span> <span class=\"hljs-selector-tag\">list1<\/span>\r\n(<span class=\"hljs-selector-tag\">integer<\/span>) 3\r\n<span class=\"hljs-selector-tag\">redis<\/span> 127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">lrange<\/span> <span class=\"hljs-selector-tag\">list1<\/span> 0 3\r\n1) \"<span class=\"hljs-selector-tag\">hello<\/span>\"\r\n2) \"<span class=\"hljs-selector-tag\">redis<\/span>\"\r\n3) \"<span class=\"hljs-selector-tag\">world<\/span>\"\r\n<span class=\"hljs-selector-tag\">redis<\/span> 127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">lpop<\/span> <span class=\"hljs-selector-tag\">list1<\/span>\r\n\"<span class=\"hljs-selector-tag\">hello<\/span>\"\r\n<span class=\"hljs-selector-tag\">redis<\/span> 127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">rpop<\/span> <span class=\"hljs-selector-tag\">list1<\/span>\r\n\"<span class=\"hljs-selector-tag\">world<\/span>\"\r\n<span class=\"hljs-selector-tag\">redis<\/span> 127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">lrange<\/span> <span class=\"hljs-selector-tag\">list1<\/span> 0 3\r\n1) \"<span class=\"hljs-selector-tag\">redis<\/span>\"<\/code><\/pre>\n<h2 id=\"hash\u5b57\u5178\u54c8\u5e0c\u8868\">3. Hash\uff08\u5b57\u5178\uff0c\u54c8\u5e0c\u8868\uff09<\/h2>\n<p>\u7c7b\u4f3cC#\u4e2d\u7684dict\u7c7b\u578b\u6216\u8005C++\u4e2d\u7684hash_map\u7c7b\u578b\u3002<\/p>\n<p>Redis Hash\u5bf9\u5e94Value\u5185\u90e8\u5b9e\u9645\u5c31\u662f\u4e00\u4e2aHashMap\uff0c\u5b9e\u9645\u8fd9\u91cc\u4f1a\u67092\u79cd\u4e0d\u540c\u5b9e\u73b0\uff0c\u8fd9\u4e2aHash\u7684\u6210\u5458\u6bd4\u8f83\u5c11\u65f6Redis\u4e3a\u4e86\u8282\u7701\u5185\u5b58\u4f1a\u91c7\u7528\u7c7b\u4f3c\u4e00\u7ef4\u6570\u7ec4\u7684\u65b9\u5f0f\u6765\u7d27\u51d1\u5b58\u50a8\uff0c\u800c\u4e0d\u4f1a\u91c7\u7528\u771f\u6b63\u7684HashMap\u7ed3\u6784\uff0c\u5bf9\u5e94\u7684value redisObject\u7684encoding\u4e3azipmap,\u5f53\u6210\u5458\u6570\u91cf\u589e\u5927\u65f6\u4f1a\u81ea\u52a8\u8f6c\u6210\u771f\u6b63\u7684HashMap,\u6b64\u65f6encoding\u4e3aht\u3002<\/p>\n<h3 id=\"\u5e94\u7528\u573a\u666f-2\">\u5e94\u7528\u573a\u666f<\/h3>\n<p>\u5047\u8bbe\u6709\u591a\u4e2a\u7528\u6237\u53ca\u5bf9\u5e94\u7684\u7528\u6237\u4fe1\u606f\uff0c\u53ef\u4ee5\u7528\u6765\u5b58\u50a8\u4ee5\u7528\u6237ID\u4e3akey\uff0c\u5c06\u7528\u6237\u4fe1\u606f\u5e8f\u5217\u5316\u4e3a\u6bd4\u5982json\u683c\u5f0f\u505a\u4e3avalue\u8fdb\u884c\u4fdd\u5b58\u3002<\/p>\n<h3 id=\"\u76f8\u5173\u547d\u4ee4-2\">\u76f8\u5173\u547d\u4ee4<\/h3>\n<ul>\n<li>HDEL<br \/>\nHDEL key field[field&#8230;] \u5220\u9664\u5bf9\u8c61\u7684\u4e00\u4e2a\u6216\u51e0\u4e2a\u5c5e\u6027\u57df\uff0c\u4e0d\u5b58\u5728\u7684\u5c5e\u6027\u5c06\u88ab\u5ffd\u7565<\/li>\n<li>HEXISTS<br \/>\nHEXISTS key field \u67e5\u770b\u5bf9\u8c61\u662f\u5426\u5b58\u5728\u8be5\u5c5e\u6027\u57df<\/li>\n<li>HGET<br \/>\nHGET key field \u83b7\u53d6\u5bf9\u8c61\u4e2d\u8be5field\u5c5e\u6027\u57df\u7684\u503c<\/li>\n<li>HGETALL<br \/>\nHGETALL key \u83b7\u53d6\u5bf9\u8c61\u7684\u6240\u6709\u5c5e\u6027\u57df\u548c\u503c<\/li>\n<li>HINCRBY<br \/>\nHINCRBY key field value \u5c06\u8be5\u5bf9\u8c61\u4e2d\u6307\u5b9a\u57df\u7684\u503c\u589e\u52a0\u7ed9\u5b9a\u7684value\uff0c\u539f\u5b50\u81ea\u589e\u64cd\u4f5c\uff0c\u53ea\u80fd\u662finteger\u7684\u5c5e\u6027\u503c\u53ef\u4ee5\u4f7f\u7528<\/li>\n<li>HINCRBYFLOAT<br \/>\nHINCRBYFLOAT key field increment \u5c06\u8be5\u5bf9\u8c61\u4e2d\u6307\u5b9a\u57df\u7684\u503c\u589e\u52a0\u7ed9\u5b9a\u7684\u6d6e\u70b9\u6570<\/li>\n<li>HKEYS<br \/>\nHKEYS key \u83b7\u53d6\u5bf9\u8c61\u7684\u6240\u6709\u5c5e\u6027\u5b57\u6bb5<\/li>\n<li>HVALS<br \/>\nHVALS key \u83b7\u53d6\u5bf9\u8c61\u7684\u6240\u6709\u5c5e\u6027\u503c<\/li>\n<li>HLEN<br \/>\nHLEN key \u83b7\u53d6\u5bf9\u8c61\u7684\u6240\u6709\u5c5e\u6027\u5b57\u6bb5\u7684\u603b\u6570<\/li>\n<li>HMGET<br \/>\nHMGET key field[field&#8230;] \u83b7\u53d6\u5bf9\u8c61\u7684\u4e00\u4e2a\u6216\u591a\u4e2a\u6307\u5b9a\u5b57\u6bb5\u7684\u503c<\/li>\n<li>HSET<br \/>\nHSET key field value \u8bbe\u7f6e\u5bf9\u8c61\u6307\u5b9a\u5b57\u6bb5\u7684\u503c<\/li>\n<li>HMSET<br \/>\nHMSET key field value [field value &#8230;] \u540c\u65f6\u8bbe\u7f6e\u5bf9\u8c61\u4e2d\u4e00\u4e2a\u6216\u591a\u4e2a\u5b57\u6bb5\u7684\u503c<\/li>\n<li>HSETNX<br \/>\nHSETNX key field value \u53ea\u5728\u5bf9\u8c61\u4e0d\u5b58\u5728\u6307\u5b9a\u7684\u5b57\u6bb5\u65f6\u624d\u8bbe\u7f6e\u5b57\u6bb5\u7684\u503c<\/li>\n<li>HSTRLEN<br \/>\nHSTRLEN key field \u8fd4\u56de\u5bf9\u8c61\u6307\u5b9afield\u7684value\u7684\u5b57\u7b26\u4e32\u957f\u5ea6\uff0c\u5982\u679c\u8be5\u5bf9\u8c61\u6216\u8005field\u4e0d\u5b58\u5728\uff0c\u8fd4\u56de0.<\/li>\n<li>HSCAN<br \/>\nHSCAN key cursor [MATCH pattern] [COUNT count] \u7c7b\u4f3cSCAN\u547d\u4ee4<\/li>\n<\/ul>\n<h3 id=\"\u4f7f\u7528\u793a\u4f8b-2\">\u4f7f\u7528\u793a\u4f8b<\/h3>\n<pre><code class=\"hljs css\">127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">hset<\/span> <span class=\"hljs-selector-tag\">person<\/span> <span class=\"hljs-selector-tag\">name<\/span> <span class=\"hljs-selector-tag\">jack<\/span>\r\n(<span class=\"hljs-selector-tag\">integer<\/span>) 1\r\n127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">hset<\/span> <span class=\"hljs-selector-tag\">person<\/span> <span class=\"hljs-selector-tag\">age<\/span> 20\r\n(<span class=\"hljs-selector-tag\">integer<\/span>) 1\r\n127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">hset<\/span> <span class=\"hljs-selector-tag\">person<\/span> <span class=\"hljs-selector-tag\">sex<\/span> <span class=\"hljs-selector-tag\">famale<\/span>\r\n(<span class=\"hljs-selector-tag\">integer<\/span>) 1\r\n127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">hgetall<\/span> <span class=\"hljs-selector-tag\">person<\/span>\r\n1) \"<span class=\"hljs-selector-tag\">name<\/span>\"\r\n2) \"<span class=\"hljs-selector-tag\">jack<\/span>\"\r\n3) \"<span class=\"hljs-selector-tag\">age<\/span>\"\r\n4) \"20\"\r\n5) \"<span class=\"hljs-selector-tag\">sex<\/span>\"\r\n6) \"<span class=\"hljs-selector-tag\">famale<\/span>\"\r\n127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">hkeys<\/span> <span class=\"hljs-selector-tag\">person<\/span>\r\n1) \"<span class=\"hljs-selector-tag\">name<\/span>\"\r\n2) \"<span class=\"hljs-selector-tag\">age<\/span>\"\r\n3) \"<span class=\"hljs-selector-tag\">sex<\/span>\"\r\n127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">hvals<\/span> <span class=\"hljs-selector-tag\">person<\/span>\r\n1) \"<span class=\"hljs-selector-tag\">jack<\/span>\"\r\n2) \"20\"\r\n3) \"<span class=\"hljs-selector-tag\">famale<\/span>\"<\/code><\/pre>\n<h2 id=\"set\u96c6\u5408\">4. Set\uff08\u96c6\u5408\uff09<\/h2>\n<p>\u53ef\u4ee5\u7406\u89e3\u4e3a\u4e00\u5806\u503c\u4e0d\u91cd\u590d\u7684\u5217\u8868\uff0c\u7c7b\u4f3c\u6570\u5b66\u9886\u57df\u4e2d\u7684\u96c6\u5408\u6982\u5ff5\uff0c\u4e14Redis\u4e5f\u63d0\u4f9b\u4e86\u9488\u5bf9\u96c6\u5408\u7684\u6c42\u4ea4\u96c6\u3001\u5e76\u96c6\u3001\u5dee\u96c6\u7b49\u64cd\u4f5c\u3002<\/p>\n<p>set \u7684\u5185\u90e8\u5b9e\u73b0\u662f\u4e00\u4e2a value\u6c38\u8fdc\u4e3anull\u7684HashMap\uff0c\u5b9e\u9645\u5c31\u662f\u901a\u8fc7\u8ba1\u7b97hash\u7684\u65b9\u5f0f\u6765\u5feb\u901f\u6392\u91cd\u7684\uff0c\u8fd9\u4e5f\u662fset\u80fd\u63d0\u4f9b\u5224\u65ad\u4e00\u4e2a\u6210\u5458\u662f\u5426\u5728\u96c6\u5408\u5185\u7684\u539f\u56e0\u3002<\/p>\n<h3 id=\"\u5e94\u7528\u573a\u666f-3\">\u5e94\u7528\u573a\u666f<\/h3>\n<p>Redis set\u5bf9\u5916\u63d0\u4f9b\u7684\u529f\u80fd\u4e0elist\u7c7b\u4f3c\u662f\u4e00\u4e2a\u5217\u8868\u7684\u529f\u80fd\uff0c\u7279\u6b8a\u4e4b\u5904\u5728\u4e8eset\u662f\u53ef\u4ee5\u81ea\u52a8\u6392\u91cd\u7684\uff0c\u5f53\u4f60\u9700\u8981\u5b58\u50a8\u4e00\u4e2a\u5217\u8868\u6570\u636e\uff0c\u53c8\u4e0d\u5e0c\u671b\u51fa\u73b0\u91cd\u590d\u6570\u636e\u65f6\uff0cset\u662f\u4e00\u4e2a\u5f88\u597d\u7684\u9009\u62e9\uff0c\u5e76\u4e14set\u63d0\u4f9b\u4e86\u5224\u65ad\u67d0\u4e2a\u6210\u5458\u662f\u5426\u5728\u4e00\u4e2aset\u96c6\u5408\u5185\u7684\u91cd\u8981\u63a5\u53e3\uff0c\u8fd9\u4e2a\u4e5f\u662flist\u6240\u4e0d\u80fd\u63d0\u4f9b\u7684\u3002<\/p>\n<p>\u53c8\u6216\u8005\u5728\u5fae\u535a\u5e94\u7528\u4e2d\uff0c\u6bcf\u4e2a\u7528\u6237\u5173\u6ce8\u7684\u4eba\u5b58\u5728\u4e00\u4e2a\u96c6\u5408\u4e2d\uff0c\u5c31\u5f88\u5bb9\u6613\u5b9e\u73b0\u6c42\u4e24\u4e2a\u4eba\u7684\u5171\u540c\u597d\u53cb\u529f\u80fd\u3002<\/p>\n<h3 id=\"\u76f8\u5173\u547d\u4ee4-3\">\u76f8\u5173\u547d\u4ee4<\/h3>\n<ul>\n<li>SADD<br \/>\nSADD key member [member &#8230;] \u6dfb\u52a0\u4e00\u4e2a\u6216\u8005\u591a\u4e2a\u5143\u7d20\u5230\u96c6\u5408(set)\u91cc<\/li>\n<li>SACRD<br \/>\nSCARD key \u83b7\u53d6\u96c6\u5408\u91cc\u9762\u7684\u5143\u7d20\u6570\u91cf<\/li>\n<li>SDIFF<br \/>\nSDIFF key [key &#8230;] \u83b7\u5f97\u961f\u5217\u4e0d\u5b58\u5728\u7684\u5143\u7d20<\/li>\n<li>SDIFFSTORE<br \/>\nSDIFFSTORE destination key [key &#8230;] \u83b7\u5f97\u961f\u5217\u4e0d\u5b58\u5728\u7684\u5143\u7d20\uff0c\u5e76\u5b58\u50a8\u5728\u4e00\u4e2a\u5173\u952e\u7684\u7ed3\u679c\u96c6<\/li>\n<li>SINTER<br \/>\nSINTER key [key &#8230;] \u83b7\u5f97\u4e24\u4e2a\u96c6\u5408\u7684\u4ea4\u96c6<\/li>\n<li>SINTERSTORE<br \/>\nSINTERSTORE destination key [key &#8230;] \u83b7\u5f97\u4e24\u4e2a\u96c6\u5408\u7684\u4ea4\u96c6\uff0c\u5e76\u5b58\u50a8\u5728\u4e00\u4e2a\u96c6\u5408\u4e2d<\/li>\n<li>SISMEMBER<br \/>\nSISMEMBER key member \u786e\u5b9a\u4e00\u4e2a\u7ed9\u5b9a\u7684\u503c\u662f\u4e00\u4e2a\u96c6\u5408\u7684\u6210\u5458<\/li>\n<li>SMEMBERS<br \/>\nSMEMBERS key \u83b7\u53d6\u96c6\u5408\u91cc\u9762\u7684\u6240\u6709key<\/li>\n<li>SMOVE<br \/>\nSMOVE source destination member \u79fb\u52a8\u96c6\u5408\u91cc\u9762\u7684\u4e00\u4e2akey\u5230\u53e6\u4e00\u4e2a\u96c6\u5408<\/li>\n<li>SPOP<br \/>\nSPOP key [count] \u83b7\u53d6\u5e76\u5220\u9664\u4e00\u4e2a\u96c6\u5408\u91cc\u9762\u7684\u5143\u7d20<\/li>\n<li>SRANDMEMBER<br \/>\nSRANDMEMBER key [count] \u4ece\u96c6\u5408\u91cc\u9762\u968f\u673a\u83b7\u53d6\u4e00\u4e2a\u5143\u7d20<\/li>\n<li>SREM<br \/>\nSREM key member [member &#8230;] \u4ece\u96c6\u5408\u91cc\u5220\u9664\u4e00\u4e2a\u6216\u591a\u4e2a\u5143\u7d20\uff0c\u4e0d\u5b58\u5728\u7684\u5143\u7d20\u4f1a\u88ab\u5ffd\u7565<\/li>\n<li>SUNION<br \/>\nSUNION key [key &#8230;] \u6dfb\u52a0\u591a\u4e2aset\u5143\u7d20<\/li>\n<li>SUNIONSTORE<br \/>\nSUNIONSTORE destination key [key &#8230;] \u5408\u5e76set\u5143\u7d20\uff0c\u5e76\u5c06\u7ed3\u679c\u5b58\u5165\u65b0\u7684set\u91cc\u9762<\/li>\n<li>SSCAN<br \/>\nSSCAN key cursor [MATCH pattern] [COUNT count] \u8fed\u4ee3set\u91cc\u9762\u7684\u5143\u7d20<\/li>\n<\/ul>\n<h3 id=\"\u4f7f\u7528\u793a\u4f8b-3\">\u4f7f\u7528\u793a\u4f8b<\/h3>\n<pre><code class=\"hljs bash\">redis&gt; SADD myset <span class=\"hljs-string\">\"Hello\"<\/span>\r\n(<span class=\"hljs-built_in\">integer<\/span>) 1\r\nredis&gt; SADD myset <span class=\"hljs-string\">\"World\"<\/span>\r\n(<span class=\"hljs-built_in\">integer<\/span>) 1\r\nredis&gt; SMEMBERS myset\r\n1) <span class=\"hljs-string\">\"World\"<\/span>\r\n2) <span class=\"hljs-string\">\"Hello\"<\/span>\r\nredis&gt; SADD myset <span class=\"hljs-string\">\"one\"<\/span>\r\n(<span class=\"hljs-built_in\">integer<\/span>) 1\r\nredis&gt; SISMEMBER myset <span class=\"hljs-string\">\"one\"<\/span>\r\n(<span class=\"hljs-built_in\">integer<\/span>) 1\r\nredis&gt; SISMEMBER myset <span class=\"hljs-string\">\"two\"<\/span>\r\n(<span class=\"hljs-built_in\">integer<\/span>) 0<\/code><\/pre>\n<p>\u4f7f\u7528\u96c6\u5408\u6570\u636e\u7ed3\u6784\u7684\u5178\u578b\u7528\u4f8b\u662f\u670b\u53cb\u540d\u5355\u7684\u5b9e\u73b0\uff1a<\/p>\n<pre><code class=\"hljs css\"><span class=\"hljs-selector-tag\">redis<\/span> 127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">sadd<\/span> <span class=\"hljs-selector-tag\">friends<\/span><span class=\"hljs-selector-pseudo\">:leto<\/span> <span class=\"hljs-selector-tag\">ghanima<\/span> <span class=\"hljs-selector-tag\">paul<\/span> <span class=\"hljs-selector-tag\">chani<\/span> <span class=\"hljs-selector-tag\">jessica<\/span>\r\n(<span class=\"hljs-selector-tag\">integer<\/span>) 4\r\n<span class=\"hljs-selector-tag\">redis<\/span> 127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">sadd<\/span> <span class=\"hljs-selector-tag\">friends<\/span><span class=\"hljs-selector-pseudo\">:duncan<\/span> <span class=\"hljs-selector-tag\">paul<\/span> <span class=\"hljs-selector-tag\">jessica<\/span> <span class=\"hljs-selector-tag\">alia<\/span>\r\n(<span class=\"hljs-selector-tag\">integer<\/span>) 3\r\n<span class=\"hljs-selector-tag\">redis<\/span> 127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">sismember<\/span> <span class=\"hljs-selector-tag\">friends<\/span><span class=\"hljs-selector-pseudo\">:leto<\/span> <span class=\"hljs-selector-tag\">jessica<\/span>\r\n(<span class=\"hljs-selector-tag\">integer<\/span>) 1   #\u4e0d\u7ba1\u4e00\u4e2a\u7528\u6237\u6709\u591a\u5c11\u4e2a\u670b\u53cb\uff0c\u6211\u4eec\u90fd\u80fd\u9ad8\u6548\u5730\uff08<span class=\"hljs-selector-tag\">O<\/span>(1)\u65f6\u95f4\u590d\u6742\u5ea6\uff09\u8bc6\u522b\u51fa\u7528\u6237<span class=\"hljs-selector-tag\">X<\/span>\u662f\u4e0d\u662f\u7528\u6237<span class=\"hljs-selector-tag\">Y<\/span>\u7684\u670b\u53cb\r\n<span class=\"hljs-selector-tag\">redis<\/span> 127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">sismember<\/span> <span class=\"hljs-selector-tag\">friends<\/span><span class=\"hljs-selector-pseudo\">:leto<\/span> <span class=\"hljs-selector-tag\">vladimir<\/span>\r\n(<span class=\"hljs-selector-tag\">integer<\/span>) 0\r\n<span class=\"hljs-selector-tag\">redis<\/span> 127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">sinter<\/span> <span class=\"hljs-selector-tag\">friends<\/span><span class=\"hljs-selector-pseudo\">:leto<\/span> <span class=\"hljs-selector-tag\">friends<\/span><span class=\"hljs-selector-pseudo\">:duncan<\/span>    #\u6211\u4eec\u53ef\u4ee5\u67e5\u770b\u4e24\u4e2a\u6216\u66f4\u591a\u7684\u4eba\u662f\u4e0d\u662f\u6709\u5171\u540c\u7684\u670b\u53cb\r\n1) \"<span class=\"hljs-selector-tag\">paul<\/span>\"\r\n2) \"<span class=\"hljs-selector-tag\">jessica<\/span>\"\r\n<span class=\"hljs-selector-tag\">redis<\/span> 127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">sinterstore<\/span> <span class=\"hljs-selector-tag\">friends<\/span><span class=\"hljs-selector-pseudo\">:leto_duncan<\/span> <span class=\"hljs-selector-tag\">friends<\/span><span class=\"hljs-selector-pseudo\">:leto<\/span> <span class=\"hljs-selector-tag\">friends<\/span><span class=\"hljs-selector-pseudo\">:duncan<\/span> # \u53ef\u4ee5\u5728\u4e00\u4e2a\u65b0\u7684\u5173\u952e\u5b57\u91cc\u5b58\u50a8\u7ed3\u679c\r\n(<span class=\"hljs-selector-tag\">integer<\/span>) 2<\/code><\/pre>\n<h2 id=\"sorted-set\u6709\u5e8f\u96c6\u5408\">5. Sorted Set\uff08\u6709\u5e8f\u96c6\u5408\uff09<\/h2>\n<p>Redis\u6709\u5e8f\u96c6\u5408\u7c7b\u4f3cRedis\u96c6\u5408\uff0c\u4e0d\u540c\u7684\u662f\u589e\u52a0\u4e86\u4e00\u4e2a\u529f\u80fd\uff0c\u5373\u96c6\u5408\u662f\u6709\u5e8f\u7684\u3002\u4e00\u4e2a\u6709\u5e8f\u96c6\u5408\u7684\u6bcf\u4e2a\u6210\u5458\u5e26\u6709\u5206\u6570\uff0c\u7528\u4e8e\u8fdb\u884c\u6392\u5e8f\u3002<\/p>\n<p>Redis\u6709\u5e8f\u96c6\u5408\u6dfb\u52a0\u3001\u5220\u9664\u548c\u6d4b\u8bd5\u7684\u65f6\u95f4\u590d\u6742\u5ea6\u5747\u4e3aO(1)(\u56fa\u5b9a\u65f6\u95f4\uff0c\u65e0\u8bba\u91cc\u9762\u5305\u542b\u7684\u5143\u7d20\u96c6\u5408\u7684\u6570\u91cf)\u3002\u5217\u8868\u7684\u6700\u5927\u957f\u5ea6\u4e3a2^32- 1\u5143\u7d20(4294967295\uff0c\u8d85\u8fc740\u4ebf\u6bcf\u4e2a\u5143\u7d20\u7684\u96c6\u5408)\u3002<\/p>\n<p>Redis sorted set\u7684\u5185\u90e8\u4f7f\u7528HashMap\u548c\u8df3\u8dc3\u8868(SkipList)\u6765\u4fdd\u8bc1\u6570\u636e\u7684\u5b58\u50a8\u548c\u6709\u5e8f\uff0cHashMap\u91cc\u653e\u7684\u662f\u6210\u5458\u5230score\u7684\u6620\u5c04\uff0c\u800c\u8df3\u8dc3\u8868\u91cc\u5b58\u653e\u7684\u662f\u6240\u6709\u7684\u6210\u5458\uff0c\u6392\u5e8f\u4f9d\u636e\u662fHashMap\u91cc\u5b58\u7684score,\u4f7f\u7528\u8df3\u8dc3\u8868\u7684\u7ed3\u6784\u53ef\u4ee5\u83b7\u5f97\u6bd4\u8f83\u9ad8\u7684\u67e5\u627e\u6548\u7387\uff0c\u5e76\u4e14\u5728\u5b9e\u73b0\u4e0a\u6bd4\u8f83\u7b80\u5355\u3002<\/p>\n<h3 id=\"\u4f7f\u7528\u573a\u666f\">\u4f7f\u7528\u573a\u666f<\/h3>\n<p>Redis sorted set\u7684\u4f7f\u7528\u573a\u666f\u4e0eset\u7c7b\u4f3c\uff0c\u533a\u522b\u662fset\u4e0d\u662f\u81ea\u52a8\u6709\u5e8f\u7684\uff0c\u800csorted set\u53ef\u4ee5\u901a\u8fc7\u7528\u6237\u989d\u5916\u63d0\u4f9b\u4e00\u4e2a\u4f18\u5148\u7ea7(score)\u7684\u53c2\u6570\u6765\u4e3a\u6210\u5458\u6392\u5e8f\uff0c\u5e76\u4e14\u662f\u63d2\u5165\u6709\u5e8f\u7684\uff0c\u5373\u81ea\u52a8\u6392\u5e8f\u3002\u5f53\u4f60\u9700\u8981\u4e00\u4e2a\u6709\u5e8f\u7684\u5e76\u4e14\u4e0d\u91cd\u590d\u7684\u96c6\u5408\u5217\u8868\uff0c\u90a3\u4e48\u53ef\u4ee5\u9009\u62e9sorted set\u6570\u636e\u7ed3\u6784\uff0c\u6bd4\u5982twitter \u7684public timeline\u53ef\u4ee5\u4ee5\u53d1\u8868\u65f6\u95f4\u4f5c\u4e3ascore\u6765\u5b58\u50a8\uff0c\u8fd9\u6837\u83b7\u53d6\u65f6\u5c31\u662f\u81ea\u52a8\u6309\u65f6\u95f4\u6392\u597d\u5e8f\u7684\u3002<\/p>\n<p>\u53c8\u6bd4\u5982\u7528\u6237\u7684\u79ef\u5206\u6392\u884c\u699c\u9700\u6c42\u5c31\u53ef\u4ee5\u901a\u8fc7\u6709\u5e8f\u96c6\u5408\u5b9e\u73b0\u3002\u8fd8\u6709\u4e0a\u9762\u4ecb\u7ecd\u7684\u4f7f\u7528List\u5b9e\u73b0\u8f7b\u91cf\u7ea7\u7684\u6d88\u606f\u961f\u5217\uff0c\u5176\u5b9e\u4e5f\u53ef\u4ee5\u901a\u8fc7Sorted Set\u5b9e\u73b0\u6709\u4f18\u5148\u7ea7\u6216\u6309\u6743\u91cd\u7684\u961f\u5217\u3002<\/p>\n<h3 id=\"\u76f8\u5173\u547d\u4ee4-4\">\u76f8\u5173\u547d\u4ee4<\/h3>\n<ul>\n<li>ZADD<br \/>\nZADD key score1 member1 [score2 member2] \u6dfb\u52a0\u4e00\u4e2a\u6216\u591a\u4e2a\u6210\u5458\u5230\u6709\u5e8f\u96c6\u5408\uff0c\u6216\u8005\u5982\u679c\u5b83\u5df2\u7ecf\u5b58\u5728\u66f4\u65b0\u5176\u5206\u6570<\/li>\n<li>ZCARD<br \/>\nZCARD key \u5f97\u5230\u7684\u6709\u5e8f\u96c6\u5408\u6210\u5458\u7684\u6570\u91cf<\/li>\n<li>ZCOUNT<br \/>\nZCOUNT key min max \u8ba1\u7b97\u4e00\u4e2a\u6709\u5e8f\u96c6\u5408\u6210\u5458\u4e0e\u7ed9\u5b9a\u503c\u8303\u56f4\u5185\u7684\u5206\u6570<\/li>\n<li>ZINCRBY<br \/>\nZINCRBY key increment member \u5728\u6709\u5e8f\u96c6\u5408\u589e\u52a0\u6210\u5458\u7684\u5206\u6570<\/li>\n<li>ZINTERSTORE<br \/>\nZINTERSTORE destination numkeys key [key &#8230;] \u591a\u91cd\u4ea4\u53c9\u6392\u5e8f\u96c6\u5408\uff0c\u5e76\u5b58\u50a8\u751f\u6210\u4e00\u4e2a\u65b0\u7684\u952e\u6709\u5e8f\u96c6\u5408\u3002<\/li>\n<li>ZLEXCOUNT<br \/>\nZLEXCOUNT key min max \u8ba1\u7b97\u4e00\u4e2a\u7ed9\u5b9a\u7684\u5b57\u5178\u8303\u56f4\u4e4b\u95f4\u7684\u6709\u5e8f\u96c6\u5408\u6210\u5458\u7684\u6570\u91cf<\/li>\n<li>ZRANGE<br \/>\nZRANGE key start stop [WITHSCORES] \u7531\u7d22\u5f15\u8fd4\u56de\u4e00\u4e2a\u6210\u5458\u8303\u56f4\u7684\u6709\u5e8f\u96c6\u5408\uff08\u4ece\u4f4e\u5230\u9ad8\uff09<\/li>\n<li>ZRANGEBYLEX<br \/>\nZRANGEBYLEX key min max [LIMIT offset count]\u8fd4\u56de\u4e00\u4e2a\u6210\u5458\u8303\u56f4\u7684\u6709\u5e8f\u96c6\u5408\uff08\u7531\u5b57\u5178\u8303\u56f4\uff09<\/li>\n<li>ZRANGEBYSCORE<br \/>\nZRANGEBYSCORE key min max [WITHSCORES] [LIMIT] \u8fd4\u56de\u6709\u5e8f\u96c6key\u4e2d\uff0c\u6240\u6709 score \u503c\u4ecb\u4e8e min \u548c max \u4e4b\u95f4(\u5305\u62ec\u7b49\u4e8e min \u6216 max )\u7684\u6210\u5458\uff0c\u6709\u5e8f\u96c6\u6210\u5458\u6309 score \u503c\u9012\u589e(\u4ece\u5c0f\u5230\u5927)\u6b21\u5e8f\u6392\u5217<\/li>\n<li>ZRANK<br \/>\nZRANK key member \u786e\u5b9a\u6210\u5458\u7684\u7d22\u5f15\u4e2d\u6709\u5e8f\u96c6\u5408<\/li>\n<li>ZREM<br \/>\nZREM key member [member &#8230;] \u4ece\u6709\u5e8f\u96c6\u5408\u4e2d\u5220\u9664\u4e00\u4e2a\u6216\u591a\u4e2a\u6210\u5458\uff0c\u4e0d\u5b58\u5728\u7684\u6210\u5458\u5c06\u88ab\u5ffd\u7565<\/li>\n<li>ZREMRANGEBYLEX<br \/>\nZREMRANGEBYLEX key min max \u5220\u9664\u6240\u6709\u6210\u5458\u5728\u7ed9\u5b9a\u7684\u5b57\u5178\u8303\u56f4\u4e4b\u95f4\u7684\u6709\u5e8f\u96c6\u5408<\/li>\n<li>ZREMRANGEBYRANK<br \/>\nZREMRANGEBYRANK key start stop \u5728\u7ed9\u5b9a\u7684\u7d22\u5f15\u4e4b\u5185\u5220\u9664\u6240\u6709\u6210\u5458\u7684\u6709\u5e8f\u96c6\u5408<\/li>\n<li>ZREMRANGEBYSCORE<br \/>\nZREMRANGEBYSCORE key min max \u5728\u7ed9\u5b9a\u7684\u5206\u6570\u4e4b\u5185\u5220\u9664\u6240\u6709\u6210\u5458\u7684\u6709\u5e8f\u96c6\u5408<\/li>\n<li>ZREVRANGE<br \/>\nZREVRANGE key start stop [WITHSCORES] \u8fd4\u56de\u4e00\u4e2a\u6210\u5458\u8303\u56f4\u7684\u6709\u5e8f\u96c6\u5408\uff0c\u901a\u8fc7\u7d22\u5f15\uff0c\u4ee5\u5206\u6570\u6392\u5e8f\uff0c\u4ece\u9ad8\u5206\u5230\u4f4e\u5206<\/li>\n<li>ZREVRANGEBYSCORE<br \/>\nZREVRANGEBYSCORE key max min [WITHSCORES] \u8fd4\u56de\u4e00\u4e2a\u6210\u5458\u8303\u56f4\u7684\u6709\u5e8f\u96c6\u5408\uff0c\u4ee5socre\u6392\u5e8f\u4ece\u9ad8\u5230\u4f4e<\/li>\n<li>ZREVRANK<br \/>\nZREVRANK key member \u786e\u5b9a\u4e00\u4e2a\u6709\u5e8f\u96c6\u5408\u6210\u5458\u7684\u7d22\u5f15\uff0c\u4ee5\u5206\u6570\u6392\u5e8f\uff0c\u4ece\u9ad8\u5206\u5230\u4f4e\u5206<\/li>\n<li>ZSCORE<br \/>\nZSCORE key member \u83b7\u53d6\u7ed9\u5b9a\u6210\u5458\u76f8\u5173\u8054\u7684\u5206\u6570\u5728\u4e00\u4e2a\u6709\u5e8f\u96c6\u5408<\/li>\n<li>ZUNIONSTORE<br \/>\nZUNIONSTORE destination numkeys key [key &#8230;] \u6dfb\u52a0\u591a\u4e2a\u96c6\u6392\u5e8f\uff0c\u6240\u5f97\u6392\u5e8f\u96c6\u5408\u5b58\u50a8\u5728\u4e00\u4e2a\u65b0\u7684\u952e<\/li>\n<li>ZSCAN<br \/>\nZSCAN key cursor [MATCH pattern] [COUNT count] \u589e\u91cf\u8fed\u4ee3\u6392\u5e8f\u5143\u7d20\u96c6\u548c\u76f8\u5173\u7684\u5206\u6570<\/li>\n<\/ul>\n<h4 id=\"\u4f7f\u7528\u793a\u4f8b-4\">\u4f7f\u7528\u793a\u4f8b<\/h4>\n<pre><code class=\"hljs css\"><span class=\"hljs-selector-tag\">redis<\/span> 127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">zadd<\/span> <span class=\"hljs-selector-tag\">dbs<\/span> 100 <span class=\"hljs-selector-tag\">redis<\/span>\r\n(<span class=\"hljs-selector-tag\">integer<\/span>) 1\r\n<span class=\"hljs-selector-tag\">redis<\/span> 127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">zadd<\/span> <span class=\"hljs-selector-tag\">dbs<\/span> 98 <span class=\"hljs-selector-tag\">memcached<\/span>\r\n(<span class=\"hljs-selector-tag\">integer<\/span>) 1\r\n<span class=\"hljs-selector-tag\">redis<\/span> 127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">zadd<\/span> <span class=\"hljs-selector-tag\">dbs<\/span> 99 <span class=\"hljs-selector-tag\">mongodb<\/span>\r\n(<span class=\"hljs-selector-tag\">integer<\/span>) 1\r\n<span class=\"hljs-selector-tag\">redis<\/span> 127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">zadd<\/span> <span class=\"hljs-selector-tag\">dbs<\/span> 99 <span class=\"hljs-selector-tag\">leveldb<\/span>\r\n(<span class=\"hljs-selector-tag\">integer<\/span>) 1\r\n<span class=\"hljs-selector-tag\">redis<\/span> 127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">zcard<\/span> <span class=\"hljs-selector-tag\">dbs<\/span>\r\n(<span class=\"hljs-selector-tag\">integer<\/span>) 4\r\n<span class=\"hljs-selector-tag\">redis<\/span> 127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">zcount<\/span> <span class=\"hljs-selector-tag\">dbs<\/span> 10 99\r\n(<span class=\"hljs-selector-tag\">integer<\/span>) 3\r\n<span class=\"hljs-selector-tag\">redis<\/span> 127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">zrank<\/span> <span class=\"hljs-selector-tag\">dbs<\/span> <span class=\"hljs-selector-tag\">leveldb<\/span>\r\n(<span class=\"hljs-selector-tag\">integer<\/span>) 1\r\n<span class=\"hljs-selector-tag\">redis<\/span> 127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">zrank<\/span> <span class=\"hljs-selector-tag\">dbs<\/span> <span class=\"hljs-selector-tag\">other<\/span>\r\n(<span class=\"hljs-selector-tag\">nil<\/span>)\r\n<span class=\"hljs-selector-tag\">redis<\/span> 127<span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.0<\/span><span class=\"hljs-selector-class\">.1<\/span><span class=\"hljs-selector-pseudo\">:6379<\/span>&gt; <span class=\"hljs-selector-tag\">zrangebyscore<\/span> <span class=\"hljs-selector-tag\">dbs<\/span> 98 100\r\n1) \"<span class=\"hljs-selector-tag\">memcached<\/span>\"\r\n2) \"<span class=\"hljs-selector-tag\">leveldb<\/span>\"\r\n3) \"<span class=\"hljs-selector-tag\">mongodb<\/span>\"\r\n4) \"<span class=\"hljs-selector-tag\">redis<\/span>\"<\/code><\/pre>\n<h2 id=\"reference\">Reference<\/h2>\n<ul>\n<li><a class=\"uri\" href=\"http:\/\/redis.io\/commands\">http:\/\/redis.io\/commands<\/a><\/li>\n<li><a class=\"uri\" href=\"http:\/\/www.redis.cn\/commands.html\">http:\/\/www.redis.cn\/commands.html<\/a><\/li>\n<\/ul>\n","protected":false},"excerpt":{"rendered":"<p>Redis\u76ee\u524d\u652f\u63015\u79cd\u6570\u636e\u7c7b\u578b\uff0c\u5206\u522b\u662f\uff1a String\uff08\u5b57\u7b26\u4e32\uff09 List\uff08\u5217\u8868\uff09 Hash\uff08\u5b57\u5178\uff09 Set\uff08 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[4],"tags":[],"class_list":["post-1249","post","type-post","status-publish","format-standard","hentry","category-linux"],"_links":{"self":[{"href":"https:\/\/www.kumouse.com\/index.php?rest_route=\/wp\/v2\/posts\/1249","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kumouse.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kumouse.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kumouse.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kumouse.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1249"}],"version-history":[{"count":1,"href":"https:\/\/www.kumouse.com\/index.php?rest_route=\/wp\/v2\/posts\/1249\/revisions"}],"predecessor-version":[{"id":1250,"href":"https:\/\/www.kumouse.com\/index.php?rest_route=\/wp\/v2\/posts\/1249\/revisions\/1250"}],"wp:attachment":[{"href":"https:\/\/www.kumouse.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1249"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kumouse.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1249"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kumouse.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1249"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}