{"id":260,"date":"2023-02-24T06:16:27","date_gmt":"2023-02-23T22:16:27","guid":{"rendered":"https:\/\/www.appblog.cn\/?p=260"},"modified":"2023-02-24T06:16:35","modified_gmt":"2023-02-23T22:16:35","slug":"redis-sorted-set","status":"publish","type":"post","link":"https:\/\/www.appblog.cn\/index.php\/2023\/02\/24\/redis-sorted-set\/","title":{"rendered":"Redis \u6709\u5e8f\u96c6\u5408(sorted set)"},"content":{"rendered":"<h2>Redis \u6709\u5e8f\u96c6\u5408(sorted set)<\/h2>\n<ul>\n<li>Redis \u6709\u5e8f\u96c6\u5408\u548c\u96c6\u5408\u4e00\u6837\u4e5f\u662f string \u7c7b\u578b\u5143\u7d20\u7684\u96c6\u5408\uff0c\u4e14\u4e0d\u5141\u8bb8\u91cd\u590d\u7684\u6210\u5458<\/li>\n<li>\u4e0d\u540c\u7684\u662f\u6bcf\u4e2a\u5143\u7d20\u90fd\u4f1a\u5173\u8054\u4e00\u4e2a double \u7c7b\u578b\u7684\u5206\u6570\u3002Redis \u6b63\u662f\u901a\u8fc7\u5206\u6570\u6765\u4e3a\u96c6\u5408\u4e2d\u7684\u6210\u5458\u8fdb\u884c\u4ece\u5c0f\u5230\u5927\u7684\u6392\u5e8f<\/li>\n<li>\u6709\u5e8f\u96c6\u5408\u7684\u6210\u5458\u662f\u552f\u4e00\u7684\uff0c\u4f46\u5206\u6570(score)\u5374\u53ef\u4ee5\u91cd\u590d<\/li>\n<li>\u96c6\u5408\u662f\u901a\u8fc7\u54c8\u5e0c\u8868\u5b9e\u73b0\u7684\uff0c\u6240\u4ee5\u6dfb\u52a0\u3001\u5220\u9664\u3001\u67e5\u627e\u7684\u590d\u6742\u5ea6\u90fd\u662f O(1)\u3002\u96c6\u5408\u4e2d\u6700\u5927\u7684\u6210\u5458\u6570\u4e3a 2^32 &#8211; 1 (4294967295, \u6bcf\u4e2a\u96c6\u5408\u53ef\u5b58\u50a840\u591a\u4ebf\u4e2a\u6210\u5458)<\/li>\n<\/ul>\n<p><!-- more --><\/p>\n<p><strong>\u5b9e\u4f8b<\/strong><\/p>\n<pre><code class=\"language-bash\">redis 127.0.0.1:6379&gt; ZADD appblog 1 redis\n(integer) 1\nredis 127.0.0.1:6379&gt; ZADD appblog 2 mongodb\n(integer) 1\nredis 127.0.0.1:6379&gt; ZADD appblog 3 mysql\n(integer) 1\nredis 127.0.0.1:6379&gt; ZADD appblog 3 mysql\n(integer) 0\nredis 127.0.0.1:6379&gt; ZADD appblog 4 mysql\n(integer) 0\nredis 127.0.0.1:6379&gt; ZRANGE appblog 0 10 WITHSCORES\n\n1) &quot;redis&quot;\n2) &quot;1&quot;\n3) &quot;mongodb&quot;\n4) &quot;2&quot;\n5) &quot;mysql&quot;\n6) &quot;4&quot;<\/code><\/pre>\n<p>\u5728\u4ee5\u4e0a\u5b9e\u4f8b\u4e2d\u6211\u4eec\u901a\u8fc7\u547d\u4ee4 ZADD \u5411 Redis \u7684\u6709\u5e8f\u96c6\u5408\u4e2d\u6dfb\u52a0\u4e86\u4e09\u4e2a\u503c\u5e76\u5173\u8054\u4e0a\u5206\u6570\u3002<\/p>\n<h2>Redis \u6709\u5e8f\u96c6\u5408\u547d\u4ee4<\/h2>\n<h3>ZADD key score1 member1 [score2 member2]<\/h3>\n<p>\u5411\u6709\u5e8f\u96c6\u5408\u6dfb\u52a0\u4e00\u4e2a\u6216\u591a\u4e2a\u6210\u5458\uff0c\u6216\u8005\u66f4\u65b0\u5df2\u5b58\u5728\u6210\u5458\u7684\u5206\u6570<\/p>\n<ul>\n<li>Zadd \u547d\u4ee4\u7528\u4e8e\u5c06\u4e00\u4e2a\u6216\u591a\u4e2a\u6210\u5458\u5143\u7d20\u53ca\u5176\u5206\u6570\u503c\u52a0\u5165\u5230\u6709\u5e8f\u96c6\u5f53\u4e2d<\/li>\n<li>\u5982\u679c\u67d0\u4e2a\u6210\u5458\u5df2\u7ecf\u662f\u6709\u5e8f\u96c6\u7684\u6210\u5458\uff0c\u90a3\u4e48\u66f4\u65b0\u8fd9\u4e2a\u6210\u5458\u7684\u5206\u6570\u503c\uff0c\u5e76\u901a\u8fc7\u91cd\u65b0\u63d2\u5165\u8fd9\u4e2a\u6210\u5458\u5143\u7d20\uff0c\u6765\u4fdd\u8bc1\u8be5\u6210\u5458\u5728\u6b63\u786e\u7684\u4f4d\u7f6e\u4e0a<\/li>\n<li>\u5206\u6570\u503c\u53ef\u4ee5\u662f\u6574\u6570\u503c\u6216\u53cc\u7cbe\u5ea6\u6d6e\u70b9\u6570<\/li>\n<li>\u5982\u679c\u6709\u5e8f\u96c6\u5408 key \u4e0d\u5b58\u5728\uff0c\u5219\u521b\u5efa\u4e00\u4e2a\u7a7a\u7684\u6709\u5e8f\u96c6\u5e76\u6267\u884c ZADD \u64cd\u4f5c<\/li>\n<li>\u5f53 key \u5b58\u5728\u4f46\u4e0d\u662f\u6709\u5e8f\u96c6\u7c7b\u578b\u65f6\uff0c\u8fd4\u56de\u4e00\u4e2a\u9519\u8bef<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">redis&gt; ZADD myzset 1 &quot;one&quot;\n(integer) 1\nredis&gt; ZADD myzset 1 &quot;uno&quot;\n(integer) 1\nredis&gt; ZADD myzset 2 &quot;two&quot; 3 &quot;three&quot;\n(integer) 2\nredis&gt; ZRANGE myzset 0 -1 WITHSCORES\n1) &quot;one&quot;\n2) &quot;1&quot;\n3) &quot;uno&quot;\n4) &quot;1&quot;\n5) &quot;two&quot;\n6) &quot;2&quot;\n7) &quot;three&quot;\n8) &quot;3&quot;\nredis&gt; <\/code><\/pre>\n<h3>ZCARD key<\/h3>\n<p>\u83b7\u53d6\u6709\u5e8f\u96c6\u5408\u7684\u6210\u5458\u6570<\/p>\n<pre><code class=\"language-bash\">redis&gt; ZADD myzset 1 &quot;one&quot;\n(integer) 1\nredis&gt; ZADD myzset 2 &quot;two&quot;\n(integer) 1\nredis&gt; ZCARD myzset\n(integer) 2\nredis&gt; <\/code><\/pre>\n<h3>ZCOUNT key min max<\/h3>\n<p>\u8ba1\u7b97\u5728\u6709\u5e8f\u96c6\u5408\u4e2d\u6307\u5b9a\u533a\u95f4\u5206\u6570\u7684\u6210\u5458\u6570<\/p>\n<pre><code class=\"language-bash\">redis 127.0.0.1:6379&gt; ZADD myzset 1 &quot;hello&quot;\n(integer) 1\nredis 127.0.0.1:6379&gt; ZADD myzset 1 &quot;foo&quot;\n(integer) 1\nredis 127.0.0.1:6379&gt; ZADD myzset 2 &quot;world&quot; 3 &quot;bar&quot;\n(integer) 2\nredis 127.0.0.1:6379&gt; ZCOUNT myzset 1 3\n(integer) 4<\/code><\/pre>\n<h3>ZINCRBY key increment member<\/h3>\n<p>\u6709\u5e8f\u96c6\u5408\u4e2d\u5bf9\u6307\u5b9a\u6210\u5458\u7684\u5206\u6570\u52a0\u4e0a\u589e\u91cf increment<\/p>\n<ul>\n<li>\u53ef\u4ee5\u901a\u8fc7\u4f20\u9012\u4e00\u4e2a\u8d1f\u6570\u503c increment\uff0c\u8ba9\u5206\u6570\u51cf\u53bb\u76f8\u5e94\u7684\u503c\uff0c\u6bd4\u5982<code>ZINCRBY key -5 member<\/code>\uff0c\u5c31\u662f\u8ba9 member \u7684 score \u503c\u51cf\u53bb 5<\/li>\n<li>\u5f53 key \u4e0d\u5b58\u5728\uff0c<code>ZINCRBY key increment member<\/code>\u7b49\u540c\u4e8e<code>ZADD key increment member<\/code><\/li>\n<li>\u5f53 key \u4e0d\u662f\u6709\u5e8f\u96c6\u7c7b\u578b\u65f6\uff0c\u8fd4\u56de\u4e00\u4e2a\u9519\u8bef<\/li>\n<li>\u5206\u6570\u503c\u53ef\u4ee5\u662f\u6574\u6570\u503c\u6216\u53cc\u7cbe\u5ea6\u6d6e\u70b9\u6570<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">redis&gt; ZADD myzset 1 &quot;one&quot;\n(integer) 1\nredis&gt; ZADD myzset 2 &quot;two&quot;\n(integer) 1\nredis&gt; ZINCRBY myzset 2 &quot;one&quot;\n&quot;3&quot;\nredis&gt; ZRANGE myzset 0 -1 WITHSCORES\n1) &quot;two&quot;\n2) &quot;2&quot;\n3) &quot;one&quot;\n4) &quot;3&quot;\nredis&gt; <\/code><\/pre>\n<h3>ZINTERSTORE destination numkeys key [key &#8230;]<\/h3>\n<p>\u8ba1\u7b97\u7ed9\u5b9a\u7684\u4e00\u4e2a\u6216\u591a\u4e2a\u6709\u5e8f\u96c6\u7684\u4ea4\u96c6\u5e76\u5c06\u7ed3\u679c\u96c6\u5b58\u50a8\u5728\u65b0\u7684\u6709\u5e8f\u96c6\u5408 destination \u4e2d<\/p>\n<ul>\n<li>\u5176\u4e2d\u7ed9\u5b9a key \u7684\u6570\u91cf\u5fc5\u987b\u4ee5 numkeys \u53c2\u6570\u6307\u5b9a\uff0c\u5e76\u5c06\u8be5\u4ea4\u96c6(\u7ed3\u679c\u96c6)\u50a8\u5b58\u5230 destination<\/li>\n<li>\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u7ed3\u679c\u96c6\u4e2d\u67d0\u4e2a\u6210\u5458\u7684\u5206\u6570\u503c\u662f\u6240\u6709\u7ed9\u5b9a\u96c6\u4e0b\u8be5\u6210\u5458\u5206\u6570\u503c\u4e4b\u548c<\/li>\n<\/ul>\n<p><strong>\u8bed\u6cd5<\/strong><\/p>\n<pre><code class=\"language-bash\">ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]<\/code><\/pre>\n<pre><code class=\"language-bash\"># \u6709\u5e8f\u96c6 mid_test\nredis 127.0.0.1:6379&gt; ZADD mid_test 70 &quot;Li Lei&quot;\n(integer) 1\nredis 127.0.0.1:6379&gt; ZADD mid_test 70 &quot;Han Meimei&quot;\n(integer) 1\nredis 127.0.0.1:6379&gt; ZADD mid_test 99.5 &quot;Tom&quot;\n(integer) 1\n\n# \u53e6\u4e00\u4e2a\u6709\u5e8f\u96c6 fin_test\nredis 127.0.0.1:6379&gt; ZADD fin_test 88 &quot;Li Lei&quot;\n(integer) 1\nredis 127.0.0.1:6379&gt; ZADD fin_test 75 &quot;Han Meimei&quot;\n(integer) 1\nredis 127.0.0.1:6379&gt; ZADD fin_test 99.5 &quot;Tom&quot;\n(integer) 1\n\n# \u4ea4\u96c6\nredis 127.0.0.1:6379&gt; ZINTERSTORE sum_point 2 mid_test fin_test\n(integer) 3\n\n# \u663e\u793a\u6709\u5e8f\u96c6\u5185\u6240\u6709\u6210\u5458\u53ca\u5176\u5206\u6570\u503c\nredis 127.0.0.1:6379&gt; ZRANGE sum_point 0 -1 WITHSCORES     \n1) &quot;Han Meimei&quot;\n2) &quot;145&quot;\n3) &quot;Li Lei&quot;\n4) &quot;158&quot;\n5) &quot;Tom&quot;\n6) &quot;199&quot;<\/code><\/pre>\n<h3>ZLEXCOUNT key min max<\/h3>\n<p>\u5728\u6709\u5e8f\u96c6\u5408\u4e2d\u8ba1\u7b97\u6307\u5b9a\u5b57\u5178\u533a\u95f4\u5185\u6210\u5458\u6570\u91cf<\/p>\n<pre><code class=\"language-bash\">redis 127.0.0.1:6379&gt; ZADD myzset 0 a 0 b 0 c 0 d 0 e\n(integer) 5\nredis 127.0.0.1:6379&gt; ZADD myzset 0 f 0 g\n(integer) 2\nredis 127.0.0.1:6379&gt; ZLEXCOUNT myzset - +\n(integer) 7\nredis 127.0.0.1:6379&gt; ZLEXCOUNT myzset [b [f\n(integer) 5<\/code><\/pre>\n<h3>ZRANGE key start stop [WITHSCORES]<\/h3>\n<p>\u901a\u8fc7\u7d22\u5f15\u533a\u95f4\u8fd4\u56de\u6709\u5e8f\u96c6\u5408\u6307\u5b9a\u533a\u95f4\u5185\u7684\u6210\u5458<\/p>\n<ul>\n<li>\u5176\u4e2d\u6210\u5458\u7684\u4f4d\u7f6e\u6309\u5206\u6570\u503c\u9012\u589e(\u4ece\u5c0f\u5230\u5927)\u6765\u6392\u5e8f<\/li>\n<li>\u5177\u6709\u76f8\u540c\u5206\u6570\u503c\u7684\u6210\u5458\u6309\u5b57\u5178\u5e8f(lexicographical order )\u6765\u6392\u5217<\/li>\n<li>\u5982\u679c\u4f60\u9700\u8981\u6210\u5458\u6309\u5206\u6570\u503c\u9012\u51cf(\u4ece\u5927\u5230\u5c0f)\u6765\u6392\u5217\uff0c\u8bf7\u4f7f\u7528 ZREVRANGE \u547d\u4ee4<\/li>\n<li>\u4e0b\u6807\u53c2\u6570 start \u548c stop \u90fd\u4ee5 0 \u4e3a\u5e95\uff0c\u4e5f\u5c31\u662f\u8bf4\uff0c\u4ee5 0 \u8868\u793a\u6709\u5e8f\u96c6\u7b2c\u4e00\u4e2a\u6210\u5458\uff0c\u4ee5 1 \u8868\u793a\u6709\u5e8f\u96c6\u7b2c\u4e8c\u4e2a\u6210\u5458\uff0c\u4ee5\u6b64\u7c7b\u63a8<\/li>\n<li>\u4e5f\u53ef\u4ee5\u4f7f\u7528\u8d1f\u6570\u4e0b\u6807\uff0c\u4ee5 -1 \u8868\u793a\u6700\u540e\u4e00\u4e2a\u6210\u5458\uff0c -2 \u8868\u793a\u5012\u6570\u7b2c\u4e8c\u4e2a\u6210\u5458\uff0c\u4ee5\u6b64\u7c7b\u63a8<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">redis 127.0.0.1:6379&gt; ZRANGE salary 0 -1 WITHSCORES         # \u663e\u793a\u6574\u4e2a\u6709\u5e8f\u96c6\u6210\u5458\n1) &quot;jack&quot;\n2) &quot;3500&quot;\n3) &quot;tom&quot;\n4) &quot;5000&quot;\n5) &quot;boss&quot;\n6) &quot;10086&quot;\n\nredis 127.0.0.1:6379&gt; ZRANGE salary 1 2 WITHSCORES          # \u663e\u793a\u6709\u5e8f\u96c6\u4e0b\u6807\u533a\u95f4 1 \u81f3 2 \u7684\u6210\u5458\n1) &quot;tom&quot;\n2) &quot;5000&quot;\n3) &quot;boss&quot;\n4) &quot;10086&quot;\n\nredis 127.0.0.1:6379&gt; ZRANGE salary 0 200000 WITHSCORES     # \u6d4b\u8bd5 end \u4e0b\u6807\u8d85\u51fa\u6700\u5927\u4e0b\u6807\u65f6\u7684\u60c5\u51b5\n1) &quot;jack&quot;\n2) &quot;3500&quot;\n3) &quot;tom&quot;\n4) &quot;5000&quot;\n5) &quot;boss&quot;\n6) &quot;10086&quot;\n\nredis &gt; ZRANGE salary 200000 3000000 WITHSCORES              # \u6d4b\u8bd5\u5f53\u7ed9\u5b9a\u533a\u95f4\u4e0d\u5b58\u5728\u4e8e\u6709\u5e8f\u96c6\u65f6\u7684\u60c5\u51b5\n(empty list or set)<\/code><\/pre>\n<h3>ZRANGEBYLEX key min max [LIMIT offset count]<\/h3>\n<p>\u901a\u8fc7\u5b57\u5178\u533a\u95f4\u8fd4\u56de\u6709\u5e8f\u96c6\u5408\u7684\u6210\u5458<\/p>\n<pre><code class=\"language-bash\">redis 127.0.0.1:6379&gt; ZADD myzset 0 a 0 b 0 c 0 d 0 e 0 f 0 g\n(integer) 7\nredis 127.0.0.1:6379&gt; ZRANGEBYLEX myzset - [c\n1) &quot;a&quot;\n2) &quot;b&quot;\n3) &quot;c&quot;\nredis 127.0.0.1:6379&gt; ZRANGEBYLEX myzset - (c\n1) &quot;a&quot;\n2) &quot;b&quot;\nredis 127.0.0.1:6379&gt; ZRANGEBYLEX myzset [aaa (g\n1) &quot;b&quot;\n2) &quot;c&quot;\n3) &quot;d&quot;\n4) &quot;e&quot;\n5) &quot;f&quot;\nredis&gt; <\/code><\/pre>\n<h3>ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]<\/h3>\n<p>\u901a\u8fc7\u5206\u6570\u8fd4\u56de\u6709\u5e8f\u96c6\u5408\u6307\u5b9a\u533a\u95f4\u5185\u7684\u6210\u5458<\/p>\n<ul>\n<li>\u6709\u5e8f\u96c6\u6210\u5458\u6309\u5206\u6570\u503c\u9012\u589e(\u4ece\u5c0f\u5230\u5927)\u6b21\u5e8f\u6392\u5217<\/li>\n<li>\u5177\u6709\u76f8\u540c\u5206\u6570\u503c\u7684\u6210\u5458\u6309\u5b57\u5178\u5e8f\u6765\u6392\u5217(\u8be5\u5c5e\u6027\u662f\u6709\u5e8f\u96c6\u63d0\u4f9b\u7684\uff0c\u4e0d\u9700\u8981\u989d\u5916\u7684\u8ba1\u7b97)<\/li>\n<li>\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u533a\u95f4\u7684\u53d6\u503c\u4f7f\u7528\u95ed\u533a\u95f4 (\u5c0f\u4e8e\u7b49\u4e8e\u6216\u5927\u4e8e\u7b49\u4e8e)\uff0c\u4e5f\u53ef\u4ee5\u901a\u8fc7\u7ed9\u53c2\u6570\u524d\u589e\u52a0 ( \u7b26\u53f7\u6765\u4f7f\u7528\u53ef\u9009\u7684\u5f00\u533a\u95f4 (\u5c0f\u4e8e\u6216\u5927\u4e8e)<\/li>\n<\/ul>\n<p><strong>\u4e3e\u4f8b<\/strong><\/p>\n<pre><code class=\"language-bash\">ZRANGEBYSCORE zset (1 5<\/code><\/pre>\n<p>\u8fd4\u56de\u6240\u6709\u7b26\u5408\u6761\u4ef6 1 &lt; score &lt;= 5 \u7684\u6210\u5458\uff0c\u800c<\/p>\n<pre><code class=\"language-bash\">ZRANGEBYSCORE zset (5 (10<\/code><\/pre>\n<p>\u5219\u8fd4\u56de\u6240\u6709\u7b26\u5408\u6761\u4ef6 5 &lt; score &lt; 10 \u7684\u6210\u5458<\/p>\n<p><strong>\u8bed\u6cd5<\/strong><\/p>\n<pre><code class=\"language-bash\">ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count]<\/code><\/pre>\n<pre><code class=\"language-bash\">redis 127.0.0.1:6379&gt; ZADD salary 2500 jack                        # \u6d4b\u8bd5\u6570\u636e\n(integer) 0\nredis 127.0.0.1:6379&gt; ZADD salary 5000 tom\n(integer) 0\nredis 127.0.0.1:6379&gt; ZADD salary 12000 peter\n(integer) 0\n\nredis 127.0.0.1:6379&gt; ZRANGEBYSCORE salary -inf +inf               # \u663e\u793a\u6574\u4e2a\u6709\u5e8f\u96c6\n1) &quot;jack&quot;\n2) &quot;tom&quot;\n3) &quot;peter&quot;\n\nredis 127.0.0.1:6379&gt; ZRANGEBYSCORE salary -inf +inf WITHSCORES    # \u663e\u793a\u6574\u4e2a\u6709\u5e8f\u96c6\u53ca\u6210\u5458\u7684 score \u503c\n1) &quot;jack&quot;\n2) &quot;2500&quot;\n3) &quot;tom&quot;\n4) &quot;5000&quot;\n5) &quot;peter&quot;\n6) &quot;12000&quot;\n\nredis 127.0.0.1:6379&gt; ZRANGEBYSCORE salary -inf 5000 WITHSCORES    # \u663e\u793a\u5de5\u8d44 &lt;=5000 \u7684\u6240\u6709\u6210\u5458\n1) &quot;jack&quot;\n2) &quot;2500&quot;\n3) &quot;tom&quot;\n4) &quot;5000&quot;\n\nredis 127.0.0.1:6379&gt; ZRANGEBYSCORE salary (5000 400000            # \u663e\u793a\u5de5\u8d44\u5927\u4e8e 5000 \u5c0f\u4e8e\u7b49\u4e8e 400000 \u7684\u6210\u5458\n1) &quot;peter&quot;<\/code><\/pre>\n<h3>ZRANK key member<\/h3>\n<p>\u8fd4\u56de\u6709\u5e8f\u96c6\u5408\u4e2d\u6307\u5b9a\u6210\u5458\u7684\u7d22\u5f15\uff08\u6392\u540d\uff09\u3002\u5176\u4e2d\u6709\u5e8f\u96c6\u6210\u5458\u6309\u5206\u6570\u503c\u9012\u589e(\u4ece\u5c0f\u5230\u5927)\u987a\u5e8f\u6392\u5217<\/p>\n<pre><code class=\"language-bash\">redis 127.0.0.1:6379&gt; ZRANGE salary 0 -1 WITHSCORES        # \u663e\u793a\u6240\u6709\u6210\u5458\u53ca\u5176 score \u503c\n1) &quot;peter&quot;\n2) &quot;3500&quot;\n3) &quot;tom&quot;\n4) &quot;4000&quot;\n5) &quot;jack&quot;\n6) &quot;5000&quot;\n\nredis 127.0.0.1:6379&gt; ZRANK salary tom                     # \u663e\u793a tom \u7684\u85aa\u6c34\u6392\u540d\uff0c\u7b2c\u4e8c\n(integer) 1<\/code><\/pre>\n<h3>ZREM key member [member &#8230;]<\/h3>\n<p>\u79fb\u9664\u6709\u5e8f\u96c6\u5408\u4e2d\u7684\u4e00\u4e2a\u6216\u591a\u4e2a\u6210\u5458\u3002\u4e0d\u5b58\u5728\u7684\u6210\u5458\u5c06\u88ab\u5ffd\u7565\u3002\u5f53 key \u5b58\u5728\u4f46\u4e0d\u662f\u6709\u5e8f\u96c6\u7c7b\u578b\u65f6\uff0c\u8fd4\u56de\u4e00\u4e2a\u9519\u8bef\u3002<\/p>\n<pre><code class=\"language-bash\"># \u6d4b\u8bd5\u6570\u636e\n\nredis 127.0.0.1:6379&gt; ZRANGE page_rank 0 -1 WITHSCORES\n1) &quot;bing.com&quot;\n2) &quot;8&quot;\n3) &quot;baidu.com&quot;\n4) &quot;9&quot;\n5) &quot;google.com&quot;\n6) &quot;10&quot;\n\n# \u79fb\u9664\u5355\u4e2a\u5143\u7d20\n\nredis 127.0.0.1:6379&gt; ZREM page_rank google.com\n(integer) 1\n\nredis 127.0.0.1:6379&gt; ZRANGE page_rank 0 -1 WITHSCORES\n1) &quot;bing.com&quot;\n2) &quot;8&quot;\n3) &quot;baidu.com&quot;\n4) &quot;9&quot;\n\n# \u79fb\u9664\u591a\u4e2a\u5143\u7d20\n\nredis 127.0.0.1:6379&gt; ZREM page_rank baidu.com bing.com\n(integer) 2\n\nredis 127.0.0.1:6379&gt; ZRANGE page_rank 0 -1 WITHSCORES\n(empty list or set)\n\n# \u79fb\u9664\u4e0d\u5b58\u5728\u5143\u7d20\n\nredis 127.0.0.1:6379&gt; ZREM page_rank non-exists-element\n(integer) 0<\/code><\/pre>\n<h3>ZREMRANGEBYLEX key min max<\/h3>\n<p>\u79fb\u9664\u6709\u5e8f\u96c6\u5408\u4e2d\u7ed9\u5b9a\u7684\u5b57\u5178\u533a\u95f4\u7684\u6240\u6709\u6210\u5458<\/p>\n<pre><code class=\"language-bash\">redis 127.0.0.1:6379&gt; ZADD myzset 0 aaaa 0 b 0 c 0 d 0 e\n(integer) 5\nredis 127.0.0.1:6379&gt; ZADD myzset 0 foo 0 zap 0 zip 0 ALPHA 0 alpha\n(integer) 5\nredis 127.0.0.1:6379&gt; ZRANGE myzset 0 -1\n 1) &quot;ALPHA&quot;\n 2) &quot;aaaa&quot;\n 3) &quot;alpha&quot;\n 4) &quot;b&quot;\n 5) &quot;c&quot;\n 6) &quot;d&quot;\n 7) &quot;e&quot;\n 8) &quot;foo&quot;\n 9) &quot;zap&quot;\n10) &quot;zip&quot;\nredis 127.0.0.1:6379&gt; ZREMRANGEBYLEX myzset [alpha [omega\n(integer) 6\nredis 127.0.0.1:6379&gt; ZRANGE myzset 0 -1\n1) &quot;ALPHA&quot;\n2) &quot;aaaa&quot;\n3) &quot;zap&quot;\n4) &quot;zip&quot;\nredis&gt; <\/code><\/pre>\n<h3>ZREMRANGEBYRANK key start stop<\/h3>\n<p>\u79fb\u9664\u6709\u5e8f\u96c6\u5408\u4e2d\u7ed9\u5b9a\u7684\u6392\u540d\u533a\u95f4\u7684\u6240\u6709\u6210\u5458<\/p>\n<pre><code class=\"language-bash\">redis 127.0.0.1:6379&gt; ZADD salary 2000 jack\n(integer) 1\nredis 127.0.0.1:6379&gt; ZADD salary 5000 tom\n(integer) 1\nredis 127.0.0.1:6379&gt; ZADD salary 3500 peter\n(integer) 1\n\nredis 127.0.0.1:6379&gt; ZREMRANGEBYRANK salary 0 1       # \u79fb\u9664\u4e0b\u6807 0 \u81f3 1 \u533a\u95f4\u5185\u7684\u6210\u5458\n(integer) 2\n\nredis 127.0.0.1:6379&gt; ZRANGE salary 0 -1 WITHSCORES    # \u6709\u5e8f\u96c6\u53ea\u5269\u4e0b\u4e00\u4e2a\u6210\u5458\n1) &quot;tom&quot;\n2) &quot;5000&quot;<\/code><\/pre>\n<h3>ZREMRANGEBYSCORE key min max<\/h3>\n<p>\u79fb\u9664\u6709\u5e8f\u96c6\u5408\u4e2d\u7ed9\u5b9a\u7684\u5206\u6570\u533a\u95f4\u7684\u6240\u6709\u6210\u5458<\/p>\n<pre><code class=\"language-bash\">redis 127.0.0.1:6379&gt; ZRANGE salary 0 -1 WITHSCORES      # \u663e\u793a\u6709\u5e8f\u96c6\u5185\u6240\u6709\u6210\u5458\u53ca\u5176 score \u503c\n1) &quot;tom&quot;\n2) &quot;2000&quot;\n3) &quot;peter&quot;\n4) &quot;3500&quot;\n5) &quot;jack&quot;\n6) &quot;5000&quot;\n\nredis 127.0.0.1:6379&gt; ZREMRANGEBYSCORE salary 1500 3500  # \u79fb\u9664\u6240\u6709\u85aa\u6c34\u5728 1500 \u5230 3500 \u5185\u7684\u5458\u5de5\n(integer) 2\n\nredis&gt; ZRANGE salary 0 -1 WITHSCORES          # \u5269\u4e0b\u7684\u6709\u5e8f\u96c6\u6210\u5458\n1) &quot;jack&quot;\n2) &quot;5000&quot;<\/code><\/pre>\n<h3>ZREVRANGE key start stop [WITHSCORES]<\/h3>\n<p>\u8fd4\u56de\u6709\u5e8f\u96c6\u4e2d\u6307\u5b9a\u533a\u95f4\u5185\u7684\u6210\u5458\uff0c\u901a\u8fc7\u7d22\u5f15\uff0c\u5206\u6570\u4ece\u9ad8\u5230\u4f4e<\/p>\n<ul>\n<li>\u5176\u4e2d\u6210\u5458\u7684\u4f4d\u7f6e\u6309\u5206\u6570\u503c\u9012\u51cf(\u4ece\u5927\u5230\u5c0f)\u6765\u6392\u5217<\/li>\n<li>\u5177\u6709\u76f8\u540c\u5206\u6570\u503c\u7684\u6210\u5458\u6309\u5b57\u5178\u5e8f\u7684\u9006\u5e8f(reverse lexicographical order)\u6392\u5217<\/li>\n<li>\u9664\u4e86\u6210\u5458\u6309\u5206\u6570\u503c\u9012\u51cf\u7684\u6b21\u5e8f\u6392\u5217\u8fd9\u4e00\u70b9\u5916\uff0c ZREVRANGE \u547d\u4ee4\u7684\u5176\u4ed6\u65b9\u9762\u548c ZRANGE \u547d\u4ee4\u4e00\u6837<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">redis 127.0.0.1:6379&gt; ZRANGE salary 0 -1 WITHSCORES        # \u9012\u589e\u6392\u5217\n1) &quot;peter&quot;\n2) &quot;3500&quot;\n3) &quot;tom&quot;\n4) &quot;4000&quot;\n5) &quot;jack&quot;\n6) &quot;5000&quot;\n\nredis 127.0.0.1:6379&gt; ZREVRANGE salary 0 -1 WITHSCORES     # \u9012\u51cf\u6392\u5217\n1) &quot;jack&quot;\n2) &quot;5000&quot;\n3) &quot;tom&quot;\n4) &quot;4000&quot;\n5) &quot;peter&quot;\n6) &quot;3500&quot;<\/code><\/pre>\n<h3>ZREVRANGEBYSCORE key max min [WITHSCORES]<\/h3>\n<p>\u8fd4\u56de\u6709\u5e8f\u96c6\u4e2d\u6307\u5b9a\u5206\u6570\u533a\u95f4\u5185\u7684\u6210\u5458\uff0c\u5206\u6570\u4ece\u9ad8\u5230\u4f4e\u6392\u5e8f<\/p>\n<ul>\n<li>\u8fd4\u56de\u6709\u5e8f\u96c6\u4e2d\u6307\u5b9a\u5206\u6570\u533a\u95f4\u5185\u7684\u6240\u6709\u7684\u6210\u5458\u3002\u6709\u5e8f\u96c6\u6210\u5458\u6309\u5206\u6570\u503c\u9012\u51cf(\u4ece\u5927\u5230\u5c0f)\u7684\u6b21\u5e8f\u6392\u5217<\/li>\n<li>\u5177\u6709\u76f8\u540c\u5206\u6570\u503c\u7684\u6210\u5458\u6309\u5b57\u5178\u5e8f\u7684\u9006\u5e8f(reverse lexicographical order )\u6392\u5217<\/li>\n<li>\u9664\u4e86\u6210\u5458\u6309\u5206\u6570\u503c\u9012\u51cf\u7684\u6b21\u5e8f\u6392\u5217\u8fd9\u4e00\u70b9\u5916\uff0cZREVRANGEBYSCORE \u547d\u4ee4\u7684\u5176\u4ed6\u65b9\u9762\u548c ZRANGEBYSCORE \u547d\u4ee4\u4e00\u6837<\/li>\n<\/ul>\n<p><strong>\u8bed\u6cd5<\/strong><\/p>\n<pre><code class=\"language-bash\">ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count]<\/code><\/pre>\n<pre><code class=\"language-bash\">redis 127.0.0.1:6379&gt; ZADD salary 10086 jack\n(integer) 1\nredis 127.0.0.1:6379&gt; ZADD salary 5000 tom\n(integer) 1\nredis 127.0.0.1:6379&gt; ZADD salary 7500 peter\n(integer) 1\nredis 127.0.0.1:6379&gt; ZADD salary 3500 joe\n(integer) 1\n\nredis 127.0.0.1:6379&gt; ZREVRANGEBYSCORE salary +inf -inf   # \u9006\u5e8f\u6392\u5217\u6240\u6709\u6210\u5458\n1) &quot;jack&quot;\n2) &quot;peter&quot;\n3) &quot;tom&quot;\n4) &quot;joe&quot;\n\nredis 127.0.0.1:6379&gt; ZREVRANGEBYSCORE salary 10000 2000  # \u9006\u5e8f\u6392\u5217\u85aa\u6c34\u4ecb\u4e8e 10000 \u548c 2000 \u4e4b\u95f4\u7684\u6210\u5458\n1) &quot;peter&quot;\n2) &quot;tom&quot;\n3) &quot;joe&quot;<\/code><\/pre>\n<h3>ZREVRANK key member<\/h3>\n<p>\u8fd4\u56de\u6709\u5e8f\u96c6\u5408\u4e2d\u6307\u5b9a\u6210\u5458\u7684\u6392\u540d\uff0c\u6709\u5e8f\u96c6\u6210\u5458\u6309\u5206\u6570\u503c\u9012\u51cf(\u4ece\u5927\u5230\u5c0f)\u6392\u5e8f<\/p>\n<ul>\n<li>\u8fd4\u56de\u6709\u5e8f\u96c6\u4e2d\u6210\u5458\u7684\u6392\u540d\u3002\u5176\u4e2d\u6709\u5e8f\u96c6\u6210\u5458\u6309\u5206\u6570\u503c\u9012\u51cf(\u4ece\u5927\u5230\u5c0f)\u6392\u5e8f<\/li>\n<li>\u6392\u540d\u4ee5 0 \u4e3a\u5e95\uff0c\u4e5f\u5c31\u662f\u8bf4\uff0c\u5206\u6570\u503c\u6700\u5927\u7684\u6210\u5458\u6392\u540d\u4e3a 0<\/li>\n<li>\u4f7f\u7528 ZRANK \u547d\u4ee4\u53ef\u4ee5\u83b7\u5f97\u6210\u5458\u6309\u5206\u6570\u503c\u9012\u589e(\u4ece\u5c0f\u5230\u5927)\u6392\u5217\u7684\u6392\u540d<\/li>\n<li>\u5982\u679c\u6210\u5458\u662f\u6709\u5e8f\u96c6 key \u7684\u6210\u5458\uff0c\u8fd4\u56de\u6210\u5458\u7684\u6392\u540d\u3002\u5982\u679c\u6210\u5458\u4e0d\u662f\u6709\u5e8f\u96c6 key \u7684\u6210\u5458\uff0c\u8fd4\u56de nil<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">redis 127.0.0.1:6379&gt; ZRANGE salary 0 -1 WITHSCORES     # \u6d4b\u8bd5\u6570\u636e\n1) &quot;jack&quot;\n2) &quot;2000&quot;\n3) &quot;peter&quot;\n4) &quot;3500&quot;\n5) &quot;tom&quot;\n6) &quot;5000&quot;\n\nredis 127.0.0.1:6379&gt; ZREVRANK salary peter     # peter \u7684\u5de5\u8d44\u6392\u7b2c\u4e8c\n(integer) 1\n\nredis 127.0.0.1:6379&gt; ZREVRANK salary tom       # tom \u7684\u5de5\u8d44\u6700\u9ad8\n(integer) 0<\/code><\/pre>\n<h3>ZSCORE key member<\/h3>\n<p>\u8fd4\u56de\u6709\u5e8f\u96c6\u4e2d\uff0c\u6210\u5458\u7684\u5206\u6570\u503c<\/p>\n<pre><code class=\"language-bash\">redis 127.0.0.1:6379&gt; ZRANGE salary 0 -1 WITHSCORES    # \u6d4b\u8bd5\u6570\u636e\n1) &quot;tom&quot;\n2) &quot;2000&quot;\n3) &quot;peter&quot;\n4) &quot;3500&quot;\n5) &quot;jack&quot;\n6) &quot;5000&quot;\n\nredis 127.0.0.1:6379&gt; ZSCORE salary peter              # \u6ce8\u610f\u8fd4\u56de\u503c\u662f\u5b57\u7b26\u4e32\n&quot;3500&quot;<\/code><\/pre>\n<h3>ZUNIONSTORE destination numkeys key [key &#8230;]<\/h3>\n<p>\u8ba1\u7b97\u7ed9\u5b9a\u7684\u4e00\u4e2a\u6216\u591a\u4e2a\u6709\u5e8f\u96c6\u7684\u5e76\u96c6\uff0c\u5e76\u5b58\u50a8\u5728\u65b0\u7684 key \u4e2d<\/p>\n<ul>\n<li>Zunionstore \u547d\u4ee4\u8ba1\u7b97\u7ed9\u5b9a\u7684\u4e00\u4e2a\u6216\u591a\u4e2a\u6709\u5e8f\u96c6\u7684\u5e76\u96c6\uff0c\u5176\u4e2d\u7ed9\u5b9a key \u7684\u6570\u91cf\u5fc5\u987b\u4ee5 numkeys \u53c2\u6570\u6307\u5b9a\uff0c\u5e76\u5c06\u8be5\u5e76\u96c6(\u7ed3\u679c\u96c6)\u50a8\u5b58\u5230 destination<\/li>\n<li>\u9ed8\u8ba4\u60c5\u51b5\u4e0b\uff0c\u7ed3\u679c\u96c6\u4e2d\u67d0\u4e2a\u6210\u5458\u7684\u5206\u6570\u503c\u662f\u6240\u6709\u7ed9\u5b9a\u96c6\u4e0b\u8be5\u6210\u5458\u5206\u6570\u503c\u4e4b\u548c<\/li>\n<\/ul>\n<p><strong>\u8bed\u6cd5<\/strong><\/p>\n<pre><code class=\"language-bash\">ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight [weight ...]] [AGGREGATE SUM|MIN|MAX]<\/code><\/pre>\n<pre><code class=\"language-bash\">redis&gt; ZADD zset1 1 &quot;one&quot;\n(integer) 1\nredis&gt; ZADD zset1 2 &quot;two&quot;\n(integer) 1\nredis&gt; ZADD zset2 1 &quot;one&quot;\n(integer) 1\nredis&gt; ZADD zset2 2 &quot;two&quot;\n(integer) 1\nredis&gt; ZADD zset2 3 &quot;three&quot;\n(integer) 1\nredis&gt; ZUNIONSTORE out 2 zset1 zset2 WEIGHTS 2 3\n(integer) 3\nredis&gt; ZRANGE out 0 -1 WITHSCORES\n1) &quot;one&quot;\n2) &quot;5&quot;\n3) &quot;three&quot;\n4) &quot;9&quot;\n5) &quot;two&quot;\n6) &quot;10&quot;\nredis&gt;<\/code><\/pre>\n<h3>ZSCAN key cursor [MATCH pattern] [COUNT count]<\/h3>\n<p>\u8fed\u4ee3\u6709\u5e8f\u96c6\u5408\u4e2d\u7684\u5143\u7d20\uff08\u5305\u62ec\u5143\u7d20\u6210\u5458\u548c\u5143\u7d20\u5206\u503c\uff09<\/p>\n<p><strong>\u8bed\u6cd5<\/strong><\/p>\n<pre><code class=\"language-bash\">ZSCAN key cursor [MATCH pattern] [COUNT count]<\/code><\/pre>\n<ul>\n<li>cursor &#8211; \u6e38\u6807<\/li>\n<li>pattern &#8211; \u5339\u914d\u7684\u6a21\u5f0f<\/li>\n<li>count &#8211; \u6307\u5b9a\u4ece\u6570\u636e\u96c6\u91cc\u8fd4\u56de\u591a\u5c11\u5143\u7d20\uff0c\u9ed8\u8ba4\u503c\u4e3a 10<\/li>\n<\/ul>\n<pre><code class=\"language-bash\">> ZADD site 1 &quot;Google&quot; 2 &quot;Appblog&quot; 3 &quot;Taobao&quot; 4 &quot;Weibo&quot;\n(integer) 4\n> ZSCAN site 0 match &quot;A*&quot;\n1) &quot;0&quot;\n2) 1) &quot;Appblog&quot;\n2) 2.0<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Redis \u6709\u5e8f\u96c6\u5408(sorted set) Redis \u6709\u5e8f\u96c6\u5408\u548c\u96c6\u5408\u4e00\u6837\u4e5f\u662f string \u7c7b\u578b\u5143\u7d20\u7684\u96c6\u5408 [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[14],"tags":[],"class_list":["post-260","post","type-post","status-publish","format-standard","hentry","category-redis"],"_links":{"self":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/260","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/comments?post=260"}],"version-history":[{"count":0,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/posts\/260\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/media?parent=260"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/categories?post=260"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.appblog.cn\/index.php\/wp-json\/wp\/v2\/tags?post=260"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}