{ "version": "https://jsonfeed.org/version/1", "title": "Redis", "description": "Redis \u662f\u4e00\u4e2a\u9ad8\u6027\u80fd\u7684\u6570\u636e\u7ed3\u6784\u670d\u52a1\u5668\u3002Redis \u4e2d\u7684 key \u53ef\u4ee5\u652f\u6301\u591a\u79cd\u4e0d\u540c\u7684\u6570\u636e\u7ed3\u6784\uff0c\u5305\u62ec\uff1a\u5b57\u7b26\u4e32\uff0c\u5217\u8868\uff0c\u96c6\u5408\uff0csort set \u7b49\u7b49\u3002", "home_page_url": "go/redis", "feed_url": "feed/redis.json", "icon": "https://cdn.v2ex.com/navatar/67c6/a1e7/47_large.png?m=1608052197", "favicon": "https://cdn.v2ex.com/navatar/67c6/a1e7/47_normal.png?m=1608052197", "items": [ { "author": { "url": "member/Vraw5", "name": "Vraw5", "avatar": "https://cdn.v2ex.com/gravatar/30365489c43a99273063d13056bd340a?s=73&d=retro" }, "url": "t/1165049", "title": "\u963f\u91cc\u4e91 Redis \u547d\u4e2d\u7387\u8ba1\u7b97\u4e0e\u76d1\u63a7\u7684\u95ee\u9898", "id": "t/1165049", "date_published": "2025-10-14T02:16:56+00:00", "content_html": "\u533a\u95f4\u4e3a 5s \uff0c00:00 \u7684 hit \u4e0e miss \u503c\u4e0e 00:05 \u7684\u503c\u90fd\u76f8\u7b49\uff0c\u4e5f\u5c31\u662f\u8bf4 5s \u91cc redis \u90fd\u6ca1\u6709 qps \u3002\u90a3\u6b64\u65f6\u7684\u547d\u4e2d\u7387\u5e94\u8be5\u662f\u591a\u5c11\u5462\uff1f
-----
\u5728\u963f\u91cc\u4e91\u4e0a\uff0c\u4ece Redis \u5f00\u6e90\u7248 4.0 \u5347\u7ea7\u81f3 5.0 \u540e\uff0c\u547d\u4e2d\u7387\u76d1\u63a7\u6301\u7eed\u62a5\u8b66\u8bf4\u547d\u4e2d\u7387\u53ea\u6709 40%\u5de6\u53f3\u3002\u901a\u8fc7 info \u67e5\u770b\uff0c\u81ea\u5df1\u6309\u7167 `\u547d\u4e2d\u7387=Key \u547d\u4e2d\u6570\u00f7\uff08 Key \u547d\u4e2d\u6570+Key \u672a\u547d\u4e2d\u6570\uff09`\u8ba1\u7b97\uff0c\u547d\u4e2d\u7387\u5e94\u8be5\u5728 90%\u4ee5\u4e0a\uff0c\u9042\u63d0\u4ea4\u5de5\u5355\u8be2\u95ee\u76d1\u63a7\u547d\u4e2d\u7387\u8ba1\u7b97\u95ee\u9898\u3002\u7ecf\u8fc7 3 \u4e2a\u534a\u5c0f\u65f6\u7684\u5185\u90e8\u8ba8\u8bba\u7ed9\u4e86\u5982\u4e0b\u56de\u590d(\u5ffd\u7565\u6807\u9898\u5185\u5bb9)\u3002



\u963f\u91cc\u4e91\u547d\u4e2d\u7387\u6307\u6807\u7684\u83b7\u53d6\u6700\u5c0f\u5468\u671f\u662f 5s \uff0c\u4e5f\u5c31\u662f 5s \u5185\u90fd\u6ca1\u6709 QPS \u7684\u65f6\u5019\uff0c\u8fd9 5s \u7684\u547d\u4e2d\u7387\u5c31\u4e3a 0 \uff08\u4ee5\u524d\u4e3a 100%\uff09\u3002\u9664\u975e\u6bcf\u79d2\u90fd\u6709 QPS \uff0c\u90a3\u5728\u963f\u91cc\u4e91\u4e91\u76d1\u63a7\u4e2d\uff0c\u90a3\u523b\u7684\u547d\u4e2d\u7387\u624d\u4f1a\u663e\u793a\u4e3a 100%\u3002\u4e0b\u56fe\u5c31\u662f\u4e3a 0 \u7684\u60c5\u51b5\u3002


\u8d8a\u770b\u8fd9\u4e2a\u903b\u8f91\u8d8a\u522b\u626d\u3002\u50cf\u4e0a\u56fe\u8fd9\u79cd\u6b63\u5e38\u60c5\u51b5\u4e0b\uff0c\u547d\u4e2d\u7387\u6307\u6807\u80fd\u8986\u76d6 0%-100%\uff0c\u8fd9\u8fd8\u548b\u8bbe\u7f6e\u76d1\u63a7\u5462\u3002
\u6211\u4eec\u4e1a\u52a1\u65e0\u6cd5\u4fdd\u969c\u6bcf\u79d2\u90fd\u6709 qps \uff0c\u6309\u7167\u73b0\u5728\u7684\u7b97\u6cd5\uff0c1 \u5206\u949f\u7684\u533a\u95f4\uff0c\u665a\u4e0a\u7684\u547d\u4e2d\u7387\u80fd\u5230 10%\uff0c\u767d\u5929\u53ef\u80fd\u5230 80%\uff0c\u76d1\u63a7\u547d\u4e2d\u7387\u5b8c\u5168\u65e0\u6cd5\u8bbe\u7f6e\u9608\u503c\uff0c\u5982\u679c\u8bbe\u7f6e\u8fc7\u4f4e\uff0c\u767d\u5929\u7684 key miss \u53ef\u80fd\u5c31\u65e0\u6cd5\u89e6\u53d1\u62a5\u8b66\uff0c\u8bbe\u7f6e\u7565\u9ad8\uff0c\u665a\u4e0a\u62a5\u8b66\u4e0d\u65ad\u3002\u3002\u3002" }, { "author": { "url": "member/zhangshaohan", "name": "zhangshaohan", "avatar": "https://cdn.v2ex.com/avatar/66d5/eebe/424937_large.png?m=1758694576" }, "url": "t/1122194", "title": "Redis \u8fd0\u884c\u4e00\u6bb5\u65f6\u95f4\u540e\u62a5\u9519\u5bfc\u81f4\u6302\u6389\uff0c\u6709\u4ec0\u4e48\u529e\u6cd5\u89e3\u51b3\u5462\uff1f", "id": "t/1122194", "date_published": "2025-03-31T02:37:06+00:00", "content_html": "\u4f7f\u7528 docker \u5b89\u88c5\u7684 Redis \uff0c\u7248\u672c 7.4.1 \uff0c\u6302\u8f7d config \u548c data \u6587\u4ef6\u5939\u5230\u5bbf\u4e3b\u673a\uff0c\u8fd0\u884c\u4e00\u6bb5\u65f6\u95f4\uff08\u4e00\u4e2a\u6708\uff09\u540e\u7a81\u7136\u53d1\u73b0\u6302\u6389\u4e86\uff0c\u67e5\u770b\u65e5\u5fd7\u6709\u5982\u4e0b\u4fe1\u606f\uff0c\u770b\u4e0a\u53bb\u50cf\u662f aof \u6587\u4ef6\u635f\u574f\uff0c\u5982\u4f55\u907f\u514d\u8fd9\u4e2a\u95ee\u9898\u5462\uff1f

1:C 31 Mar 2025 10:15:53.909 # WARNING Memory overcommit must be enabled! Without it, a background save or replication may fail under low memory condition. Being disabled, it can also cause failures without low memory condition, see https://github.com/jemalloc/jemalloc/issues/1328. To fix this issue add 'vm.overcommit_memory = 1' to /etc/sysctl.conf and then reboot or run the command 'sysctl vm.overcommit_memory=1' for this to take effect.
1:C 31 Mar 2025 10:15:53.909 * oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo
1:C 31 Mar 2025 10:15:53.909 * Redis version=7.4.1, bits=64, commit=00000000, modified=0, pid=1, just started
1:C 31 Mar 2025 10:15:53.909 * Configuration loaded
1:M 31 Mar 2025 10:15:53.909 * monotonic clock: POSIX clock_gettime
1:M 31 Mar 2025 10:15:53.910 # Failed to write PID file: Permission denied
1:M 31 Mar 2025 10:15:53.910 * Running mode=standalone, port=6379.
1:M 31 Mar 2025 10:15:53.910 # WARNING: The TCP backlog setting of 511 cannot be enforced because /proc/sys/net/core/somaxconn is set to the lower value of 128.
1:M 31 Mar 2025 10:15:53.910 * Server initialized
1:M 31 Mar 2025 10:15:53.910 * Reading RDB base file on AOF loading...
1:M 31 Mar 2025 10:15:53.910 * Loading RDB produced by version 7.4.1
1:M 31 Mar 2025 10:15:53.910 * RDB age 159448 seconds
1:M 31 Mar 2025 10:15:53.910 * RDB memory usage when created 3.08 Mb
1:M 31 Mar 2025 10:15:53.910 * RDB is base AOF
1:M 31 Mar 2025 10:15:53.915 * Done loading RDB, keys loaded: 1103, keys expired: 0.
1:M 31 Mar 2025 10:15:53.916 * DB loaded from base file appendonly.aof.12754.base.rdb: 0.006 seconds
1:M 31 Mar 2025 10:15:54.042 # Bad file format reading the append only file appendonly.aof.12754.incr.aof: make a backup of your AOF file, then use ./redis-check-aof --fix <filename.manifest>" }, { "author": { "url": "member/xiaohupro", "name": "xiaohupro", "avatar": "https://cdn.v2ex.com/avatar/2bdc/ec33/608363_large.png?m=1760687312" }, "url": "t/1114525", "date_modified": "2025-02-27T02:26:58+00:00", "content_html": "

\u65e9\u5728 4 \u5e74\u524d\uff0c\u5f53\u6211\u53d1\u73b0 Redis5 \u4e2d\u589e\u52a0\u4e86 Stream \u7c7b\u578b\u540e\u6211\u5c31\u89c9\u5f97\u5b83\u7684\u8fd9\u4e9b\u7279\u6027\u5b8c\u5168\u53ef\u4ee5\u5b9e\u73b0\u4e00\u4e2a\u5b8c\u6574\u7684 MQ \u4e2d\u95f4\u4ef6\u529f\u80fd\uff0c\u5f53\u65f6\u6211\u8fd8\u5728\u4ea4\u63a7\u5de5\u4f5c\uff0c\u5f53\u65f6\u7684\u9879\u76ee\u521a\u597d\u6d89\u53ca\u5230\u5927\u91cf\u6570\u636e\u5165\u5e93\u7684\u4e00\u4e2a\u9700\u6c42\uff0c\u5f53\u65f6\u8fd9\u4e2a\u9879\u76ee\u4e0d\u7b97\u5f88\u5927\uff0c\u6240\u4ee5\u6211\u5c31\u60f3\u628a\u8fd9\u4e2a\u65b0\u7684\u6280\u672f\u5f15\u5165\u5230\u9879\u76ee\u4e2d\uff0c\u5b9e\u73b0\u4e00\u4e2a\u8f7b\u91cf\u7ea7\u7684\u57fa\u4e8e Redis \u7684\u6d88\u606f\u961f\u5217\u3002

\n

\u6700\u7ec8\u57fa\u672c\u4e0a\u5b9e\u73b0\u4e86\u8fd9\u4e2a\u529f\u80fd\uff0c\u5f53\u65f6\u4e5f\u505a\u4e86\u4e00\u4e2a\u57fa\u4e8e SpringBoot \u7684 Demo \uff0c\u540e\u6765\u53c8\u6539\u4e86\u4e00\u7248\u57fa\u4e8e Jedis \u7248\u672c\u7684\uff0c\u56e0\u4e3a\u53ef\u4ee5\u81ea\u5df1\u5b9a\u4e49\u548c\u64cd\u4f5c\u591a\u7ebf\u7a0b\uff0c\u66f4\u52a0\u7075\u6d3b\u81ea\u7531\u7684\u5b9e\u73b0\u4e00\u4e9b\u7ec6\u8282\u3002

\n

\u6700\u8fd1\u63d0\u79bb\u804c\u540e\u6b63\u5728\u4ea4\u63a5\u671f\uff0c\u81ea\u5df1\u7684\u65f6\u95f4\u6bd4\u8f83\u591a\uff0c\u53c8\u7ffb\u51fa\u8fd9\u4e2a\u65e9\u8d77\u7684 Demo \uff0c\u60f3\u6539\u9020\u4e00\u4e0b\uff0c\u7528\u5230\u6211\u7684\u5fc3\u60c5\u8bb0\u5f55\u5458\u9879\u76ee\u4e2d\uff0c\u5982\u679c\u7cbe\u529b\u548c\u65f6\u95f4\u6709\u7684\u8bdd\u6211\u66f4\u60f3\u5c06\u5b83\u5b8c\u5584\u4e3a\u4e00\u4e2a\u5b8c\u6574\u7684\u3001\u53ef\u590d\u7528\u7684\u9879\u76ee\u3002

\n

\u5fc3\u60c5\u8bb0\u5f55\u5458\u5c0f\u7a0b\u5e8f\u4e3a\u4ec0\u4e48\u8981\u7528\u5230\u8fd9\u4e2a\uff1f\u4ee5\u53ca\u4e3a\u4ec0\u4e48\u4e0d\u7528\u5176\u4ed6\u6210\u719f\u7684 RabbitMQ \uff0c\u9996\u5148\u4e0d\u7528\u5176\u4ed6\u6210\u719f\u7684\u539f\u56e0\u662f\u6211\u4e0d\u60f3\u641e\u592a\u591a\u4e2d\u95f4\u4ef6\uff0c\u4e00\u4e2a\u9879\u76ee\u4e2d Redis \u5b89\u88c5\u662f\u5927\u591a\u6570\u60c5\u51b5\uff0c\u56e0\u6b64\u6211\u60f3\u5728\u4fdd\u6301\u5355\u4f53\u5e94\u7528\u7684\u57fa\u7840\u4e0a\u5b9e\u73b0\u4e00\u4e2a MQ \uff0c\u53e6\u5916\u7684\u4e00\u4e2a\u539f\u56e0\u5c31\u662f\u6298\u817e\uff0c\u8fd9\u4e5f\u662f\u6211\u672c\u4eba\u7684\u4e00\u4e2a\u201c\u7f3a\u70b9\u201d\uff0c\u4ec0\u4e48\u90fd\u559c\u6b22\u81ea\u5df1\u6298\u817e\u4e00\u4e0b\uff0c\u9a8c\u8bc1\u53ef\u884c\u6027\u3002\u63a5\u4e0b\u6765\u8bf4\u8bf4\u5e94\u7528\u573a\u666f\u5427\uff0c\u5fc3\u60c5\u8bb0\u5f55\u5458\u8fd9\u6b3e\u5c0f\u7a0b\u5e8f\u76ee\u524d\u8c03\u7528\u7684 AI \u662f Kimi \u7684\u5e73\u53f0\uff0c\u76ee\u524d\u56e0\u4e3a\u662f\u524d\u671f\uff0c\u56e0\u6b64\u662f\u514d\u8d39\u7248\u672c\uff0c\u5e76\u53d1\u6570\u9650\u5236\u5230\u4e86 1 \uff0c\u8fd9\u5c31\u4f1a\u5bfc\u81f4\u4e00\u4e2a\u95ee\u9898\uff0c\u5982\u679c\u540c\u65f6\u6709\u4e24\u4e2a\u6216\u8005\u591a\u4e2a\uff08\u610f\u6deb\u4e00\u4e0b\uff0c\u54c8\u54c8\u54c8\uff09\u540c\u65f6\u70b9\u4e86\u8bb0\u5f55\u7684\u65f6\u5019\uff0c\u8fd9\u65f6\u5019\u6709\u4e00\u4e2a\u80af\u5b9a\u4f1a\u62a5\u9519\uff0c\u8fd9\u65f6\u5019\u5c31\u53ef\u4ee5\u7528\u5230\u6d88\u606f\u961f\u5217\u4e86\uff0c\u5c06\u8bf7\u6c42\u7684\u6570\u636e\u5148\u653e\u5165\u961f\u5217\uff0c\u7b49\u524d\u4e00\u4e2a AI \u751f\u6210\u7ed3\u675f\u540e\u518d\u6b21\u8c03\u7528\uff0c\u5c31\u8fd9\uff1f\u2026\u2026\uff0c\u4e00\u4e2a\u961f\u5217\u4e0d\u5c31\u641e\u5b9a\u4e86\u5417\uff1f\u5f53\u7136\u8fd8\u6709\u573a\u666f\u4e86\uff0c\u90a3\u5c31\u662f\u76ee\u524d AI \u751f\u6210\u6211\u91c7\u7528\u7684\u662f Stream \u6d41\u5f0f\u8fd4\u56de\uff0c\u800c\u6211\u662f\u5728\u70b9\u51fb\u8bb0\u5f55\u540e\u5c31\u5f00\u59cb\u751f\u6210\uff0c\u70b9\u51fb\u8bb0\u5f55\u540e\u4f1a\u8df3\u8f6c\u5230\u7ed3\u679c\u9875\u9762\uff0c\u4e3a\u4e86\u4f7f\u7528\u6237\u8df3\u8fc7\u53bb\u7acb\u9a6c\u5c31\u611f\u89c9\u5230\u5728\u751f\u6210\uff0c\u56e0\u6b64\u6211\u5c31\u5c06\u8c03\u7528 AI \u63a5\u53e3\u7684\u52a8\u4f5c\u63d0\u524d\u5230\u8df3\u8f6c\u9875\u9762\u524d\u70b9\u51fb\u8bb0\u5f55\u6309\u94ae\u540e\uff0c\u7136\u540e\u7ed9\u4e00\u5b9a\u5230 Loading \u5ef6\u8fdf\u5728\u8df3\u8f6c\uff0c\u8df3\u8f6c\u5230\u7ed3\u679c\u9875\u540e\u5efa\u7acb WebSocket \u8fde\u63a5\uff0c\u6839\u636e openId \u6807\u8bc6\u63a5\u6536\u6d88\u606f\uff0c\u8fd9\u65f6\u5019\u8fd9\u4e2a\u6d88\u606f\u5176\u5b9e\u5df2\u7ecf\u5728\u4e0a\u4e00\u6b65\u4e2d\u5728\u751f\u6210\u4e86\uff0c\u8fd9\u91cc\u5c31\u53ef\u4ee5\u7528\u5230\u6d88\u606f\u961f\u5217\u4e86\uff0c\u6839\u636e\u5bf9\u5e94\u7684 openId \u5230\u6d88\u606f\u961f\u5217\u4e2d\u53d6\u5185\u5bb9\uff0c\u670d\u52a1\u7aef\u7684 WebSocket \u53ea\u9700\u8981\u6839\u636e\u6807\u8bc6\u4ece\u6d88\u606f\u961f\u5217\u4e2d\u7f13\u5b58\u7684\u751f\u6210\u7ed3\u679c\u8fdb\u884c\u8fd4\u56de\u5373\u53ef\uff0c\u63d0\u5347\u4e86\u54cd\u5e94\u901f\u5ea6\u3002

\n

\u5927\u6982\u6d41\u7a0b\u5c31\u50cf\u4e0b\u56fe\u8fd9\u6837\uff1a\n\"\u5fc3\u60c5\u8bb0\u5f55\u5458.drawio.png\"

\n

4 \u5e74\u524d\u8fd9\u4e2a\u9879\u76ee\u7684\u5e93\u548c\u535a\u5ba2\uff1a

\n

Gitee-redismq \uff08\u539f\u8c05\u6211\u4ee5\u524d\u4f7f\u7528 Gitee \u7684\u884c\u4e3a\uff0c\u54c8\u54c8\u54c8\uff09

\n

CSDN \u535a\u5ba2\uff08\u5982\u679c\u5bf9 CSDN \u6392\u65a5\u53ef\u4ee5\u8bbf\u95ee\u4e0b\u9762\u6211\u81ea\u5df1\u7f51\u7ad9\u7684\u6587\u7ae0\uff09

\n

\u4e2a\u4eba\u7f51\u7ad9\u6587\u7ae0\u5730\u5740

\n", "date_published": "2025-02-27T02:01:59+00:00", "title": "Redis Stream \u5b9e\u73b0 MQ \u7684\u53ef\u884c\u6027", "id": "t/1114525" }, { "author": { "url": "member/nitouge", "name": "nitouge", "avatar": "https://cdn.v2ex.com/avatar/4ff9/fa67/617985_large.png?m=1678329746" }, "url": "t/1107082", "date_modified": "2025-01-22T07:22:28+00:00", "content_html": "

\u76ee\u524d\u4f7f\u7528 Redis \u7f13\u5b58\u6570\u636e\uff0c\u5bf9\u4e8e A \u548c B \u5355\u72ec\u7f13\u5b58\uff0c\u73b0\u5728\u6709\u5176\u4ed6\u670d\u52a1\u9700\u8981 A \u548c B \u4e24\u4e2a\u5bf9\u8c61\u7684\u67d0\u4e9b\u5c5e\u6027\n\u95ee\u9898\uff1a

\n
    \n
  1. \u5b58\u6570\u636e\u5728\u670d\u52a1\u6d88\u8d39\u65b9\u8fd8\u662f\u670d\u52a1\u63d0\u4f9b\u65b9\uff1b
  2. \n
  3. \u5b58\u7ec4\u5408\u5bf9\u8c61\uff0cA,B \u5bf9\u8c61\u66f4\u65b0\uff0c\u7ec4\u5408\u5bf9\u8c61\u90fd\u9700\u8981\u53bb\u66f4\u65b0\u6216\u8005\u5220\u9664\u518d\u52a0\u8f7d\uff1b
  4. \n
  5. \u5bf9\u4e8e\u5206\u9875\u67e5\u8be2\u6216\u8005 list \u67e5\u8be2\u540e\uff0c\u7f13\u5b58\u6bcf\u4e00\u6761\u6570\u636e\uff0c\u5982\u679c\u901a\u8fc7\u6ce8\u89e3\uff0c\u662f\u5426\u9700\u8981\u8be6\u60c5\u63a5\u53e3\uff0c\u518d\u53bb\u7f13\u5b58\uff0c\u800c\u4e0d\u662f\u76f4\u63a5\u7f13\u5b58\u96c6\u5408\u6570\u636e
  6. \n
\n", "date_published": "2025-01-22T07:13:19+00:00", "title": "Redis \u7f13\u5b58\u6570\u636e", "id": "t/1107082" }, { "author": { "url": "member/Jobcrazy", "name": "Jobcrazy", "avatar": "https://cdn.v2ex.com/avatar/e70e/735c/499434_large.png?m=1753425401" }, "url": "t/1092511", "title": "\u652f\u6301 WinXP/2003 \u7684 Redis \u670d\u52a1\u7aef", "id": "t/1092511", "date_published": "2024-11-25T09:16:57+00:00", "content_html": "

\u56e0\u8fd1\u671f\u6211\u505a\u7684\u4e00\u4e2a\u9879\u76ee\u9700\u8981\uff0c\u4fee\u6539\u51fa\u6765\u4e86\u4e00\u4e2a\u9002\u914d winxp \u548c 2003 \u7684 32 \u4f4d redis-server \uff0c\u53ef\u4ee5\u7528\u53c2\u6570\u6b63\u5e38\u5b89\u88c5\u4e3a\u7cfb\u7edf\u670d\u52a1\u3002

\n

\u8fd9\u4e24\u4e2a\u7cfb\u7edf\u867d\u7136\u51e0\u4e4e\u6ca1\u4ec0\u4e48\u4eba\u7528\u4e86\uff0c\u4f46\u9700\u8981\u7684\u65f6\u5019\u53ef\u4ee5\u81ea\u53d6\uff0c\u5df2\u5f00\u6e90\uff1a https://github.com/Jobcrazy/Redis-WinLegacy

\n" }, { "author": { "url": "member/Rust2015", "name": "Rust2015", "avatar": "https://cdn.v2ex.com/avatar/51fd/c72d/674984_large.png?m=1738501691" }, "url": "t/1079248", "title": "\u600e\u4e48\u624d\u80fd\u5b66\u597d redis\uff0c\u6709\u4ec0\u4e48\u597d\u7684\u6559\u7a0b\u6216\u8005 blog \u63a8\u8350\u5417\uff1f", "id": "t/1079248", "date_published": "2024-10-11T07:59:36+00:00", "content_html": "

\u4e00\u76f4\u4e0d\u5f97\u6cd5\uff0c\u5341\u5206\u90c1\u95f7\u3002\u6c42\u63a8\u8350\u3002

\n

\u5982\u9898

\n" }, { "author": { "url": "member/a1oyss0925", "name": "a1oyss0925", "avatar": "https://cdn.v2ex.com/gravatar/01131814c518411ecc20694601f476fb?s=73&d=retro" }, "url": "t/1058091", "date_modified": "2024-07-18T13:07:17+00:00", "content_html": "

\u4e00\u5e74\u524d\u7ed9\u67d0\u5355\u4f4d\u505a\u4e86\u4e2a\u95e8\u6237\u7c7b\u7684\u670d\u52a1\uff0cSpringBoot \u9879\u76ee\uff0c\u5355\u8282\u70b9 redis \u3001mysql\n\u5f53\u65f6\u5c31\u662f\u51e0\u4e2a\u4eba\u778e\u5199\uff0c\u5806\u6210\u4e00\u5806\u5c4e\u5c71\uff0c\u73b0\u5728\u4e0d\u77e5\u9053\u4e3a\u4ec0\u4e48\u51e0\u4e4e\u6bcf\u9694\u4e00\u4e24\u5468 redis \u90fd\u4f1a\u67e5\u8be2\u8d85\u65f6\uff0c\u670d\u52a1\u62a5\u9519\uff1a\njava.lang.RuntimeException: org.springframework.dao.QueryTimeoutException: Redis command timed out; nested exception is io.lettuce.core.RedisCommandTimeoutException: Command timed out after 10 second(s)\n\u7a0d\u5fae\u6709\u70b9\u5934\u7eea\u7684\u8bdd\u5c31\u662f\u6709\u4e2a\u529f\u80fd\u4f1a\u5f80 redis \u91cc\u5b58\u5927\u91cf\u7684\u6570\u636e\uff0c\u4f7f\u7528\u7684\u662f map \uff0c\u5e76\u4e14\u53d6\u7684\u9891\u7387\u8fd8\u662f\u633a\u9ad8\u7684\uff0c\u4f46\u662f\u4e0d\u77e5\u9053\u8be5\u600e\u4e48\u786e\u5b9a\u5c31\u662f\u8fd9\u4e2a\u9519\uff0c\u6ca1\u6cd5\u627e\u5230\u8bc1\u636e\n\u7ebf\u4e0a\u6392\u9519\u8fd9\u65b9\u9762\u81ea\u5df1\u4e5f\u6ca1\u7ecf\u9a8c\uff0c\u8bf7\u95ee\u5e94\u8be5\u600e\u4e48\u5165\u624b

\n", "date_published": "2024-07-17T10:25:58+00:00", "title": "\u7ebf\u4e0a\u670d\u52a1 redis \u67e5\u8be2\u8d85\u65f6\u6392\u67e5\u6c42\u6559", "id": "t/1058091" }, { "author": { "url": "member/1140601003", "name": "1140601003", "avatar": "https://cdn.v2ex.com/avatar/604d/dddf/640936_large.png?m=1745299906" }, "url": "t/1055361", "title": "\u6709\u6728\u6709\u5b89\u5353 app \u7684 client \u7aef\u5440\uff1f", "id": "t/1055361", "date_published": "2024-07-06T14:24:57+00:00", "content_html": "" }, { "author": { "url": "member/jamfer", "name": "jamfer", "avatar": "https://cdn.v2ex.com/avatar/6b02/df11/222748_large.png?m=1716904464" }, "url": "t/1050747", "date_modified": "2024-06-21T01:16:57+00:00", "content_html": "Tiny RDM \u54ea\u513f\u90fd\u597d\u5c31\u662f\u9700\u8981\u5b89\u88c5 EDGE WebView2 \u624d\u80fd\u8fd0\u884c\uff0c\u8fd9\u73a9\u610f\u513f\u4e00\u65e6\u5b89\u88c5\u4e86\uff0c\u5c31\u4f1a\u7ecf\u5e38\u81ea\u52a8\u7ed9\u6211\u4e0b\u8f7d EDGE \u5168\u5bb6\u6876\u3002\u6211\u673a\u5668\u4e0a\u5df2\u7ecf\u5f7b\u5e95\u5378\u8f7d\u4e86 EDGE \uff0c\u6ca1\u529e\u6cd5\u53ea\u80fd\u653e\u5f03 Tiny RDM \u3002

\u6240\u4ee5\u8bf7\u95ee\u8fd8\u6709\u5176\u4ed6\u597d\u7528\u7684 Redis GUI \u5de5\u5177\u4e48\uff1f", "date_published": "2024-06-19T01:39:26+00:00", "title": "\u9664\u4e86 Tiny RDM \u4e4b\u5916\u8fd8\u6709\u4ec0\u4e48\u6bd4\u8f83\u597d\u7528\u7684 Redis GUI \u5de5\u5177\u4e48\uff1f", "id": "t/1050747" }, { "author": { "url": "member/LeegoYih", "name": "LeegoYih", "avatar": "https://cdn.v2ex.com/avatar/7512/3f00/577498_large.png?m=1774264293" }, "url": "t/1047578", "title": "Redis \u652f\u6301 Hash \u5b57\u6bb5\u5355\u72ec\u8bbe\u7f6e\u8fc7\u671f\u65f6\u95f4", "id": "t/1047578", "date_published": "2024-06-07T01:43:11+00:00", "content_html": "

Redis 7.4-rc1 \u5f15\u5165\u4e86 9 \u4e2a\u65b0\u547d\u4ee4\uff1a

\n\n

https://github.com/redis/redis/releases/tag/7.4-rc1

\n

\u8fd9\u4e48\u591a\u5e74\u4e86\uff0c\u7ec8\u4e8e\u6765\u4e86

\n" }, { "author": { "url": "member/cuishuang", "name": "cuishuang", "avatar": "https://cdn.v2ex.com/gravatar/ab03a22e9f5ca6080e6b15b887632bd5?s=73&d=retro" }, "url": "t/1040022", "title": "Redis \u52a0\u4e0a\u5bc6\u7801\u540e\uff0c\u6574\u4f53\u6027\u80fd\u4e0b\u964d 20%\uff1f", "id": "t/1040022", "date_published": "2024-05-12T09:19:17+00:00", "content_html": "

\u8fd9\u592a\u9707\u60ca\u4e86...(\u56fe\u7247\u6765\u81ea\u6781\u5ba2\u65f6\u95f4 \u5b89\u5168\u653b\u9632\u6280\u80fd 30 \u8bb2)

\n

\u96be\u9053\u6bcf\u6b21\u6267\u884c\u4ec0\u4e48 get,set \u64cd\u4f5c\uff0c\u90fd\u4f1a\u68c0\u6d4b\u4e00\u904d\u5bc6\u7801\u5417\uff1f \u6211\u7406\u89e3\u4e0d\u80fd\u50cf mysql \u4e00\u6837\uff0c\u6709\u4e2a\u8fde\u63a5\u6c60\uff0c\u521d\u59cb\u5316\u4e00\u4e9b\u957f\u8fde\u63a5\uff0c\u4e4b\u540e\u5c31\u4e0d\u7528\u518d\u8ba4\u8bc1/\u9274\u6743\u4ec0\u4e48\u7684\u4e86

\n

\"\"

\n" }, { "author": { "url": "member/miaeLKK", "name": "miaeLKK", "avatar": "https://cdn.v2ex.com/gravatar/f58634e88e35cd83341614d958bfe388?s=73&d=retro" }, "url": "t/1038852", "title": "\u65b0\u5b66 redis \u96c6\u7fa4\u7684\u7591\u60d1", "id": "t/1038852", "date_published": "2024-05-08T09:59:45+00:00", "content_html": "\u4e09\u4e2a\u5b9e\u4f8b\u4e3a\u4ec0\u4e48\u8981\u4e09\u4e3b\u4e09\u4ece\uff1f\u6211\u8ba4\u4e3a\u53ea\u662f\u4e3a\u4e86\u5e94\u5bf9\u9ad8\u5e76\u53d1\uff1f\u5982\u679c\u6211\u6ca1\u6709\u90a3\u4e48\u5927\u7684\u5e76\u53d1\uff0c\u53ea\u60f3\u4fdd\u8bc1\u9ad8\u53ef\u7528\u662f\u4e0d\u662f\u4e24\u4e2a\u5b9e\u4f8b\u5c31\u884c\u4e86\uff1f\u4e3a\u4ec0\u4e48\u4e0d\u662f\u4e00\u4e3b\u4e24\u4ece\uff0c\u8fd9\u6837\u6302\u4e86\u4e24\u4e2a\u8fd8\u80fd\u7528\ud83d\ude02" }, { "author": { "url": "member/keakon", "name": "keakon", "avatar": "https://cdn.v2ex.com/avatar/81c2/f886/2704_large.png?m=1754573534" }, "url": "t/1036125", "title": "Garnet \u771f\u6bd4 Redis \u5feb\u5417\uff1f", "id": "t/1036125", "date_published": "2024-04-27T06:10:26+00:00", "content_html": "

\u7528 Docker \u8dd1\u4e86\u4e0b redis-benchmark\uff1a

\n\n

\u96be\u9053\u8981\u7528 C# \u8dd1\u6d4b\u8bd5\u624d\u80fd\u53d1\u6325 Garnet \u7684\u6027\u80fd\uff1f\nhttps://microsoft.github.io/garnet/docs/benchmarking/results-resp-bench

\n" }, { "author": { "url": "member/drymonfidelia", "name": "drymonfidelia", "avatar": "https://cdn.v2ex.com/gravatar/017bcef6e642dbf067e17838a9cd447a?s=73&d=retro" }, "url": "t/1034586", "date_modified": "2024-04-22T05:43:26+00:00", "content_html": "

\u62a5\u9519\u4fe1\u606f\u662f Timeout awaiting response (outbound=1KiB, inbound=0KiB, 5728ms elapsed, timeout is 5000ms), command=SET, next: EVAL, inst: 0, qu: 0, qs: 15, aw: False, bw: SpinningDown, rs: ReadAsync, ws: Idle, in: 76, in-pipe: 0, out-pipe: 0, serverEndpoint: 127.0.0.1:6379, mc: 1/1/0, mgr: 10 of 10 available, clientName: AppProductionEnvServer1(SE.Redis- v2.5.43.42402), IOCP: (Busy=0,Free=10000,Min=9000,Max=10000), WORKER: (Busy=236,Free=32531,Min=10000,Max=32767), POOL: (Threads=236,Queueditems=50,Completeditems=8751117254), v: 2.5.43.42402 (Please take a look at this article for some common client-side issues that can cause timeouts: https://stackexchange.github.io/StackExchange.Redis/Timeouts)

\n

\u51fa\u9519\u7684\u65f6\u5019\u770b\u4e86\u4e0b\u4e5f\u5c31\u4e09\u767e\u591a\u5e76\u53d1\uff0c\u6bd4\u8f83\u6000\u7591\u662f\u4e0b\u9762\u8fd9\u6bb5\u4ee3\u7801\u5f15\u8d77\u7684\uff1a

\n
 while (!await redis.GetDatabase().LockTakeAsync($\"PlaceOrder:{user.UserId}\", \"1\", TimeSpan.FromSeconds(180)))\n {\n await Task.Delay(1);\n }\n
\n

\u4f5c\u7528\u662f\u786e\u4fdd\u540c\u4e00\u7528\u6237\u53ea\u6709\u4e00\u4e2a\u8ba2\u5355\u672a\u5199\u5165\u6570\u636e\u5e93\uff08\u7cfb\u7edf\u4e0b\u5355\u903b\u8f91\u6d89\u53ca\u51e0\u5341\u4e2a\u51fd\u6570\uff0c\u5168\u662f\u4e00\u4e9b\u83ab\u540d\u5947\u5999\u7684\u5224\u65ad\u903b\u8f91\uff0c\u6df7\u6dc6\u540e\u53ef\u8bfb\u6027\u5927\u5e45\u63d0\u5347\u7684\u90a3\u79cd\uff08\u5f53\u7136\u662f\u5f00\u73a9\u7b11\u7684\uff09\uff09\uff0c\u5c4e\u5c71\u4f5c\u8005\u5df2\u7ecf\u8dd1\u8def\u4e86\uff0c\u6ca1\u4eba\u80fd\u770b\u61c2\u4ed6\u4ee3\u7801\uff0c\u4e00\u4e2a\u7528\u6237\u4e0b\u591a\u4e2a\u8ba2\u5355\u6570\u636e\u4f1a\u6df7\u4e71\u3002\u66f4\u725b\u903c\u7684\u8fd9\u5957\u7cfb\u7edf\u9664\u4e86\u6027\u80fd\u6781\u5dee\uff0c\u8fd0\u884c 3 \u5e74\u6ca1\u51fa\u9519\u4e00\u6b21\u3002\u4e00\u6b21\u8c03\u7528 API \u53ea\u80fd\u4e0b\u4e00\u5355\uff0c\u5ba2\u6237\u7aef\u968f\u786c\u4ef6\u4ea4\u4ed8\uff0c\u5df2\u7ecf\u5199\u6b7b\u4e86\uff0c\u4e0d\u80fd\u66f4\u65b0\uff0c\u7136\u540e\u5ba2\u6237\u7aef\u4e00\u6b21\u591a\u5c11\u4e2a\u8ba2\u5355\u5c31\u591a\u5c11\u5e76\u53d1\u8c03\u7528 API \u63d0\u4ea4\uff0c\u6ca1\u6709\u961f\u5217\u529f\u80fd\u3002\u76ee\u524d\u8981\u6c42 500 \u8ba2\u5355 10 \u79d2\u5185\u5168\u90e8\u4e0b\u5355\u5b8c\u6210\u8fd4\u56de\u8ba2\u5355\u53f7\uff08\u5355\u72ec\u63d0\u4ea4\u7684\u8bdd\u6bcf\u4e2a\u8ba2\u5355 0.01 \u79d2\u5de6\u53f3\u80fd\u5199\u5165\u5b8c\u6570\u636e\u62ff\u5230\u8ba2\u5355\u53f7\uff09\u3002

\n

\u9884\u5206\u914d\u8ba2\u5355\u53f7\u884c\u4e0d\u901a\uff0c\u4e0d\u8fd0\u884c\u4e00\u904d\u8fd9\u90e8\u5206\u5c4e\u5c71\u4ee3\u7801\u4e0d\u80fd\u786e\u5b9a\u8fd9\u4e2a\u8ba2\u5355\u80fd\u4e0d\u80fd\u63d0\u4ea4\uff0c\u8fd4\u56de\u8ba2\u5355\u53f7\u5c31\u4ee3\u8868\u8fd9\u4e2a\u8ba2\u5355\u63d0\u4ea4\u6210\u529f\u4e86\uff0c\u4e0d\u80fd\u53d6\u6d88\u3002\u76ee\u524d\u6253\u7b97\u6539\u9020\u6210 Sub/Pub \uff0c\u4e0d\u77e5\u9053\u80fd\u4e0d\u80fd\u63d0\u5347\u6027\u80fd\uff0c\u6216\u8005 V \u53cb\u6709\u6ca1\u6709\u66f4\u597d\u7684\u6539\u9020\u65b9\u6848\uff1f\u53ea\u8981\u80fd\u8ba9\u8fd9\u5c4e\u5c71\u8dd1\u8d77\u6765\u5c31\u884c\uff0c\u4ee3\u7801\u591a\u810f\u90fd\u6ca1\u5173\u7cfb\uff0c\u6539\u52a8\u9700\u8981\u5c3d\u53ef\u80fd\u5c0f\uff0c\u4e0d\u80fd\u628a\u7cfb\u7edf\u6539\u70b8\u3002\u76ee\u524d\u52a0\u786c\u4ef6\u5230 256GB \u5185\u5b58\u90fd\u6ca1\u89e3\u51b3\u3002

\n", "date_published": "2024-04-22T05:35:22+00:00", "title": "Redis \u51e0\u4e4e\u6bcf\u5c0f\u65f6\u90fd\u51fa\u73b0\u5927\u91cf\u8d85\u65f6\uff0c\u6c42\u52a9", "id": "t/1034586" }, { "author": { "url": "member/Gocobnus", "name": "Gocobnus", "avatar": "https://cdn.v2ex.com/gravatar/3903e8cdbe2a9b4f835178928d2772d7?s=73&d=retro" }, "url": "t/1032530", "date_modified": "2024-04-15T07:52:43+00:00", "content_html": "

\u4e00\u822c\u5927\u5bb6\u662f\u7528 redis client \u672c\u8eab\u7684\u8d85\u65f6\u3001\u91cd\u8bd5\u914d\u7f6e\uff0c\u8fd8\u662f\u4f1a\u81ea\u5df1\u5305\u88c5\u4e00\u4e0b

\n", "date_published": "2024-04-15T02:28:55+00:00", "title": "\u95ee\u4e00\u4e0b\u5927\u5bb6 redis \u7684\u914d\u7f6e", "id": "t/1032530" }, { "author": { "url": "member/itx10237", "name": "itx10237", "avatar": "https://cdn.v2ex.com/avatar/b106/0131/623098_large.png?m=1720230147" }, "url": "t/1028440", "date_modified": "2024-03-30T12:52:22+00:00", "content_html": "

struct PersonInfo\n{\nint age;\nchar addr[10];\n};

\n

PersonInfo person_info;\nperson_info.age = 20;\nstrcpy(person_info.addr, \"sz\");

\n

redisContext * cc;

\n

std::string name = \"JACK\";

\n

\u5982\u679c\u8981\u5c06\u4e0a\u9762\u7684 name \u548c person_info \u4f20\u7ed9 lua \u811a\u672c,\u5e94\u8be5\u600e\u4e48\u505a\u5462? \u4e0b\u9762\u7684\u5199\u6cd5\u662f\u4e0d\u5b8c\u6574\u7684, \u4f46\u662f\u53c8\u4e0d\u77e5\u9053\u8be5\u600e\u4e48\u5199\u624d\u5bf9.

\n

redisCommand(cc, \"EVALSHA %s 1 %s\", \"redis \u8fd4\u56de\u7684 lua \u811a\u672c sha1 \u503c\", name.c_str());

\n", "date_published": "2024-03-30T12:51:01+00:00", "title": "Redis \u600e\u6837\u5c06\u5b57\u8282\u4e32\u4f20\u9012\u7ed9 lua \u811a\u672c?", "id": "t/1028440" }, { "author": { "url": "member/huangsijun17", "name": "huangsijun17", "avatar": "https://cdn.v2ex.com/gravatar/6117a8589ba419d86b5dee7fb439a62a?s=73&d=retro" }, "url": "t/1027820", "title": "\u5fae\u8f6f Garnet \u7684\u53d1\u5c55\u524d\u666f\u5982\u4f55\uff0c\u6709\u6ca1\u6709\u53ef\u80fd\u66ff\u4ee3 Redis\uff1f", "id": "t/1027820", "date_published": "2024-03-28T08:13:18+00:00", "content_html": "

\u6709\u4eba\u8dd1\u4e86\u538b\u6d4b\uff0c\u5728 Redis \u6bcf\u79d2\u6570\u5341\u4e07\u6b21\u7684\u8bbe\u5907\u4e0a\uff0cGarnet \u53ef\u4ee5\u8fbe\u5230\u6bcf\u79d2\u516b\u5343\u5b8c\u6b21\u3002\u4e5f\u6709\u4eba\u8bf4 Garnet \u4e0d\u652f\u6301 Redis \u7684\u4e00\u4e9b\u51fd\u6570 lua \uff0c\u5305\u62ec\u7ecf\u5178\u7684\u5206\u5e03\u5f0f\u9501\u3002

\n" }, { "author": { "url": "member/Orlion", "name": "Orlion", "avatar": "https://cdn.v2ex.com/avatar/a2a6/ad27/212136_large.png?m=1699950457" }, "url": "t/1020312", "title": "\u4e1a\u5185\u6709\u6ca1\u6709\u628a redis \u5f00\u542f aof=always \u5f53\u505a\u6570\u636e\u5e93\u4f7f\u7528\u7684\uff1f", "id": "t/1020312", "date_published": "2024-03-04T01:06:54+00:00", "content_html": "

\u4e2a\u4eba\u7406\u89e3\u5bf9\u4e8e\u7b80\u5355\u7684\u5b58\u50a8 kv \u3001\u8bfb\u5199\u538b\u529b\u90fd\u6bd4\u8f83\u5927\u7684\u9700\u6c42\uff0c\u5b8c\u5168\u53ef\u4ee5\u5f00\u542f redis \u6301\u4e45\u5316\uff0c\u5f53\u6210\u4e00\u4e2a\u6570\u636e\u5e93\u6765\u7528\u7684\u3002aof=always \u65e2\u4e0d\u4f1a\u5bfc\u81f4\u6570\u636e\u4e22\u5931\uff0c\u4e5f\u80fd\u83b7\u53d6\u6781\u9ad8\u7684\u8bfb\u6027\u80fd\uff0c\u867d\u7136\u5199\u6027\u80fd\u4f1a\u53d8\u5dee\uff0c\u4f46\u76f8\u6bd4 b tree/lsm tree \u8fd9\u79cd\u78c1\u76d8\u6570\u636e\u5e93\u6027\u80fd\u8fd8\u662f\u6bd4\u8f83\u9ad8\u7684\u5427\u3002

\n

\u800c\u4e14\u8fd8\u6709\u4e2a\u597d\u5904\u5c31\u662f\u907f\u514d\u4e86\u5e38\u8bf4\u7684\u201c\u7f13\u5b58\u4e00\u81f4\u6027\u95ee\u9898\u201d\ud83d\ude04\u3002

\n

\u5404\u4f4d\u5927\u4f6c\u5382\u91cc\u6709\u6ca1\u6709\u8fd9\u6837\u7528\u7684\uff1f\u5982\u679c\u6ca1\u6709\u539f\u56e0\u662f\u4ec0\u4e48\u5462\uff1f

\n" }, { "author": { "url": "member/bthulu", "name": "bthulu", "avatar": "https://cdn.v2ex.com/gravatar/c87484c1062f990c6ef9e1a9c27bdc60?s=73&d=retro" }, "url": "t/1005189", "date_modified": "2024-01-03T01:31:02+00:00", "content_html": "

\u6211\u4e00\u76f4\u7528\u8fd9\u4e2a\u6765\u751f\u6210\u591a\u4e2a\u8868\u516c\u7528\u7684\u81ea\u589e id.\n\u4eca\u5929\u95f2\u6765\u65e0\u804a\u6d4b\u4e86\u4e0b, tps=10, \u8fd9\u6709\u70b9\u4f4e\u7684\u79bb\u8c31\u554a\n\u6d4b\u8bd5\u4ee3\u7801

\n
 ConnectionMultiplexer redis = ConnectionMultiplexer.Connect(\"localhost\");\n Stopwatch stopwatch = Stopwatch.StartNew();\n var count = 100000;\n for (int i = 0; i < count; i++)\n {\n var id = (int)redis.GetDatabase().StringIncrement(\"PMDCS:id_hello\");\n }\n stopwatch.Stop();\n Console.WriteLine(\"\u7528\u65f6:\" + stopwatch.ElapsedMilliseconds + \", tps=\" + (count / stopwatch.ElapsedMilliseconds));\n
\n

\u6d4b\u8bd5\u7ed3\u679c\n\u7528\u65f6:8357, tps=11

\n", "date_published": "2024-01-02T07:16:22+00:00", "title": "\u6709\u8c01\u8bd5\u8fc7 redis \u7684 string \u81ea\u589e\u6027\u80fd\u5417, \u6211\u8fd9\u600e\u4e48\u662f\u4e2a\u4f4d\u6570?", "id": "t/1005189" }, { "author": { "url": "member/simple2025", "name": "simple2025", "avatar": "https://cdn.v2ex.com/gravatar/d8be1ee891483e0287a7350aae996608?s=73&d=retro" }, "url": "t/1003952", "date_modified": "2023-12-27T13:37:19+00:00", "content_html": "

\u4e2a\u4eba\u611f\u89c9 redis \u7a33\u5982\u6cf0\u5c71,\u5b8c\u5168\u4e0d\u4f1a\u574f,\u6ca1\u9047\u5230\u8fc7 redis \u5d29\u7684\u60c5\u51b5

\n

\u552f\u4e00\u7684\u4e00\u6b21,\u8fd8\u662f\u81ea\u5df1 py \u7a0b\u5e8f\u7684\u95ee\u9898,\u539f\u56e0\u8bb0\u4e0d\u6e05\u695a\u4e86,\u597d\u50cf\u662f\u81ea\u5df1\u5f80 redis \u91cc\u9762\u5199\u65e5\u5fd7,\u5fd8\u4e86\u8bbe\u7f6e\u8fc7\u671f\u65f6\u95f4\u4e86.

\n

\u8fd8\u662f\u5c31\u662f celery \u7528 redis \u505a broker,\u4f1a\u65ad\u8054\u7684\u95ee\u9898,\u4f46\u662f\u8fd9\u4e2a python \u5355\u7ebf\u7a0b\u9047\u5230 pub/sub \u5bfc\u81f4\u7684,redis \u8fd8\u662f\u7a33

\n", "date_published": "2023-12-27T13:32:08+00:00", "title": "\u7a81\u7136\u60f3\u8d77\u4e00\u4e2a\u95ee\u9898,\u4f60\u4eec\u7528\u7684 redis \u6709\u5d29\u8fc7\u5417?\u662f\u4ec0\u4e48\u539f\u56e0\u5d29\u7684?", "id": "t/1003952" }, { "author": { "url": "member/3630cn2023", "name": "3630cn2023", "avatar": "https://cdn.v2ex.com/gravatar/848230a8322d5cdf1068f3de4babd4f5?s=73&d=retro" }, "url": "t/1003357", "title": "\u5173\u8054\u8868\u67e5\u8be2\u7ed3\u679c\u7684 Redis \u7f13\u5b58\u5982\u4f55\u8bbe\u8ba1", "id": "t/1003357", "date_published": "2023-12-25T12:43:16+00:00", "content_html": "\u8868 T1(id, project_id, score), project \u8868
T2(id, type)\uff0c\u4e24\u4e2a\u8868\u5173\u8054\u67e5\u8be2\u7684\u63a5\u53e3 A(userId),B(projectId),\u5982\u679c\u7528 userId \uff0cprojectId \u4f5c\u4e3a\u4e24\u4e2a\u63a5\u53e3\u7684 Redis \u7f13\u5b58 key \uff0c\u90a3\u4e48\u63a5\u53e3 C \u7528\u901a\u8fc7\u8868 1 \u7684 id \u66f4\u65b0\u6570\u636e\u7684\u65f6\u5019\uff0cA \uff0cB \u63a5\u53e3\u7684 Redis \u7f13\u5b58\u5982\u4f55\u66f4\u65b0\uff1f" }, { "author": { "url": "member/quqiu", "name": "quqiu", "avatar": "https://cdn.v2ex.com/avatar/636e/fd4f/6004_large.png?m=1753419692" }, "url": "t/1003057", "date_modified": "2023-12-25T05:08:45+00:00", "content_html": "

\u73b0\u5728\u57fa\u4e8e redis \u5199\u4e86\u8bfb\u9501\u7684\u6a21\u5757\uff0c\u60f3\u505a\u4e2a\u5e76\u53d1\u6d4b\u8bd5\u3002\n\u73b0\u5728\u662f\u76f4\u63a5\u6d4f\u89c8\u5668\u5f00 F12 \uff0c\u8dd1\u4e00\u6b21\u8bf7\u6c42\uff0c\u7136\u540e\u590d\u5236 CURL \uff0c\u5199\u4e86\u4e2a BASH \u6765\u591a\u5e76\u53d1\u8dd1\u8fd9\u6bb5 CURL \u3002\n\u6709\u6ca1\u6709\u66f4\u65b9\u4fbf\u70b9\u7684\u5de5\u5177\u5404\u4f4d\u5927\u4f6c\u6559\u6559\u3002

\n", "date_published": "2023-12-24T13:41:45+00:00", "title": "API \u8bf7\u6c42\u5982\u4f55\u65b9\u4fbf\u7684\u505a\u5e76\u53d1\u6d4b\u8bd5\uff1f", "id": "t/1003057" }, { "author": { "url": "member/wuyiccc", "name": "wuyiccc", "avatar": "https://cdn.v2ex.com/avatar/d6e5/79a0/562772_large.png?m=1735704310" }, "url": "t/1002887", "date_modified": "2023-12-23T10:16:50+00:00", "content_html": "\u8bf7\u6559\u5144\u5f1f\u4eec\u4e00\u4e2a\u95ee\u9898\uff0cdatagrip \u8fde\u63a5 redis \u5982\u4f55\u663e\u793a redis \u952e\u7684 \u8fc7\u671f\u65f6\u95f4\u5462\uff1f
\u76ee\u524d\u6211\u7684 datargip \u7248\u672c\u662f 2023.3.2", "date_published": "2023-12-23T10:14:25+00:00", "title": "\u8bf7\u6559\u5144\u5f1f\u4eec\u4e00\u4e2a\u95ee\u9898\uff0c datagrip \u8fde\u63a5 redis \u5982\u4f55\u663e\u793a redis \u952e\u7684 \u8fc7\u671f\u65f6\u95f4\u5462\uff1f", "id": "t/1002887" }, { "author": { "url": "member/hulk", "name": "hulk", "avatar": "https://cdn.v2ex.com/avatar/fac4/bb38/30573_large.png?m=1668699158" }, "url": "t/1000021", "date_modified": "2023-12-14T06:07:20+00:00", "content_html": "

https://mp.weixin.qq.com/s/NZbo8-01aX7K-3Ba7XC10A

\n", "date_published": "2023-12-13T06:15:02+00:00", "title": "\u5173\u4e8e Redis RESP3 \u7684\u60f3\u6cd5", "id": "t/1000021" }, { "author": { "url": "member/hcymysql", "name": "hcymysql", "avatar": "https://cdn.v2ex.com/avatar/0c98/a56b/661159_large.png?m=1699839421" }, "url": "t/997370", "title": "\u8f7b\u4fbf\u5f0f Redis Monitor \u9762\u5411\u7814\u53d1\u4eba\u5458\u56fe\u5f62\u53ef\u89c6\u5316\u76d1\u63a7\u5e73\u53f0", "id": "t/997370", "date_published": "2023-12-04T01:23:51+00:00", "content_html": "

\u8f7b\u4fbf\u5f0f Redis Monitor \u9762\u5411\u7814\u53d1\u4eba\u5458\u56fe\u5f62\u53ef\u89c6\u5316\u76d1\u63a7\u5e73\u53f0\uff0c\u501f\u9274\u4e86 LEPUS(\u5929\u5154)\u76d1\u63a7\u5e73\u53f0\u4ee5\u53ca redis-cli info \u547d\u4ee4\u8f93\u51fa\u7684\u76d1\u63a7\u6307\u6807\u9879\uff0c\u53bb\u6389\u4e86\u4e00\u4e9b\u4e0d\u5fc5\u8981\u770b\u4e0d\u61c2\u7684\u76d1\u63a7\u9879\uff0c\u76ee\u524d\u91c7\u96c6\u4e86\u6570\u636e\u5e93\u8fde\u63a5\u6570\u3001QPS \u3001\u5185\u5b58\u4f7f\u7528\u7387\u7edf\u8ba1\u548c\u540c\u6b65\u590d\u5236\u5ef6\u8fdf\u65f6\u957f\uff0c\u4ee5\u53ca\u5217\u51fa\u5f53\u524d\u6240\u6709\u6162\u67e5\u8be2\u547d\u4ee4\u3002

\n

https://github.com/hcymysql/redis_monitor

\n

Redis Monitor \u53ef\u4ee5\u76d1\u63a7\u5355\u673a\u6a21\u5f0f\uff0c\u54e8\u5175\u6a21\u5f0f\uff0c\u96c6\u7fa4\u6a21\u5f0f\uff0c\u5e76\u4e14\u5f55\u5165\u4e00\u4e2a\u4e3b\u5e93\u6216\u8005\u4ece\u5e93 IP \uff0c\u81ea\u52a8\u53d1\u73b0\u4e3b\u5e93\u6216\u8005\u4ece\u5e93 IP \u4fe1\u606f\uff0c\u65e0\u9700\u4eba\u5de5\u518d\u6b21\u5f55\u5165\u3002

\n

\u91c7\u7528\u8fdc\u7a0b\u8fde\u63a5\u65b9\u5f0f\u83b7\u53d6\u6570\u636e\uff0c\u6240\u4ee5\u65e0\u9700\u8981\u5728 Redis \u670d\u52a1\u5668\u7aef\u90e8\u7f72\u76f8\u5173 agent \u6216\u8ba1\u5212\u4efb\u52a1\uff0c\u53ef\u5b9e\u73b0\u5fae\u4fe1\u548c\u90ae\u4ef6\u62a5\u8b66\u3002

\n

\u6ce8\uff1a\u76d1\u63a7\u73af\u5883\u4e3a Redis 6.2 \u4ee5\u4e0a\u7248\u672c\u3002

\n

\u89c6\u9891\u6f14\u793a\uff1a https://www.bilibili.com/video/BV1UC4y1A7F8/

\n" }, { "author": { "url": "member/Ackvincent", "name": "Ackvincent", "avatar": "https://cdn.v2ex.com/gravatar/bb9d416880e29c4102646717fa5671c9?s=73&d=retro" }, "url": "t/996334", "title": "Redis \u4e2d\u4f7f\u7528 pipeline \u6267\u884c\u547d\u4ee4\u65f6\uff0c\u6709\u5355\u6b21\u6267\u884c\u6570\u91cf\u7684\u9650\u5236\u5417\uff1f", "id": "t/996334", "date_published": "2023-11-29T11:35:29+00:00", "content_html": "

\u901a\u8fc7 scan \u65b9\u6cd5\u83b7\u53d6 1W \u4e2a key \u7684\u540d\u5b57\uff0c\u7136\u540e\u4f7f\u7528 pipeline \u6267\u884c memory_usage \u547d\u4ee4\u83b7\u53d6\u8fd9 1W \u4e2a key \u5360\u7528\u7a7a\u95f4\u7684\u5927\u5c0f\uff0c\u8fd9\u6837\u4f1a\u5bf9\u670d\u52a1\u5668\u9020\u6210\u5f88\u5927\u538b\u529b\u5417\uff1f\u73b0\u5728\u5728\u6d4b\u8bd5\u670d\u52a1\u5668\u4e0a\u6267\u884c\u611f\u89c9\u6ca1\u4ec0\u4e48\u538b\u529b\uff0c\u4e0d\u77e5\u9053\u751f\u4ea7\u73af\u5883\u4e0b\uff0c\u4f1a\u4e0d\u4f1a\u6709\u5f71\u54cd\u3002\n\u8c22\u8c22

\n" }, { "author": { "url": "member/joyanhui", "name": "joyanhui", "avatar": "https://cdn.v2ex.com/gravatar/7b99ebbc66f778639ccbfba19ea4ed66?s=73&d=retro" }, "url": "t/992960", "date_modified": "2023-11-17T16:32:23+00:00", "content_html": "

\u672c\u6765\u662f \u4e09\u53f0\u673a\u5668 \u5206\u522b\u6709\u4e00\u4e2a\u4e3b\u8282\u70b9\u7684\uff0c\u53cd\u590d\u5220\u9664\u8fc7\u51e0\u6b21\u8282\u70b9\u4e5f\u91cd\u542f\u8fc7\u51e0\u6b21\u673a\u5668\u3002

\n

\u7136\u540e\u4e3b\u8282\u70b9\u81ea\u52a8\u90fd\u8f6c\u79fb\u5230\u4e86\u5176\u4e2d\u4e00\u53f0\u673a\u5668\u4e0a\uff0c\u6b64\u65f6 kill \u6389\u8fd9\u53f0\u673a\u5668\uff0c\u53d1\u73b0\u96c6\u7fa4\u65e0\u6cd5\u6062\u590d\uff0c\u8c8c\u4f3c\u662f\u6ca1\u6cd5\u6295\u7968\u4e86\u3002

\n

\u5e94\u8be5\u5982\u4f55\u907f\u514d\u8fd9\u79cd\u60c5\u51b5\u53d1\u751f\u5462\uff1f

\n", "date_published": "2023-11-17T16:32:08+00:00", "title": "[\u6545\u969c\u6a21\u62df]redis cluster 3 \u673a 3 \u4e3b 6 \u4ece\uff0c\u4e3b\u8282\u70b9\u90fd\u8f6c\u79fb\u5230\u4e86\u5176\u4e2d\u4e00\u53f0\u673a\u5668\u4e0a\uff0c\u7136\u540e\u8fd9\u53f0\u673a\u5668\u5b95\u673a", "id": "t/992960" }, { "author": { "url": "member/Janice06", "name": "Janice06", "avatar": "https://cdn.v2ex.com/gravatar/47989fc4b14bb27bd06837a4bfc3a73f?s=73&d=retro" }, "url": "t/992205", "date_modified": "2023-11-16T00:15:35+00:00", "content_html": "

\u6211\u81ea\u5df1\u8fde\u63a5\u5de5\u5177\u662f\u7528\u7684 dbeaver \uff0c\u4f46\u662f dbeaver \u597d\u50cf\u4e0d\u80fd\u8fde\u63a5 redis \u96c6\u7fa4

\n", "date_published": "2023-11-15T10:18:11+00:00", "title": "\u4f60\u4eec\u73b0\u5728\u8fde\u63a5 redis \u96c6\u7fa4\u662f\u7528\u7684\u4ec0\u4e48\u5de5\u5177\uff0c\u53ef\u4ee5\u5206\u4eab\u4e00\u4e0b\u4e0b\u8f7d\u94fe\u63a5\u5417\uff1f", "id": "t/992205" }, { "author": { "url": "member/zhongpingjing", "name": "zhongpingjing", "avatar": "https://cdn.v2ex.com/avatar/8b26/adcf/458757_large.png?m=1619173095" }, "url": "t/991788", "date_modified": "2023-11-14T05:07:19+00:00", "content_html": "

\u5177\u4f53\u573a\u666f\uff1a

\n
    \n
  1. \u6709\u4e2a\u5355\u70b9\u767b\u5f55 CAS \u670d\u52a1\uff0c\u5176\u4ed6\u670d\u52a1\u767b\u5f55\u65f6\u4f1a\u8bf7\u6c42\u4e00\u4e2a ticket \uff0cCAS \u670d\u52a1\u9881\u53d1\u5b8c ticket \u540e\uff0c\u4f1a\u5199\u5165 redis \u3002
  2. \n
  3. \u5176\u4ed6\u670d\u52a1\u83b7\u53d6\u5230 ticket \u540e\uff0c\u4f1a\u8c03\u7528 CAS \u670d\u52a1\u7684\u53e6\u4e00\u4e2a\u63a5\u53e3\u53bb\u6821\u9a8c ticket \uff0c\u540c\u65f6\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u3002
  4. \n
\n

\u73b0\u5728\u5076\u5c14\u4f1a\u51fa\u73b0\u4e00\u4e2a\u95ee\u9898\uff1a\u6267\u884c\u7b2c 2 \u6b65\u64cd\u4f5c\u65f6\uff0c\u6709\u65f6\u5019\u6821\u9a8c ticket \u4f1a\u4e0d\u901a\u8fc7

\n

\u6392\u67e5\u4e00\u4e0b\uff1a\nredis \u4e3b\u4ece\u504f\u79fb\u6709\u70b9\u5927\uff0c\u9020\u6210\u4e3b\u4ece\u6570\u636e\u4e0d\u4e00\u6837\uff0c\u6821\u9a8c\u63a5\u53e3\u8d70\u4ece\u5e93\u65f6\u67e5\u8be2\u4e0d\u5230 ticket \u6240\u4ee5\u6821\u9a8c\u5931\u8d25\uff0c\u5927\u6982\u662f\u7f51\u7edc\u539f\u56e0\uff1f

\n

\u60f3\u5230\u7684\u4e00\u4e2a\u89e3\u51b3\u65b9\u6848\u662f\uff0c\u6821\u9a8c\u63a5\u53e3\u5f3a\u5236\u8d70\u4e3b\u5e93\uff0c\u4f46\u662f\u54e8\u5175\u6a21\u5f0f\u4e0b\u4e3b\u5e93\u662f\u4e0d\u56fa\u5b9a\uff0c\u6709\u5565\u529e\u6cd5\u5f3a\u5236\u8d70\u4e3b\u5e93\u5417\uff08 Java \u8bed\u8a00\u7684 SDK \uff09\uff1f

\n

\u6216\u8005\u6709\u66f4\u597d\u7684\u89e3\u51b3\u65b9\u6848\uff1f

\n", "date_published": "2023-11-14T05:01:52+00:00", "title": "\u6c42\u6559\u4e00\u4e0b Redis \u54e8\u5175\u6a21\u5f0f\u4e0b\uff0c\u4e3b\u4ece\u5ef6\u8fdf\u95ee\u9898", "id": "t/991788" }, { "author": { "url": "member/pppwww", "name": "pppwww", "avatar": "https://cdn.v2ex.com/gravatar/6e8adf02e2d7f6cec93df02dc514fd9f?s=73&d=retro" }, "url": "t/991060", "date_modified": "2023-11-12T03:43:19+00:00", "content_html": "

\u60f3\u95ee\u4e0b\u5927\u4f6c\u4eec 40M \u7684\u5b57\u7b26\u4e32\u9002\u5408\u653e\u5230 redis \u7f13\u5b58\u5417\uff1f\u5982\u679c\u4e0d\u9002\u5408\u7684\u8bdd\u600e\u4e48\u89e3\u51b3\u5462

\n", "date_published": "2023-11-11T15:16:09+00:00", "title": "\u60f3\u95ee\u4e0b\u5927\u4f6c 40M \u7684\u5b57\u7b26\u4e32\u9002\u5408\u653e\u5230 redis \u7f13\u5b58\u5417\uff1f", "id": "t/991060" }, { "author": { "url": "member/cMoon", "name": "cMoon", "avatar": "https://cdn.v2ex.com/avatar/6650/b2ac/595559_large.png?m=1682666344" }, "url": "t/990742", "title": "redis \u6709\u65f6\u53d6\u4e0d\u5230\u503c", "id": "t/990742", "date_published": "2023-11-10T08:51:03+00:00", "content_html": "

\u80cc\u666f:\nA \u8c03\u7528\u670d\u52a1 B,\u7136\u540e\u6bcf\u79d2\u67e5\u4e00\u6b21 redis \u53bb\u83b7\u53d6\u503c.\nB \u6536\u5230 A \u7684\u8bf7\u6c42\u540e\u5c06\u6570\u636e\u5199\u5165 redis.

\n

\u51fa\u73b0\u7684\u60c5\u51b5\u662f\u6709\u65f6\u5019 B \u5df2\u7ecf\u5c06\u6570\u636e\u5199\u5165 redis \u4e86,\u4f46\u662f A \u8bfb\u4e0d\u5230.\n\u67e5\u8be2\u5199\u5165\u4f7f\u7528\u7684\u540c\u4e00\u4e2a StringRedisTemplate.

\n

\u6709\u65f6\u5019\u67e5\u4e0d\u5230\u5c31\u5f88\u8ff7

\n
\n

\u987a\u4fbf\u5410\u69fd\u4e0b\u534e\u4e3a\u4e91 -- huaweicloud.csdn.net
\n\u70b9\u4e0b\u9605\u8bfb\u5168\u6587\u5c31\u81ea\u52a8\u83b7\u53d6\u624b\u673a\u53f7\u53d1\u9001\u6ce8\u518c\u9a8c\u8bc1\u7801..

\n" }, { "author": { "url": "member/wqq096737ink", "name": "wqq096737ink", "avatar": "https://cdn.v2ex.com/avatar/156e/b7ec/625663_large.png?m=1752942757" }, "url": "t/990634", "date_modified": "2023-11-10T05:14:14+00:00", "content_html": "\u4e8b\u52a1\u4e2d\u6709\u591a\u4e2a key \uff0clua \u811a\u672c\u4e5f\u4f1a\u64cd\u4f5c\u591a\u4e2a key \u3002

\u5982\u679c\u8fd9\u4e9b key \u80fd\u591f\u6563\u5217\u5728\u540c\u4e00\u4e2a slot \uff0c\u90a3\u6ca1\u4ec0\u4e48\u95ee\u9898\u3002

\u5982\u679c\u8fd9\u4e9b key \u4e4b\u786e\u4fdd\u6563\u5217\u5728\u540c\u4e00\u4e2a\u8282\u70b9\uff0c\u53ef\u4ee5\u5417\uff1f \u5927\u90e8\u5206\u535a\u5ba2\u90fd\u53ea\u8bf4\u8981\u6c42\u6563\u5217\u5728\u540c\u4e00\u4e2a slot \u3002

\u6563\u5217\u5728\u540c\u4e00\u4e2a\u8282\u70b9\u4f1a\u6709\u95ee\u9898\u5417\uff1f \u6709\u6ca1\u6709\u76f8\u5173\u53c2\u8003\u6587\u6863\uff1f", "date_published": "2023-11-10T04:20:20+00:00", "title": "redis \u96c6\u7fa4\u4e2d \u6267\u884c\u4e8b\u52a1 \u6216\u8005 lua \u811a\u672c \u6d89\u53ca\u5230\u591a\u4e2a key \u65f6\uff0c\u8fd9\u4e9b key \u8981\u6c42\u5728\u540c\u4e00\u4e2a\u8282\u70b9\u8fd8\u662f\u540c\u4e00\u4e2a slot\uff1f", "id": "t/990634" }, { "author": { "url": "member/lypdarling", "name": "lypdarling", "avatar": "https://cdn.v2ex.com/avatar/0893/1d76/23898_large.png?m=1772287583" }, "url": "t/986619", "title": "redis 7 \u6240\u6709\u547d\u4ee4\u90fd\u662f\u539f\u5b50\u7684\u5417\uff1f", "id": "t/986619", "date_published": "2023-10-30T02:58:31+00:00", "content_html": "

\u5b98\u7f51\u6709\u53e5\u8bdd

\n

Redis has a different evolution path in the key-value DBs where values can contain more complex data types, with atomic operations defined on those data types.

\n

\u662f\u4e0d\u662f\u6240\u6709 redis 7 \u7684\u547d\u4ee4\u90fd\u662f\u539f\u5b50\u7684\uff1f\u8fd9\u8ddf chatgpt \u4e2d\u7ed9\u7684\u7b54\u6848\u4e0d\u4e00\u6837

\n" }, { "author": { "url": "member/justthewayyouare", "name": "justthewayyouare", "avatar": "https://cdn.v2ex.com/gravatar/cfb99f09234a09f1aafe3120ec0fdcda?s=73&d=retro" }, "url": "t/984702", "date_modified": "2023-10-23T23:29:34+00:00", "content_html": "

\u611f\u89c9\u5c0f\u9879\u76ee\u7528\u5904\u4e0d\u5927

\n", "date_published": "2023-10-23T16:17:34+00:00", "title": "Redis \u662f\u9e21\u808b\u5417\uff1f", "id": "t/984702" }, { "author": { "url": "member/yodhcn", "name": "yodhcn", "avatar": "https://cdn.v2ex.com/avatar/ac1d/d52e/504833_large.png?m=1757154227" }, "url": "t/984010", "date_modified": "2023-10-21T09:11:15+00:00", "content_html": "Redis \u670d\u52a1\u6302\u4e86\uff0c\u4e00\u6bb5\u65f6\u95f4\u540e\u53c8\u6062\u590d\uff0c\u5982\u679c\u8fd9\u6bb5\u65f6\u95f4\u80fd\u5185\uff0c\u6709\u4fee\u6539\u6570\u636e\u5e93\u7684\u64cd\u4f5c\uff0c\u4e0d\u4f1a\u9020\u6210\u7f13\u5b58\u4e0e\u6570\u636e\u5e93\u4e0d\u4e00\u81f4\u5417?

\u5982\u679c\u662f Redis \u4e3b\u4ece\u96c6\u7fa4\uff0c\u80fd\u907f\u514d\u8fd9\u79cd\u60c5\u51b5\u5417\uff1f\u96c6\u7fa4\u5168\u6302\u4e86\u5462?


\u6ce8\uff1a\u76ee\u524d\u89e3\u51b3\u7f13\u5b58\u4e0e\u6570\u636e\u5e93\u4e00\u81f4\u6240\u4f7f\u7528\u7684\u65b9\u6848\uff0c\u662f\u53cc\u5199\u65b9\u6848\uff0c\u5199\u64cd\u4f5c-\u5148\u5199\u6570\u636e\u5e93\u518d\u5220\u7f13\u5b58\uff0c\u8bfb\u64cd\u4f5c-\u6709\u7f13\u5b58\u5c31\u8bfb\u7f13\u5b58\uff0c\u65e0\u7f13\u5b58\u5c31\u8bfb\u6570\u636e\u5e93\u540e\u91cd\u5efa\u7f13\u5b58

\u4f46\u8fd9\u79cd\u65b9\u6848\u7684\u95ee\u9898\u662f\uff0c\u7f13\u5b58\u670d\u52a1\u6302\u4e86\u540e\uff0c\u5728\u5199\u64cd\u4f5c\u65f6\u65e0\u6cd5\u5220\u6389\u8fc7\u671f\u7f13\u5b58\uff0c\u6700\u540e\u7b49\u7f13\u5b58\u670d\u52a1\u6062\u590d\uff0c\u8bfb\u64cd\u4f5c\u8bfb\u5230\u7684\u5c31\u662f\u8fc7\u671f\u6570\u636e


\u8bf7\u8001\u54e5\u4eec\u6307\u70b9\u4e00\u4e0b\uff0c
\u96be\u9053\u56e0\u4e3a\u7f13\u5b58\u670d\u52a1\u6302\u6389\uff0c\u5c31\u62d2\u7edd\u4e00\u5207\u5199\u64cd\u4f5c\u5417\uff1f", "date_published": "2023-10-21T03:27:12+00:00", "title": "Redis \u670d\u52a1\u6302\u4e86\uff0c\u4e00\u6bb5\u65f6\u95f4\u540e\u53c8\u6062\u590d\uff0c\u4e0d\u4f1a\u9020\u6210\u7f13\u5b58\u4e0e\u6570\u636e\u5e93\u4e0d\u4e00\u81f4\u5417?", "id": "t/984010" }, { "author": { "url": "member/yodhcn", "name": "yodhcn", "avatar": "https://cdn.v2ex.com/avatar/ac1d/d52e/504833_large.png?m=1757154227" }, "url": "t/979119", "date_modified": "2023-10-06T01:26:43+00:00", "content_html": "\u8fd9\u662f\u4e0a\u6b21\u9762\u8bd5\u4e2d\uff0c\u867d\u7136\u9762\u8bd5\u5b98\u95ee\u6211\u7684\u95ee\u9898\uff0c\u5f53\u65f6\u7ed9\u6211\u95ee\u8ff7\u7cca\u4e86\u3002
Q\uff1a\u4e3a\u4ec0\u4e48 MySQL \u6709\u7f13\u5b58\uff0c\u8fd8\u8981\u4f7f\u7528 Redis \uff1f
A\uff1aMySQL \u4ee5\u524d\u6709\u7f13\u5b58\uff0c\u4f46\u7531\u4e8e\u547d\u4e2d\u7387\u4e0d\u9ad8\uff0c\u5728\u65b0\u7248\u672c\u4e2d\u5df2\u7ecf\u820d\u5f03\u6389\u4e86\u3002
Q\uff1a\u90a3 Oracle \u6570\u636e\u5e93\u5462\uff1f Oracle \u6570\u636e\u5e93\u6709\u7f13\u5b58\u5417\uff1f
A\uff1a\u4e0d\u6e05\u695a\u3002
Q\uff1a\u4e0d\u8bba\u662f MySQL \u8fd8\u662f Oracle \uff0c\u53ea\u8981\u662f\u6570\u636e\u5e93\u5c31\u5e94\u8be5\u90fd\u6709\u7f13\u5b58\uff0c\u90a3\u4e3a\u4ec0\u4e48\u6570\u636e\u5e93\u6709\u7f13\u5b58\uff0c\u8fd8\u8981\u4f7f\u7528 Redis \uff1f
A: Redis \u652f\u6301\u5206\u7247\u96c6\u7fa4\uff0c\u7f13\u5b58\u5bb9\u91cf\u5bb9\u6613\u6269\u5c55\uff1b\u800c MySQL \u662f\u4e3a\u5355\u673a\u8bbe\u8ba1\u7684\uff0c\u7f13\u5b58\u5bb9\u91cf\u53d7\u9650\u4e8e\u8fd0\u884c MySQL \u7684\u4e3b\u673a\u5185\u5b58\u3002

\u4f46\u9762\u8bd5\u5b98\u597d\u50cf\u5bf9\u8fd9\u4e2a\u56de\u7b54\u4e0d\u592a\u6ee1\u610f
\u73b0\u5728\u56de\u60f3\u8d77\u6765\uff0c\u867d\u7136\u5f53\u65f6\u662f\u6211\u6df7\u6dc6\u4e86\u201cMySQL \u67e5\u8be2\u7f13\u5b58\u201d\u548c\u201cMySQL \u7684 Buffer Pool\u201d\uff0c\u4f46\u662f\uff0cMySQL \u7684 Buffer Pool \u4e5f\u8d77\u5230\u4e86\u7f13\u5b58\u4f5c\u7528\uff0c\u51cf\u5c11\u78c1\u76d8 IO \u3002

\u4e3a\u4ec0\u4e48 MySQL \u6709\u7f13\u5b58\uff0c\u8fd8\u8981\u4f7f\u7528 Redis \uff1f
\u8fd9\u4e2a\u95ee\u9898\uff0c\u76ee\u524d\u6211\u53ea\u60f3\u5230\u4ece\u4e24\u4e2a\u89d2\u5ea6\u56de\u7b54\uff1a
1. Redis \u652f\u6301\u5206\u7247\u96c6\u7fa4\uff0c\u7f13\u5b58\u5bb9\u91cf\u5bb9\u6613\u6269\u5c55\u3002
2. \u591a\u7ea7\u7f13\u5b58\u3002Redis \u5185\u5b58->Buffer Pool->\u78c1\u76d8\u3002
\u5404\u4f4d\u8fd8\u6709\u4ec0\u4e48\u522b\u7684\u770b\u6cd5\u5417\uff1f", "date_published": "2023-10-05T15:48:33+00:00", "title": "\u4e3a\u4ec0\u4e48 MySQL \u6709\u7f13\u5b58\uff0c\u8fd8\u8981\u4f7f\u7528 Redis\uff1f", "id": "t/979119" }, { "author": { "url": "member/xing393939", "name": "xing393939", "avatar": "https://cdn.v2ex.com/avatar/9096/5ec7/18925_large.png?m=1652855853" }, "url": "t/975618", "title": "\u5173\u4e8e\u7f13\u5b58\u4e00\u81f4\u6027\u95ee\u9898\uff0c\u4e0d\u77e5\u9053\u6211\u8fd9\u4e2a\u65b9\u6848\u662f\u5426\u53ef\u884c", "id": "t/975618", "date_published": "2023-09-20T09:46:05+00:00", "content_html": "

\u6570\u636e\u5e93\u548c\u7f13\u5b58\u7684\u6570\u636e\u4e00\u81f4\u6027\u95ee\u9898\u662f Web \u5f00\u53d1\u4e2d\u7ecf\u5e38\u78b0\u5230\u7684\uff0c\u4e00\u822c\u6211\u4eec\u90fd\u662f\u91c7\u7528 cache aside \u65b9\u6848\uff0c\u6bd4\u5982\u8fd9\u7bc7\u6587\u7ae0\u4ecb\u7ecd\u7684\u3002\u6700\u8fd1\u53c2\u8003Scaling Memcache at Facebook\uff0c\u6211\u60f3\u5230\u4e86\u4e00\u4e2a\u57fa\u4e8e redis \u7684\u7b80\u5316\u7248\u672c\uff0c\u4e0d\u77e5\u662f\u5426\u53ef\u884c\uff0c\u5e0c\u671b\u5927\u5bb6\u5e2e\u5fd9\u53c2\u8003\u4e0b\uff1a

\n
    \n
  1. cacheMiss \u65f6\uff0c\u751f\u6210\u4e00\u4e2a\u5bf9\u5e94 cacheKey \u7684 leaseId \uff08 redis \u751f\u6210\u4e00\u4e2a\u503c\uff1akey \u662fcacheKey + \"_id\"\uff0cvalue \u662f\u968f\u673a\u6570\uff0cexpireTime=10 \u79d2\uff0c\u82e5 key \u5df2\u5b58\u5728\u5219\u5931\u8d25\uff09\uff0c\u82e5\u751f\u6210 leaseId \u5931\u8d25\u5219\u7b49\u5f85\u5e76\u91cd\u8bd5\u3002
  2. \n
  3. cacheMiss \u540e\uff0c\u5148\u67e5 db \u518d\u66f4\u65b0\u7f13\u5b58\uff0c\u4f46\u66f4\u65b0\u7f13\u5b58\u7684\u65f6\u5019\uff0c\u9700\u8981\u68c0\u67e5 leaseId \u662f\u5426\u6709\u6548\uff08 redis \u662f\u5426\u5b58\u5728 key=cacheKey + \"_id\"\u3001value=leaseId \u7684\u503c\uff09
  4. \n
  5. \u6bcf\u6b21\u66f4\u65b0 db \u540e\uff0c\u5220\u9664\u7f13\u5b58\uff0c\u540c\u65f6\u5220\u9664 leaseId \uff08 redis \u5220\u9664 key=cacheKey + \"_id\"\u7684\u503c\uff09
  6. \n
\n

\u8fd9\u6837\u6709\u4ec0\u4e48\u95ee\u9898\u5417\uff1f

\n" }, { "author": { "url": "member/smartxia", "name": "smartxia", "avatar": "https://cdn.v2ex.com/gravatar/e5f2f3e3c11f9815ef172a4f18259260?s=73&d=retro" }, "url": "t/966351", "title": "redis \u96c6\u7fa4\u83b7\u53d6\u4e0d\u5230\u8fde\u63a5", "id": "t/966351", "date_published": "2023-08-18T02:51:40+00:00", "content_html": "

\u6211\u4eec\u7ebf\u4e0a\u6709\u4e2a\u670d\u52a1\uff0c\u7528\u7684\u662f tomcat \u96c6\u7fa4\u90e8\u7f72\uff0csession \u653e\u5728 redis cluster \u91cc\u9762\uff0c\u76ee\u524d\u542f\u52a8\u4e86 6 \u53f0\u8282\u70b9\u3002\u6700\u8fd1\u7a81\u7136\u6709\u67d0\u4e2a\u8282\u70b9\u4ece\u8fde\u63a5\u6c60\u62ff\u4e0d\u5230\u8d44\u6e90\uff0c\u4f3c\u4e4e\u90fd\u662f\u5728\u83b7\u53d6\u7528\u6237\u4fe1\u606f\u90a3\u91cc\u62a5\u9519\u7684\uff0c\u57fa\u672c\u4e0a\u90fd\u662f\u63d0\u793a\uff1aJedisException: Could not get a resource from the pool \uff0cNoSuchElementException: Timeout waiting for idle object \uff1b\u6211\u4eec\u7528\u7684\u662f jedis2.9.0 \uff0c\u57fa\u4e8e commons-pool2 \u7684\u8fde\u63a5\u6c60\uff0c\u5728\u7f51\u4e0a\u641c\u7d22\u7c7b\u4f3c\u7684\u95ee\u9898\u90fd\u8bf4\u662f jedis \u7248\u672c\u95ee\u9898\uff0c\u628a 2.9.1 \u56de\u9000\u5230 2.9.0 \uff0c\u7ed3\u679c\u8fd9\u4e0d\u662f\u5de7\u4e86\uff0c\u6211\u4eec\u7528\u7684\u5c31\u662f 2.9.0 \uff0c\u4e5f\u62a5\u8fd9\u4e2a\u9519\u3002\u5947\u602a\u7684\u5c31\u662f 6 \u53f0 tomcat \u5c31\u5176\u4e2d\u4e00\u53f0\u62a5\u9519\u4e86\uff0c\u4e4b\u524d\u662f maxTotal=1000 \uff0cmaxIdle=200 \uff0c\u540e\u6765 2 \u4e2a\u90fd\u6539\u6210\u4e86 200 \uff0c\u91cd\u542f\u540e\uff0c\u8fc7\u4e86 1 \u5929\u53c8\u6362\u4e86\u4e00\u53f0 tomcat \u7ee7\u7eed\u62a5\u8fd9\u4e2a\u9519\uff0c\u5927\u4f6c\u4eec\u6709\u6ca1\u6709\u5565\u65b9\u6848\uff1f

\n" }, { "author": { "url": "member/joyanhui", "name": "joyanhui", "avatar": "https://cdn.v2ex.com/gravatar/7b99ebbc66f778639ccbfba19ea4ed66?s=73&d=retro" }, "url": "t/965630", "title": "\u7528 redis \u76f4\u63a5\u66ff\u6362 app/\u7269\u8054\u7f51\u7684 mq \u670d\u52a1\u5668\u7684\u53ef\u884c\u6027\u5927\u5417\uff1f\u600e\u4e48\u5bf9\u5ba2\u6237\u7aef\u8fdb\u884c\u9650\u5236", "id": "t/965630", "date_published": "2023-08-15T16:27:17+00:00", "content_html": "

\u73b0\u6709\u65b9\u6848\u662f mqtt \u670d\u52a1\u5668\u3002\n\u4f46\u662f\u4eca\u5929\u4ed4\u7ec6\u770b\u4e86\u4e86\u4e00\u4e0b redis7 \u7684 acl \u63a7\u5236\u3002\u611f\u89c9\u6743\u9650\u53ef\u4ee5\u7f29\u5c0f\u5230\u5f88\u5c0f \u3002\u53e6\u5916 Stream \u7ed3\u6784\u53ef\u4ee5\u76f4\u63a5\u7528 redis \u89e3\u51b3\u6d88\u606f\u6301\u4e45\u5316\u7684\u95ee\u9898\u3002\n\u6240\u4ee5\u5728\u7422\u78e8\u7528 redis \u76f4\u63a5\u505a mq \u670d\u52a1\u5668\u3002\u4e0d\u518d\u7ecf\u8fc7 mqtt \u8f6c\u53d1\u4e00\u6b21\u6d6a\u8d39\u6027\u80fd\u3002 \u76f4\u63a5\u7ed9\u6bcf\u4e00\u4e2a\u7528\u6237\u7684\u5ba2\u6237\u7aef\u5206\u914d\u4e00\u4e2a redis \u8d26\u53f7\uff0c\u8d26\u53f7\u5b9a\u65f6\u6a2a\u6362\u3002

\n

\u56e0\u4e3a\u7528\u6237\u7684\u5ba2\u6237\u7aef\u4e0d\u53ef\u4fe1\uff0c\u6709\u51e0\u4e2a\u95ee\u9898\u4e0d\u77e5\u9053\u5982\u4f55\u89e3\u51b3\uff0c\u72ec\u7acb\u7684\u4e34\u65f6\u8d26\u53f7\u89e3\u51b3\u4e86\u5ba2\u6237\u7aef\u7684\u5b89\u5168\u95ee\u9898\uff0c\u90a3\u4e48\u4e3b\u8981\u662f\u5ba2\u6237\u7aef\u7684\u8d44\u6e90\u5360\u7528\u7684\u9650\u5236\u4e0a\u3002

\n\n

\u6682\u65f6\u53ea\u60f3\u5230\u8fd9\u4e9b\uff0c\u6073\u6c42\u5404\u4f4d\u8d50\u6559\uff01

\n" }, { "author": { "url": "member/ben548", "name": "ben548", "avatar": "https://cdn.v2ex.com/gravatar/4823772b00d8680776306ddbccc88133?s=73&d=retro" }, "url": "t/962146", "title": "redis \u600e\u4e48\u88c1\u526a zset \u53ea\u4fdd\u7559\u6392\u540d\u524d 100 \u7684\u6570\u636e", "id": "t/962146", "date_published": "2023-08-03T09:12:04+00:00", "content_html": "" }, { "author": { "url": "member/ben548", "name": "ben548", "avatar": "https://cdn.v2ex.com/gravatar/4823772b00d8680776306ddbccc88133?s=73&d=retro" }, "url": "t/960000", "title": "\u7f13\u5b58\u5931\u6548\u540e\u5148\u8fd4\u56de\u518d\u89e6\u53d1\u66f4\u65b0\u7684\u573a\u666f\u8981\u600e\u4e48\u5904\u7406\uff1f", "id": "t/960000", "date_published": "2023-07-26T11:59:39+00:00", "content_html": "\u573a\u666f\uff1a\u6211\u8981\u7f13\u5b58\u4e00\u4efd\u6570\u636e\uff0c\u6bd4\u5982\u7f13\u5b58 10 \u5206\u949f\uff0c\u7136\u540e\u5982\u679c\u6709\u8bbf\u95ee\uff0c\u53d1\u73b0\u7f13\u5b58\u5931\u6548\u4e86\uff0c\u5c31\u5148\u8fd4\u56de\uff0c\u7136\u540e\u518d\u89e6\u53d1\u7f13\u5b58\u66f4\u65b0\uff0c\u8fd9\u4e2a\u5148\u8fd4\u56de\u518d\u89e6\u53d1\u7f13\u5b58\u66f4\u65b0\u8981\u600e\u4e48\u505a\u5462\uff1f
\u6211\u60f3\u7684\u65b9\u6848\uff1a
\u5f80\u6d88\u606f\u961f\u5217\u91cc\u9762\u53d1\u6d88\u606f\u7684\u65b9\u5f0f\uff0c\u4f46\u662f\u591a\u7528\u6237\u5e76\u53d1\u7684\u60c5\u51b5\u4e0b\uff0c\u5176\u5b9e\u4f1a\u6709\u591a\u4e2a\u7528\u6237\u8fc7\u6765\u8bf7\u6c42\u66f4\u65b0\u7f13\u5b58\uff0c\u5f53\u7136\u53ef\u4ee5\u7528\u5206\u5e03\u5f0f\u9501\u6765\u5904\u7406\uff0c\u53ea\u8ba9\u4e00\u4e2a\u7528\u6237\u751f\u6210\u7f13\u5b58\u6210\u529f\u3002
\u8fd9\u4e2a\u5c31\u662f\u6211\u7684\u4e00\u4e2a\u60f3\u6cd5\uff0c\u6709\u6ca1\u6709\u66f4\u597d\u7684\u65b9\u6848\uff1f" }, { "author": { "url": "member/golangggg", "name": "golangggg", "avatar": "https://cdn.v2ex.com/gravatar/12918e305aeeeb65c293a1ae241f412e?s=73&d=retro" }, "url": "t/958903", "date_modified": "2023-07-22T17:33:14+00:00", "content_html": "\u5982\u9898 \u60f3\u4f7f\u7528 redis \u5b9e\u73b0\u4e00\u4e2a\u5747\u5300\u4f7f\u7528 ip \u7684\u529f\u80fd,
\u81ea\u5df1\u6709 10 \u4e2a\u4ee3\u7406 ip, \u60f3\u5747\u5300\u7684\u4f7f\u7528 ( \u8f6e\u8bad\u7740\u7528 \u4e00\u4e2a\u63a5\u7740\u4e00\u4e2a \u5faa\u73af\u5f80\u590d)
\u4f7f\u7528\u8fc7\u4e24\u79cd\u65b9\u6848
1.ip \u5b58\u4e3a set \u7c7b\u578b \u6bcf\u6b21\u4f7f\u7528 srandmember \u968f\u673a\u62bd\u53d6, \u4f46\u6d4b\u8bd5\u53d1\u73b0 \u975e\u5e38\u4e0d\u968f\u673a
2.ip \u5b58\u4e3a list \u7c7b\u578b \u6bcf\u6b21 rpoplpush \u5230\u540c\u4e00\u961f\u5217, \u8fd9\u4e2a\u53ef\u4ee5\u5b9e\u73b0\u5b8c\u5168\u5e73\u5747\u7684\u4f7f\u7528,\u4f46\u6709\u4e2a\u95ee\u9898\u65e0\u6cd5\u89e3\u51b3, \u56e0\u4e3a\u53ef\u80fd\u67d0\u4e00\u4e2a ip \u67d0\u77ed\u65f6\u95f4\u4e0d\u53ef\u4ee5\u4f7f\u7528, \u9700\u8981\u4ece\u961f\u5217\u4e2d\u79fb\u9664, \u4f46\u662f\u4f7f\u7528 list \u65e0\u6cd5\u79fb\u9664\u67d0\u4e00\u4e2a\u5931\u6548\u7684 ip
\u60f3\u95ee\u4e0b\u5927\u4f6c\u4eec \u6709\u4ec0\u4e48\u597d\u7684\u89e3\u51b3\u65b9\u6848\u5417", "date_published": "2023-07-22T17:31:36+00:00", "title": "\u5173\u4e8e redis \u4e00\u4e2a\u5c0f\u95ee\u9898(\u968f\u673a\u6027)", "id": "t/958903" }, { "author": { "url": "member/ryan961", "name": "ryan961", "avatar": "https://cdn.v2ex.com/gravatar/707ba67287cce342f157e13ebb18478b?s=73&d=retro" }, "url": "t/957661", "title": "\u6c42\u6559\u5927\u4f6c\uff0c\u7ebf\u4e0a redis cluster \u4e2d\u9002\u5408\u4f7f\u7528 redis lua script \u5417\uff1f\u4ee5\u53ca\u4f7f\u7528\u65f6\u6709\u4ec0\u4e48\u6ce8\u610f\u4e8b\u9879\uff1f", "id": "t/957661", "date_published": "2023-07-18T04:02:30+00:00", "content_html": "

\u6211\u5c06\u4e00\u90e8\u5206\u903b\u8f91\u4ee3\u7801\u901a\u8fc7 lua \u811a\u672c\u5b9e\u73b0\uff0c\u53d8\u76f8\u7684\u5b9e\u73b0\u539f\u5b50\u64cd\u4f5c(\u5982\u4e0b)\uff0c\u4f46\u4e4b\u524d\u4f7f\u7528 lua \u811a\u672c\u662f\u9047\u5230\u8fc7 not in the same slot \u7684\u9519\u8bef\uff0c\u611f\u89c9\u6211\u7684\u8fd9\u4e2a\u811a\u672c\u53ef\u80fd\u4e0e\u4f1a\u9047\u5230\u3002\u5982\u679c\u6211\u771f\u7684\u901a\u8fc7 key \u52a0\u524d\u7f00\u7684\u65b9\u5f0f\u4fdd\u8bc1\u4ed6\u4eec\u5728\u540c\u4e00\u4e2a slot \u5185\u662f\u4e0d\u662f\u4e5f\u4f1a\u5bfc\u81f4 cluster \u5904\u4e8e\u4e00\u4e2a\u4e0d\u5065\u5eb7\u7684\u96c6\u7fa4\u72b6\u6001\u3002

\n
local userAttributiOnKey= KEYS[1];\nlocal humeSource = KEYS[2];\nlocal attributeKeys = cjson.decode(KEYS[3]);\n\nif redis.call(\"EXISTS\", userAttributionKey) == 1 then\n -- get attribution cache\n local res = redis.call(\"GET\", userAttributionKey);\n if res then\n return { 1, res };\n end\nend\n\nlocal matchResult = {};\nlocal hits = {};\nlocal latestTime = 0;\nfor i = 1, #attributeKeys do\n local indexInfoString = redis.call(\"GET\", attributeKeys[i]);\n if indexInfoString then\n local indexInfo = cjson.decode(indexInfoString);\n local reportSource = indexInfo['report_source'];\n local uniqId = indexInfo['uniq_id'];\n local timestamp = tonumber(indexInfo['timestamp']);\n\n if humeSource == '' or humeSource == indexInfo['report_source'] then\n -- check attribute index info\n if reportSource ~= '' and uniqId ~= '' then\n if timestamp > latestTime then\n indexInfo['hit'] = attributeKeys[i];\n indexInfo['match_res'] = 'matched';\n matchResult = indexInfo;\n latestTime = timestamp;\n end\n\n table.insert(hits, attributeKeys[i]);\n else\n return redis.error_reply(\"Invalid Info:\" .. indexInfoString);\n end\n end\n\n -- delete attribute key cache\n redis.call(\"DEL\", attributeKeys[i])\n end\nend\n\nif #hits > 0 then\n matchResult['hits'] = hits;\n local matchResultStr = cjson.encode(matchResult);\n\n -- set attribution cache\n redis.call(\"SET\", userAttributionKey, matchResultStr, \"EX\", ARGV[1]);\n return { 1, matchResultStr };\nend\n\nreturn { 0, cjson.encode(matchResult) };\n
\n

\u8bf7\u6559\u4e0b\u5927\u4f6c\u548c\u524d\u8f88\uff0c\u6211\u8fd9\u662f\u4e0d\u662f\u4e00\u79cd\u9519\u8bef\u7684\u4f7f\u7528\u65b9\u5f0f\uff1f\u4ee5\u53ca lua script \u4f7f\u7528\u65f6\u6709\u4ec0\u4e48\u6ce8\u610f\u4e8b\u9879\uff1f

\n" }, { "author": { "url": "member/JimmyChan1506", "name": "JimmyChan1506", "avatar": "https://cdn.v2ex.com/gravatar/f121a7434fce108c25344d55ef36cecb?s=73&d=retro" }, "url": "t/956790", "title": "\u600e\u4e48\u4f7f\u7528\u547d\u4ee4\u6279\u91cf\u5220\u9664\u5339\u914d\u7684 key \u503c?", "id": "t/956790", "date_published": "2023-07-14T08:17:18+00:00", "content_html": "

\u4f7f\u7528\u4e0b\u9762\u7684\u547d\u4ee4\u53ef\u4ee5\u67e5\u5230\u4e00\u5806 key

\n
redis-cli -a myPassword -h redis-host -p 6379 --scan --pattern '*myKey*' \n
\n

\u4f46\u4f7f\u7528\u4e0b\u9762\u7684\u547d\u4ee4,\u5374\u65e0\u6cd5\u5220\u9664\u6210\u529f

\n
redis-cli -a myPassword -h redis-host -p 6379 --scan --pattern '*myKey*' | xargs redis-cli -a myPassword -h redis-host -p 6379 unlink \n(integer) 0\n
\n

\u5f53\u7136\u4e86, \u628a unlink \u6539\u6210 del \u4e5f\u662f\u4e00\u6837\u7684\u6548\u679c, \u4e0d\u77e5\u9053\u5927\u5bb6\u6709\u6ca1\u6709\u89e3\u51b3\u8fc7\u4e00\u6837\u7684\u95ee\u9898?

\n" }, { "author": { "url": "member/ben548", "name": "ben548", "avatar": "https://cdn.v2ex.com/gravatar/4823772b00d8680776306ddbccc88133?s=73&d=retro" }, "url": "t/955072", "title": "\u5bf9 redis \u7684 zset \u505a\u5206\u7247\u7684\u65f6\u5019\u600e\u4e48\u9009\u62e9\u5206\u7247\u4e2a\u6570", "id": "t/955072", "date_published": "2023-07-08T04:09:50+00:00", "content_html": "\u80cc\u666f\uff1a\u6d3b\u52a8\u573a\u666f\uff0c\u7528\u6237\u53ef\u4ee5\u8ba2\u9605\u6d3b\u52a8\uff0c\u8ba2\u9605\u5b8c\u4f1a\u5728\u6d3b\u52a8\u5f00\u59cb\u524d\u6536\u5230\u5f00\u59cb\u7684\u901a\u77e5\uff0c\u76ee\u524d\u4e86\u89e3\u5230\u5982\u679c\u662f\u70ed\u95e8\u6d3b\u52a8\u8ba2\u9605\u4eba\u6570\u53ef\u80fd\u8d85\u8fc7\u767e\u4e07\uff0c\u4f46\u662f\u6709\u4e9b\u4e0d\u600e\u4e48\u70ed\u95e8\u7684\u6d3b\u52a8\u53ef\u80fd\u53ea\u6709\u6570\u767e\u4eba\u6216\u8005\u4eba\u6570\u662f 0 \u3002
\u73b0\u72b6\uff1a\u5173\u6ce8\u4eba\u6570\u5b58\u5728 redis \u7684 zset \u4e2d\uff0c\u6bcf\u4e2a\u6d3b\u52a8\u6709\u4e00\u4e2a\u72ec\u7acb\u7684 zset \u3002\u53d1\u9001 push \u6d88\u606f\u901a\u77e5\u7684\u65f6\u5019\uff0c\u662f\u5206\u9875\u904d\u5386 zset \uff0c\u9010\u4e2a\u53d1\u9001\u901a\u77e5\u3002\u53ef\u80fd\u5728\u5173\u6ce8\u6570\u8d85\u767e\u4e07\u7684\u65f6\u5019\u9700\u8981\u8f83\u957f\u7684\u5904\u7406\u65f6\u95f4\uff08\u6bd4\u5982\u8d85\u8fc7 5 \u5206\u949f\uff09\u3002
\u8981\u6c42\uff1a\u5e0c\u671b\u5728\u63a8\u9001\u6d88\u606f\u65f6\u5c3d\u53ef\u80fd\u7684\u5feb\uff0c\u4f4e\u5ef6\u65f6\u3002
\u4e3a\u4e86\u8fbe\u5230\u8fd9\u4e2a\u8981\u6c42\uff0c\u9009\u62e9\u5bf9 zset \u505a\u5206\u7247\uff0c\u5206\u7247\u7684\u89c4\u5219\u662f\uff1a\u6309\u8ba2\u9605\u7528\u6237\u7684 userid \u505a hash \u53d6\u503c\uff0c\u53d6\u503c\u7ed3\u679c\u6309\u5206\u7247\u6570\u53d6\u6a21\uff0c\u5728\u5206\u914d\u5230\u76f8\u5e94\u7684 zset \u5206\u7247\u4e0a\u3002
\u95ee\u9898\uff1azset \u6570\u636e\u9664\u4e86\u627f\u62c5 push \u6d88\u606f\u901a\u77e5\u7684\u6570\u636e\u6e90\u4e4b\u5916\uff0c\u8fd8\u7528\u4e8e\u67e5\u8be2\u7528\u6237\u662f\u5426\u8ba2\u9605\u8be5\u6d3b\u52a8\u7684\u72b6\u6001\u67e5\u8be2\uff08\u8fd9\u4e2a\u6ca1\u5565\u95ee\u9898\uff0c\u627e\u5230\u5bf9\u5e94\u7684\u5206\u7247\uff0c\u7136\u540e\u67e5\u8be2 zscore \u5373\u53ef\uff09\u548c\u8ba2\u9605\u603b\u6570\u8ba1\u7b97\u7684\u89d2\u8272\u3002\u5982\u679c\u6211\u4e3a\u4e86\u67d0\u4e9b\u6d3b\u52a8\u53ef\u80fd\u8d85\u8fc7\u767e\u4e07\u7684\u5173\u6ce8\u8ba2\u9605\u6570\uff0c\u800c\u8bbe\u7f6e 1024 \u4e2a zset \u5206\u7247\uff0c\u662f\u4e0d\u662f\u610f\u5473\u7740\u7edd\u5927\u591a\u6570\u7684\u6d3b\u52a8\uff0c\u4e3a\u4e86\u8ba1\u7b97\u603b\u6570\u90fd\u8981\u53bb\u505a 1024 \u6b21 zcount \u518d\u5c06 result \u76f8\u52a0\u624d\u80fd\u5f97\u5230\u7ed3\u679c\uff1f\u611f\u89c9\u4e5f\u4e0d\u662f\u5f88\u597d\u7684\u8bbe\u8ba1\u3002\u3002\u3002\u3002\uff08\u5f53\u7136\u4e5f\u53ef\u4ee5\u603b\u6570\u5355\u72ec\u7ef4\u62a4\uff0c\u4e0d\u901a\u8fc7 zset \u5206\u7247\u7ed3\u679c\u76f8\u52a0\u83b7\u53d6\uff0c\u5c31\u662f\u8fd9\u6837\u53c8\u589e\u52a0\u4e86\u5b58\u50a8\u6210\u672c\uff09
\u5927\u5bb6\u89c9\u5f97\u8be5\u600e\u4e48\u505a\u6bd4\u8f83\u5408\u9002\u5462\uff1f" }, { "author": { "url": "member/ben548", "name": "ben548", "avatar": "https://cdn.v2ex.com/gravatar/4823772b00d8680776306ddbccc88133?s=73&d=retro" }, "url": "t/953983", "title": "\u5173\u4e8e\u6d88\u606f\u63a8\u9001\u65b9\u6848\u7684\u8ba8\u8bba", "id": "t/953983", "date_published": "2023-07-04T06:32:30+00:00", "content_html": "\u80cc\u666f\uff1a\u8fd0\u8425\u53ef\u4ee5\u914d\u7f6e\u65e0\u4e0a\u9650\u7684\u6d3b\u52a8\uff0c\u5728\u6d3b\u52a8\u5217\u8868\u548c\u8be6\u60c5\u4e2d\uff0c\u7528\u6237\u53ef\u4ee5\u8fdb\u884c\u5173\u6ce8\uff0c\u5173\u6ce8\u540e\u9700\u8981\u5728\u6d3b\u52a8\u5f00\u59cb\u524d 15 \u5206\u949f\u5411\u63a8\u9001\u6d3b\u52a8\u5f00\u59cb\u7684\u901a\u77e5\u6d88\u606f\u3002
\u5f53\u524d\u65b9\u6848\uff1a\u521b\u5efa\u5b8c\u6d3b\u52a8\u4e4b\u540e\u5411\u5ef6\u8fdf\u961f\u5217\u4e2d\u6295\u9012\u4e00\u4e2a\u6267\u884c\u65f6\u95f4\u4e3a\uff08\u6d3b\u52a8\u5f00\u59cb\u65f6\u95f4-15 \u5206\u949f\uff09\u7684\u4efb\u52a1\uff0c\u76ee\u524d\u5173\u6ce8\u7528\u6237\u5b58\u50a8\u5728 redis \u7684 zset \u4e2d\uff0c\u5411\u5ef6\u8fdf\u961f\u5217\u4e2d\u6295\u9012\u7684\u662f\u6d3b\u52a8\u7684 id \u4fe1\u606f\uff0c\u5ef6\u8fdf\u961f\u5217\u6d88\u8d39\u5230\u8fd9\u6761\u6d88\u606f\u7684\u65f6\u5019\uff0c\u4ece\u5173\u6ce8\u7684\u7528\u6237 zset \u4e2d\u62c9\u53d6\u7528\u6237 id \u8fdb\u884c\u6d88\u606f\u63a8\u9001\u3002
\u5ef6\u8fdf\u961f\u5217\u7684\u8bbe\u8ba1\uff1a\u76ee\u524d\u662f\u4f9d\u8d56 redis \uff0c\u751f\u4ea7\u8005\u5411 redis \u7684 zset \u4e2d\u6295\u9012 task \u4fe1\u606f\uff0cscore \u662f\u6d3b\u52a8\u7684\u901a\u77e5\u65f6\u95f4\uff08\u6d3b\u52a8\u5f00\u59cb\u65f6\u95f4-15 \u5206\u949f\uff09\uff0c\u7136\u540e\u8f6e\u8be2\u8fd9\u4e2a task \u7684 redis key \uff0c\u8bfb\u53d6\u5230\u671f\u662f\u4efb\u52a1\u4fe1\u606f\uff0c\u8bfb\u53d6\u5230\u4e4b\u540e\u5c06\u8be5\u4efb\u52a1\u4fe1\u606f\u6295\u9012\u5230 redis \u7684 list \uff08\u901a\u8fc7 rpush \uff09\u4e2d\uff0c\u6d88\u8d39\u8005\u5219\u4e00\u76f4\u8bfb\u53d6\u8fd9\u4e2a list \u961f\u5217\uff08\u901a\u8fc7 lpop \uff09\u3002
\u76ee\u524d\u60f3\u63a2\u8ba8\u7684\u662f\uff1a\u8fd9\u4e2a\u65b9\u6848\u662f\u5426\u5728\u6d3b\u52a8\u5f88\u591a\u7684\u65f6\u5019\u5bfc\u81f4\u63a8\u9001\u6d88\u606f\u7684\u5ef6\u8fdf\uff08\u867d\u7136\u53ef\u4ee5\u901a\u8fc7\u589e\u52a0\u6d88\u8d39\u8005\u6765\u7f13\u89e3\uff0c\u6b63\u5e38\u54ea\u6015\u662f\u4e00\u4e2a\u6d3b\u52a8\u6709\u767e\u4e07\u7ea7\u522b\u7684\u6d3b\u52a8\u5173\u6ce8\u8005\uff08\u6781\u5176\u7f55\u89c1\uff09\uff0c\u4ece redis \u7684 zset \u4e2d\u5206\u9875\u62c9\u53d6\u51fa\u6765\u5e76\u6295\u9012\u6d88\u606f\uff0c\u4e00\u822c\u5904\u7406\u65f6\u957f\u4e0d\u4f1a\u8d85\u8fc7 10 \u5206\u949f\uff09
\u4f46\u662f\u9690\u9690\u7ea6\u7ea6\u8fd8\u662f\u89c9\u5f97\u662f\u4e0d\u662f\u8fd8\u6709\u66f4\u597d\u7684\u65b9\u6848\u5462\uff1f\u53ef\u4ee5\u5c3d\u91cf\u51cf\u5c11\u5ef6\u8fdf\u7684\u65b9\u6848\u3002" }, { "author": { "url": "member/ben548", "name": "ben548", "avatar": "https://cdn.v2ex.com/gravatar/4823772b00d8680776306ddbccc88133?s=73&d=retro" }, "url": "t/951909", "title": "Redis \u7684 zset \u6309 score \u6392\u5e8f\u505a\u5206\u9875\u7684\u65f6\u5019\u600e\u4e48\u4fdd\u8bc1\u6570\u636e\u4e0d\u4e22\u5931\uff1f", "id": "t/951909", "date_published": "2023-06-26T15:26:13+00:00", "content_html": "\u56e0\u4e3a zset \u4e2d\u53ef\u4ee5\u5b58\u5728 score \u76f8\u540c\u7684\u6570\u636e\uff0c\u6309 score \u6765\u67e5\u8be2\u4e0b\u4e00\u9875\u65f6\uff0c\u600e\u4e48\u4fdd\u8bc1\u4e0b\u4e00\u9875\u76f8\u540c\u7684 score \u6570\u636e\u4e0d\u4e22\u5931\u5462\uff1f" }, { "author": { "url": "member/ben548", "name": "ben548", "avatar": "https://cdn.v2ex.com/gravatar/4823772b00d8680776306ddbccc88133?s=73&d=retro" }, "url": "t/951425", "title": "redis \u7684 zset \u5982\u679c\u6253\u6563\u6210\u591a\u4e2a zset \u7684\u8bdd\uff0c\u5982\u679c\u8981\u5206\u9875\u67e5\u8be2\u600e\u4e48\u5904\u7406\u5462\uff1f", "id": "t/951425", "date_published": "2023-06-25T04:32:42+00:00", "content_html": "\u6bd4\u5982\uff0c\u4e3a\u4e86\u907f\u514d big key \u95ee\u9898\u5c06 zset \u62c6\u5206\u6210 zset1 \u3001zset2 \u3001zset3 \uff0c\u5982\u679c\u8981\u5bf9\u8fd9\u4e2a zset \u505a\u5206\u9875\u67e5\u8be2\u7684\u8bdd\uff0c\u600e\u4e48\u5904\u7406\u5462\uff1f
\u7b2c\u4e00\u9875\u662f\u5f88\u5bb9\u6613\u7684\uff0c\u6bd4\u5982\u4e00\u9875 10 \u6761\uff0c\u6bcf\u4e00\u4e2a zset \u90fd\u67e5\u51fa top 10 \u7136\u540e\u5408\u5e76\u6392\u5e8f\u4e00\u4e0b\u5373\u53ef
\u4f46\u662f\u7b2c\u4e8c\u9875\u548c\u7b2c\u4e09\u9875\u5374\u4e0d\u80fd\u8fd9\u4e48\u5904\u7406\uff0c\u56e0\u4e3a\u76f4\u63a5\u4ece\u5404\u4e2a zset \u4e2d\u83b7\u53d6\u6392\u540d 10 \u5230 20 \u7684 value \uff0c\u6765\u505a\u6392\u5e8f\u5408\u5e76\u5f97\u5230\u7684\u7ed3\u679c\u5e76\u4e0d\u51c6\u786e
\u80fd\u60f3\u5230\u7684\u4e00\u4e2a\u65b9\u6848\u662f\u628a\u6240\u6709\u7684 zset \u90fd\u5408\u5e76\u6210\u4e00\u4e2a\u603b\u7684 zset \u518d\u6765\u5206\u9875\u5207\u5272\uff0c\u4f46\u662f\u611f\u89c9\u8fd9\u6837\u592a\u8017\u8d39\u6027\u80fd\u4e86\uff0c\u4e0d\u662f\u4e00\u4e2a\u597d\u7684\u65b9\u6848\u3002" }, { "author": { "url": "member/ben548", "name": "ben548", "avatar": "https://cdn.v2ex.com/gravatar/4823772b00d8680776306ddbccc88133?s=73&d=retro" }, "url": "t/946461", "title": "\u5173\u4e8e\u793e\u533a\u573a\u666f\u4e0b\uff0c\u7528\u6237\u5df2\u8bfb\u6587\u7ae0\u4e0d\u518d\u63a8\u8350\u8fd9\u79cd\u9700\u6c42\u5b9e\u73b0\u65b9\u6848\u7684\u63a2\u8ba8", "id": "t/946461", "date_published": "2023-06-06T21:12:15+00:00", "content_html": "\u9700\u6c42:
\u7528\u6237\u7b7e\u5230\u9875\u9762\uff0c\u4e3a\u7528\u6237\u63a8\u8350\u540e\u53f0\u914d\u7f6e\u597d\u7684\u6587\u7ae0\u5185\u5bb9\uff0c\u6309\u53d1\u5e03\u65f6\u95f4\u5012\u53d9\u6392\u5217\uff08\u6570\u636e\u5b58\u50a8\u5728 redis \u7684 zset \u4e2d\uff0cscore \u662f\u6587\u7ae0\u53d1\u5e03\u65f6\u95f4\uff0cvalue \u662f\u6587\u7ae0 id \uff09\uff0c\u5e76\u4e14\u53ef\u4ee5\u8ba4\u4e3a\u88ab\u63a8\u8350\u7684\u5185\u5bb9\u6570\u91cf\u6709\u4e0a\u9650\u9650\u5236\uff08\u4e0d\u591a\u4e8e 1000 \u6761\uff09\uff0c\u7528\u6237\u5df2\u9605\u7684\u6570\u636e\u4e0d\u518d\u63a8\u8350\u7ed9\u7528\u6237\uff0c\u76f4\u5230\u6240\u6709\u7684\u5185\u5bb9\u88ab\u63a8\u8350\u5b8c\uff0c\u518d\u4ece\u5934\u5f00\u59cb\u518d\u63a8\u8350\u4e00\u904d\uff0c\u4e00\u76f4\u5faa\u73af\u4e0b\u53bb\u3002
\u5b9e\u73b0\u65b9\u6848:
\u4e00\u822c\u6d89\u53ca\u5230\u8fd9\u79cd\u9700\u6c42\uff0c\u90fd\u4f1a\u60f3\u5230\u7528\u5e03\u9686\u8fc7\u6ee4\u5668\u6216\u8005 bitmap \u6765\u5b9e\u73b0\uff0c\u6211\u6700\u7ec8\u9009\u62e9\u4e86\u7528\u5e03\u9686\u8fc7\u6ee4\u5668\uff0c\u4e0d\u7528 bitmap \u7684\u4e3b\u8981\u539f\u56e0\u662f:
1.\u76ee\u524d post_id \u7684\u503c\u662f\u96ea\u82b1\u7b97\u6cd5\u751f\u6210\u7684\uff0c\u957f\u5ea6\u6709 16 \u4f4d\uff0c\u5982\u679c\u4e0d\u505a\u5904\u7406\u76f4\u63a5\u628a\u8fd9\u4e2a id \u5f53\u6210 bitmap \u7684 offset \u4f1a\u9020\u6210\u6781\u5927\u7684\u5185\u5b58\u7a7a\u95f4\u6d6a\u8d39\uff0c\u800c\u600e\u4e48\u628a\u8fd9\u4e9b post_id \u8f6c\u6362\u6210\u66f4\u5c0f\u7684\u4ece 1 \u5f00\u59cb\u9012\u589e\u7684\u6570\u5b57\uff0c\u5904\u7406\u8d77\u6765\u6bd4\u8f83\u9ebb\u70e6\uff08\u4e0d\u662f\u4e0d\u53ef\u4ee5\uff0c\u81ea\u5df1\u60f3\u5230\u7684\u5c31\u6709\u51e0\u79cd\uff0c\u6bd4\u5982\u8bf4:\u56e0\u4e3a\u5c55\u793a\u7684\u5185\u5bb9\u90fd\u662f\u5173\u8054\u4e86\u67d0\u4e9b tag \u7684\u5185\u5bb9\uff0c\u7528\u6570\u636e\u5e93\u91cc\u9762\u7684\u5173\u8054\u5173\u7cfb\u8868\u7684 id \u4f5c\u4e3a bitmap \u7684 offset \u6765\u5904\u7406\u662f\u53ef\u4ee5\u505a\u5230\u7684,\u4e4b\u6240\u4ee5\u4e0d\u9009\u62e9 bitmap \u6700\u4e3b\u8981\u8fd8\u662f\u4e0b\u9762\u7684\u539f\u56e0 2 \uff09;
2.getbit \u4e0d\u652f\u6301\u6279\u91cf\u67e5\u8be2\uff08\u5f53\u7136\u6211\u77e5\u9053\u6709\u4eba\u53ef\u80fd\u8981\u8bf4\u53ef\u4ee5\u7528 lua \u811a\u672c\uff0c\u7528 pipeline \u4e4b\u7c7b\u7684\uff0c\u4f46\u662f\u5199\u8d77\u6765\u6709\u70b9\u9ebb\u70e6\uff09\u800c\u9009\u62e9\u5e03\u9686\u8fc7\u6ee4\u5668\u5c31\u6ca1\u6709\u4e0a\u9762\u8fd9\u4e24\u4e2a\u95ee\u9898\u4e86
\u8fd9\u6b21\u9009\u7528\u7684\u662f\u76f4\u63a5\u88c5 redis \u7684\u5e03\u9686\u8fc7\u6ee4\u5668\u6a21\u5757\uff0c\u5b9e\u73b0\u65b9\u6848\u5982\u4e0b:
1.\u6bcf\u4e2a\u7528\u6237\u521d\u59cb\u5316\u4e00\u4e2a 500 \u957f\u5ea6\u7684\u5e03\u9686\u8fc7\u6ee4\u5668\uff0c\u7528\u6237\u5df2\u9605\u7684\u5185\u5bb9\u901a\u8fc7 bf.add \u64cd\u4f5c\u52a0\u5165\u4ed6\u7684\u5e03\u9686\u8fc7\u6ee4\u5668\u4e2d
2.\u83b7\u53d6\u5217\u8868\u6570\u636e\u7684\u65f6\u5019\uff0c\u6309\u4e0b\u9762\u7684\u6b65\u9aa4\u8fdb\u884c:
2.1 \u4ece zset \u4e2d\u8bfb\u53d6 100 \u6761\u6570\u636e\uff0c
2.2 \u901a\u8fc7 bf.mexist \u64cd\u4f5c\u67e5\u8be2\u8fd9\u4e9b\u5185\u5bb9\u662f\u5426\u5df2\u9605\uff0c\u5df2\u9605\u7684\u5185\u5bb9\u8df3\u8fc7
2.3 \u4e00\u76f4\u5faa\u73af 2.1 \u548c 2.2 \u6b65\u9aa4\uff0c\u76f4\u5230\u67e5\u5230\u6ee1\u8db3\u6761\u76ee\u6570\u7684\u5185\u5bb9\u4e3a\u6b62\uff08\u76ee\u524d\u662f\u5b9a\u7684 12 \u6761\u4e00\u9875\uff09
2.4 \u5982\u679c zset \u67e5\u5230\u6700\u540e\u90fd\u6ca1\u6709\u5f97\u5230\u6ee1\u8db3\u6761\u4ef6\u7684\u6761\u76ee\u6570\uff0c\u5219\u8fd4\u56de\u7ecf\u8fc7\u4e86 2.1 \u548c 2.2 \u6b65\u9aa4\u4e4b\u540e\u83b7\u53d6\u5230\u7684\u6570\u636e\uff08\u53ef\u80fd\u6709\u6570\u636e\uff0c\u53ea\u662f\u4e0d\u6ee1\u8db3 12 \u6761\u7684\u6761\u4ef6\uff0c\u603b\u6570\u8bb0\u4e3a total1 \uff09+zset \u4e2d\u6309\u53d1\u5e03\u65f6\u95f4\u987a\u5e8f\u5012\u5e8f\u83b7\u53d6 12-total1 \u6761\u6570\u636e\u4f5c\u4e3a\u8865\u5145 2.5 \u4ec0\u4e48\u65f6\u5019\u5220\u9664\u7528\u6237\u7684\u5e03\u9686\u8fc7\u6ee4\u5668\uff1f 2.4 \u6b65\u9aa4\u4e2d\u53d1\u73b0 total1 \u7684\u6570\u91cf\u4e3a 0 \uff08\u8bf4\u660e\u6240\u6709\u5185\u5bb9\u90fd\u5df2\u7ecf\u9605\u8bfb\u8fc7\u4e86\uff09\u65f6\u8fdb\u884c\u5220\u9664
\u5185\u5b58\u5360\u7528\u4f30\u7b97:\u6709\u8bd5\u8fc7\u6a21\u62df\u4e00\u4e2a 500 \u957f\u5ea6 size \u7684\u5e03\u9686\u8fc7\u6ee4\u5668\u5927\u81f4\u7684\u5185\u5b58\u5360\u7528\u4e3a 800 \u591a\u4e2a\u5b57\u8282\uff0c\u6309 50w \u65e5\u6d3b\u6765\u8ba1\u7b97\u7684\u8bdd\uff0c\u603b\u7684\u5360\u7528\u7a7a\u95f4\u4e3a\u4e24\u4e09\u767e M \u5de6\u53f3\uff0c\u5728\u53ef\u63a5\u53d7\u8303\u56f4\u5185\uff0c\u4f46\u662f\u5982\u679c\u4e3a\u6bcf\u4e2a\u7528\u6237\u521d\u59cb\u5316 1000 \u957f\u5ea6 size \u7684\u5e03\u9686\u8fc7\u6ee4\u5668\uff0c\u5185\u5b58\u5360\u7528\u5c31\u6709\u70b9\u9ad8\u4e86\uff0c\u521d\u6b65\u9884\u4f30\u5728 900M \u5de6\u53f3
\u6211\u7684\u7591\u95ee:
1.\u5176\u5b9e\u7528\u5e03\u9686\u8fc7\u6ee4\u5668\u7684\u65b9\u6848\uff0c\u6709\u901a\u8fc7 golang \u81ea\u5df1\u4f9d\u8d56 redis \u7684 bitmap \u7ed3\u6784\u5b9e\u73b0\u4e00\u4e2a\u7684\u65b9\u6848\u4e5f\u6709\u76f4\u63a5\u7528 redis \u7684\u5e03\u9686\u8fc7\u6ee4\u5668\u6a21\u5757\uff08\u9700\u8981\u7f16\u8bd1\u5b89\u88c5\uff09\u7684\u65b9\u6848\uff0c\u6211\u597d\u5947\u54ea\u79cd\u65b9\u6848\u66f4\u597d\uff1f
2.\u4e0a\u9762\u8bf4\u5230\u7684\u83b7\u53d6\u5217\u8868\u6570\u636e\u7684\u903b\u8f91\uff0c\u603b\u611f\u89c9\u662f\u4e0d\u662f\u6709\u4ec0\u4e48\u5730\u65b9\u53ef\u4ee5\u4f18\u5316\uff0c\u56e0\u4e3a\u6309\u4e0a\u9762\u63cf\u8ff0\u7684\u903b\u8f91\uff0c\u6bcf\u4e00\u6b21\u90fd\u8981\u904d\u5386\u4e00\u904d zset \u4e2d\u7684\u6570\u636e\uff0c\u6700\u5dee\u7684\u60c5\u51b5\u4e0b\uff0c\u4f1a\u6709\u6570\u5341\u6b21\u7684 redis \u67e5\u8be2\uff08\u6bd4\u5982\u6700\u540e\u4e00\u9875\uff09
3.\u53ef\u80fd\u6709\u4eba\u4f1a\u8bf4\u53ef\u4ee5\u7528 bf.count \u770b\u7528\u6237\u5df2\u9605\u5185\u5bb9\u7684\u603b\u6570\uff0c\u56e0\u4e3a\u603b\u662f\u6700\u65b0\u7684\u5185\u5bb9\u5c55\u793a\u51fa\u6765\uff0c\u90a3\u4e48\u76f4\u63a5\u8df3\u8fc7 bf.count \u7684\u603b\u6570\u53bb\u83b7\u53d6\u6570\u636e\u5373\u53ef\uff0c\u5c31\u4e0d\u7528\u90a3\u4e48\u9ebb\u70e6\uff0c\u4f46\u662f\u8fd9\u6837\u83b7\u53d6\u6709\u4e2a\u95ee\u9898\uff0c\u5c31\u662f\u65b0\u52a0\u5165 zset \u7684\u5185\u5bb9\uff08\u800c\u4e14\u53d1\u5e03\u65f6\u95f4\u8fd8\u662f\u6700\u65b0\u7684\uff09\uff0c\u6309\u8fd9\u4e2a\u65b9\u6848\u6765\u5904\u7406\uff0c\u51e0\u4e4e\u65e0\u6cd5\u5f97\u5230\u5c55\u793a\uff08\u53ea\u6709\u7b49\u5185\u5bb9\u8017\u5c3d\uff0c\u5230\u4e0b\u4e00\u8f6e\u63a8\u8350\u624d\u80fd\u5c55\u793a\uff09
4.\u8fd9\u4e2a\u5217\u8868\u662f\u5c55\u793a\u5728\u7528\u6237\u7b7e\u5230\u7684\u4e0b\u65b9\u5185\u5bb9\u63a8\u8350\u7684\u6a21\u5757\u4e2d\uff0c\u6211\u5728\u60f3\u6bcf\u4e2a\u7528\u6237\u7684\u5e03\u9686\u8fc7\u6ee4\u5668\u521d\u59cb\u957f\u5ea6\u8bbe\u7f6e\u4e3a\u591a\u5c11\u6bd4\u8f83\u5408\u9002\uff0c\u4e00\u5f00\u59cb\u60f3\u7740\u76f4\u63a5\u8bbe\u7f6e 1000 \u7684\u957f\u5ea6\uff0c\u4f46\u662f\u60f3\u5230\u771f\u5b9e\u7684\u573a\u666f\uff0c\u7528\u6237\u53ef\u80fd\u7b7e\u5b8c\u5230\u5c31\u79bb\u5f00\u4e86\uff0c\u4e0d\u4f1a\u53bb\u6d88\u8d39\u5185\u5bb9\uff08\u867d\u7136\u4e0d\u4f1a\u4e3b\u52a8\u4e0b\u62c9\u6d88\u8d39\uff0c\u4f46\u662f\u5e95\u90e8\u4f1a\u5916\u6f0f\u51fa 2 \u5230 4 \u6761\u5185\u5bb9\u51fa\u6765\uff0c\u4e5f\u88ab\u8ba4\u4e3a\u662f\u7528\u6237\u5df2\u9605\u7684\u5185\u5bb9\uff09\uff0c\u6240\u4ee5\u76f4\u63a5\u521d\u59cb\u5316 1000 \u957f\u5ea6\u6211\u611f\u89c9\u6709\u70b9\u6d6a\u8d39\uff0c\u6240\u4ee5\u8003\u8651\u5148\u521d\u59cb\u5316 500 \u4e2a\uff0c\u6d88\u8d39\u5185\u5bb9\u8d85\u8fc7 500 \u4e2a\u7684\u8bdd\uff0cRedis \u7684\u5e03\u9686\u8fc7\u6ee4\u5668\u4f1a\u81ea\u52a8\u6269\u5bb9\uff0c\u6269\u5bb9\u6210\u81ea\u5df1\u7684 2 \u500d\u5185\u5b58\u7a7a\u95f4\uff08\u8bd5\u8fc7\uff0c\u8fd9\u79cd\u6269\u5bb9\u6700\u7ec8\u5360\u7684\u5185\u5b58\u7a7a\u95f4\u4f1a\u6bd4\u4e00\u5f00\u59cb\u5c31\u521d\u59cb\u5316 1000 \u957f\u5ea6\u7684\u5185\u5b58\u7a7a\u95f4\u5360\u7528\u5927\u5f88\u591a\uff09\uff0c\u4e0d\u77e5\u9053\u8fd9\u4e48\u8bbe\u8ba1\u662f\u5426\u5408\u9002\uff1f\u4ee5\u4e0a\u5c31\u662f\u6211\u4e2a\u4eba\u7684\u4e00\u4e9b\u5b9e\u73b0\u65b9\u6848\u7684\u60f3\u6cd5\u548c\u63a2\u7d22\uff0c\u5927\u5bb6\u6709\u4ec0\u4e48\u89c2\u70b9\u548c\u770b\u6cd5\uff0c\u6b22\u8fce\u8bc4\u8bba\u7559\u8a00\u4e00\u8d77\u63a2\u8ba8\u4e00\u4e0b" }, { "author": { "url": "member/ben548", "name": "ben548", "avatar": "https://cdn.v2ex.com/gravatar/4823772b00d8680776306ddbccc88133?s=73&d=retro" }, "url": "t/946008", "title": "\u4e00\u4e2a abtest \u5b9e\u9a8c\u4e2d redis \u8bbe\u8ba1\u7684\u601d\u8003", "id": "t/946008", "date_published": "2023-06-05T09:21:29+00:00", "content_html": "\u4e00\u4e2a\u5173\u4e8e abtest \u9700\u6c42\u7684 redis \u573a\u666f\u95ee\u9898\uff0c
\u9700\u6c42\uff1a\u9700\u8981\u5c06\u7528\u6237\u5206\u6210 abcd \u56db\u4e2a\u6876\uff0c\u4e0d\u540c\u6876\u5185\u7528\u6237\u770b\u5230\u7684\u4fe1\u606f\u4e0d\u540c\uff0c\u7b2c\u4e00\u6b21\u5206\u6876\u65f6\u9700\u8981\u5c06\u5206\u6876\u7ed3\u679c\u53d1\u9001\u7ed9\u6570\u636e\u90e8\u95e8\u3002
\u5b9e\u73b0\uff1a\u5c06\u7528\u6237 id \u7ecf\u8fc7 murmurhash \u8ba1\u7b97\u51fa\u6765\u7684\u54c8\u5e0c\u7ed3\u679c\u6309 4 \u53d6\u6a21\uff0c\u5f97\u5230\u5206\u6876\u4fe1\u606f\uff0c\u5c06\u8be5\u7ed3\u679c\u4fdd\u6301\u5230 redis \u4e2d\uff0c\u6bcf\u4e2a\u7528\u6237\u4e00\u4e2a redis key \uff0c\u5b57\u7b26\u4e32\u7c7b\u578b\u5b58\u50a8\uff0c\u5982 abresult_11111(user_id):1,\u7a0b\u5e8f\u5f00\u59cb\u6267\u884c\u65f6\u5148\u8bfb\u53d6 redis \uff0c\u5982\u679c\u5b58\u5728\u5206\u6876\u8bb0\u5f55\uff0c\u90a3\u4e48\u76f4\u63a5\u8fd4\u56de\uff0c\u4e0d\u5b58\u5728\u5219\u8fdb\u884c\u5206\u6876\u64cd\u4f5c\uff0c\u5e76\u5c06\u5206\u6876\u7ed3\u679c\u53d1\u7ed9\u6570\u636e\u90e8\u95e8

\u7591\u95ee\uff1a
\u76ee\u524d\u8fd9\u4e2a\u8bbe\u8ba1\u662f\u4e00\u4e2a\u597d\u7684\u8bbe\u8ba1\u5417\uff1f\u767e\u4e07\u7ea7\u522b\u7684\u7528\u6237\u91cf\u7684\u8bdd\uff0c\u662f\u4e0d\u662f\u4f1a\u751f\u6210\u767e\u4e07\u7684 redis key \uff0c\u5370\u8c61\u4e2d redis_key \u8fc7\u591a\u4e0d\u662f\u4e00\u4e2a\u597d\u7684\u8bbe\u8ba1\uff0c\u6bd4\u5982\u4e0d\u597d\u7ba1\u7406\u7b49\u3002
\u6211\u80fd\u60f3\u5230\u7684\u51e0\u4e2a\u95ee\u9898\uff1a
1.\u5370\u8c61\u4e2d\u7528 hash \u7ed3\u6784\u6765\u5b58\u50a8\uff0c\u4f1a\u88ab\u8fd9\u79cd\u5b58\u50a8\u65b9\u5f0f\u8282\u7ea6\u5185\u5b58,\u4f46\u662f\u7528 hash \u6765\u5b58\u50a8\u5fc5\u7136\u5bfc\u81f4 big key \u95ee\u9898\uff0c\u5f53\u7136\u5728\u8fd9\u79cd\u573a\u666f\u4e0b\u9762\uff0c\u4e0d\u6d89\u53ca\u50cf getall \u90a3\u6837\u7684 O(n)\u64cd\u4f5c\uff0c\u662f\u4e0d\u662f big key \u95ee\u9898\u53ef\u4ee5\u57fa\u672c\u5ffd\u7565\u4e0d\u8ba1\uff1f\u5370\u8c61\u4e2d big key \u53ef\u80fd\u5bfc\u81f4\u7684\u95ee\u9898\u4e0d\u6b62\u662f\u6027\u80fd\u95ee\u9898\uff0c\u8fd8\u6709\u50cf\u6570\u636e\u503e\u659c\u5bfc\u81f4\u7684\u8bbf\u95ee\u503e\u659c\u95ee\u9898\u7b49\uff0c\u6240\u4ee5\u7528 hash \u6765\u5b58\u50a8\u7684\u8bdd\u662f\u4e0d\u662f\u4e5f\u8981\u90a3\u7528\u6237 id \u6765\u505a\u5206\u7247\u624d\u662f\u6bd4\u8f83\u5408\u9002\u7684\u65b9\u6848\uff1f
2.redis \u7684\u5220\u9664\u662f\u60f0\u6027\u5220\u9664+\u5b9a\u65f6\u5220\u9664\uff0c\u5b9a\u65f6\u5220\u9664\u57fa\u4e8e\u53d6\u6837\uff0c\u53d6\u6837\u7684\u8bdd\u5982\u679c\u5931\u6548\u7684\u6570\u636e\u8fc7\u591a\uff0c\u5370\u8c61\u4e2d\u4f1a\u4e00\u76f4\u4e0d\u65ad\u7684\u5faa\u73af\u5220\u9664\uff0c\u6307\u5b9a\u53d6\u6837\u7684\u7ed3\u679c\u4e0d\u6ee1\u8db3\u4e3a\u6b62\uff0c\u60f3\u77e5\u9053\u8fd9\u4e2a\u5b9a\u65f6\u5220\u9664\u662f\u5728\u4e3b\u8fdb\u7a0b\u4e0a\u5b8c\u6210\u7684\u5417\uff1f\u5982\u679c\u8fc7\u591a\u7684 key \u5931\u6548\uff0c\u4f1a\u963b\u585e redis \u8fdb\u7a0b\u5417\uff1f

\u5927\u4f6c\u4eec\uff0c\u4e00\u8d77\u8ba8\u8bba\u4e0b\u554a\uff1f\u4e00\u4e2a\u662f\u4e0a\u9762\u63d0\u51fa\u7684\u4e00\u4e9b\u95ee\u9898\uff0c\u8fd8\u6709\u5c31\u662f\u5982\u679c\u662f\u4f60\u4eec\u6765\u8bbe\u8ba1\u7684\u8bdd\u4f1a\u600e\u4e48\u8bbe\u8ba1\uff1f" } ] } ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86