{"id":1319,"date":"2022-09-21T17:14:14","date_gmt":"2022-09-21T09:14:14","guid":{"rendered":"http:\/\/175.24.184.226\/?p=1319"},"modified":"2022-09-21T17:19:13","modified_gmt":"2022-09-21T09:19:13","slug":"python%e6%93%8d%e4%bd%9credis-set","status":"publish","type":"post","link":"\/?p=1319","title":{"rendered":"python\u64cd\u4f5credis set"},"content":{"rendered":"<h2>1<\/h2>\n<pre><code class=\"language-python\">from redis import Redis\n\nif __name__ == &#039;__main__&#039;:\n    client = Redis(host=&#039;x.x.x.x&#039;, port=6666, decode_responses=True)\n    try:\n        # \u6dfb\u52a0\u5143\u7d20\n        print(client.sadd(&#039;s1&#039;, 1, 2, 3))  # 3\n        print(client.sadd(&#039;s1&#039;, 3))  # 0\n        print(client.sadd(&#039;s1&#039;, 2, 3, 4, 5))  # 2\n        # tmp = [2, 3, 4, 5]\n        # client.sadd(&#039;s1&#039;, *tmp) \u8fd9\u6837\u4e5f\u53ef\u4ee5\n\n        # \u67e5\u770b\u5143\u7d20\n        print(client.smembers(&#039;s1&#039;))  # {&#039;3&#039;, &#039;1&#039;, &#039;5&#039;, &#039;4&#039;, &#039;2&#039;}\n\n        # \u96c6\u5408\u5927\u5c0f\n        print(client.scard(&#039;s1&#039;))  # 5\n\n        # \u662f\u5426\u5305\u542b\u5143\u7d20\n        print(client.sismember(&#039;s1&#039;, 9))  # False\n        print(client.sismember(&#039;s1&#039;, 1))  # True\n\n        # \u5220\u9664\u5143\u7d20\n        print(client.srem(&#039;s1&#039;, 4, 5))  # 2\n        print(client.smembers(&#039;s1&#039;))  # {&#039;1&#039;, &#039;2&#039;, &#039;3&#039;}\n\n        # \u968f\u673a\u6311\u51e0\u4e2a\u5143\u7d20\n        print(client.srandmember(&#039;s1&#039;))  # 2\n        print(client.srandmember(&#039;s1&#039;, 2))  # [&#039;3&#039;, &#039;1&#039;]\n        print(client.srandmember(&#039;s1&#039;, 4))  # [&#039;1&#039;, &#039;2&#039;, &#039;3&#039;]\n\n        # \u968f\u673apop\u51e0\u4e2a\n        print(client.spop(&#039;s1&#039;))  # 1\n        print(client.spop(&#039;s1&#039;, 4))  # [&#039;2&#039;, &#039;3&#039;]\n        print(client.exists(&#039;s1&#039;))  # 0\n\n        # \u5220\u9664\u6240\u6709\u6570\u636e\n        print(client.flushall())  # True\n        client.sadd(&#039;s1&#039;, 1, 2, 3)\n        client.sadd(&#039;s2&#039;, 2, 3, 4)\n        client.sadd(&#039;s3&#039;, 2, 5, 6)\n\n        # \u4ea4\u96c6\n        print(client.sinter(&#039;s1&#039;, &#039;s2&#039;))  # {&#039;3&#039;, &#039;2&#039;}\n        print(client.sinter(&#039;s1&#039;, &#039;s2&#039;, &#039;s3&#039;))  # {&#039;2&#039;}\n\n        # \u5dee\u96c6\n        print(client.sdiff(&#039;s1&#039;, &#039;s2&#039;))  # {&#039;1&#039;}\n\n        # \u5e76\u96c6\n        print(client.sunion(&#039;s1&#039;, &#039;s2&#039;))  # {&#039;1&#039;, &#039;4&#039;, &#039;2&#039;, &#039;3&#039;}\n\n        #  sunionstore \/ sdiffstore \/ sinterstore\n        print(client.sunionstore(&#039;s4&#039;, &#039;s1&#039;, &#039;s2&#039;, &#039;s3&#039;))  # 6\n        print(client.smembers(&#039;s4&#039;))  # {&#039;3&#039;, &#039;1&#039;, &#039;5&#039;, &#039;4&#039;, &#039;6&#039;, &#039;2&#039;}\n\n        # \u79fb\u52a8\u5143\u7d20\n        print(client.smembers(&#039;s1&#039;))  # {&#039;1&#039;, &#039;2&#039;, &#039;3&#039;}\n        print(client.smembers(&#039;s2&#039;))  # {&#039;3&#039;, &#039;4&#039;, &#039;2&#039;}\n        print(client.smove(&#039;s1&#039;, &#039;s2&#039;, 1))  # True\n        print(client.smembers(&#039;s1&#039;))  # {&#039;3&#039;, &#039;2&#039;}\n        print(client.smembers(&#039;s2&#039;))  # {&#039;1&#039;, &#039;4&#039;, &#039;2&#039;, &#039;3&#039;}\n    except Exception as e:\n        print(e)\n    finally:\n        client.close()<\/code><\/pre>\n<h2>2<\/h2>\n<pre><code class=\"language-python\">class ConnectRedis:\n    def __init__(self):\n        &quot;&quot;&quot;\n        \u521d\u59cb\u5316\u51fd\u6570, \u5206\u522b\u521d\u59cb\u5316 redis\u8fde\u63a5\u4ee5\u53ca url\u5b57\u5178\u548ctitle\u5b57\u5178\n        &quot;&quot;&quot;\n        self.Redis_LOCAL = {\n            &#039;host&#039;: &#039;127.0.0.1&#039;,\n            &#039;port&#039;: 6379,\n            &#039;db&#039;: 1,\n            &#039;max_connections&#039;: 128,  # \u6700\u5927\u8fde\u63a5\u6570\n            &#039;decode_responses&#039;: True,  # \u7f16\u7801\u4e3autf-8\n        }\n        self.redis = &#039;&#039;  # redis\u5bf9\u8c61\n        self.gather_name = &quot;qdp_user_info&quot;\n        self.conn_pool = redis.ConnectionPool(**self.Redis_LOCAL)  # \u8fde\u63a5\u6c60\n\n    def get_redis(self):\n        # \u83b7\u53bb\u4e00\u4e2aredis\u8fde\u63a5\u5bf9\u8c61\n        while True:\n            try:\n                redis1 = redis.Redis(connection_pool=self.conn_pool)\n                redis1.ping()\n            except Exception as e:\n                err = traceback.format_exc()\n                logger.error(err)\n                time.sleep(10)\n                self.conn_pool = redis.ConnectionPool(**self.Redis_LOCAL)  # \u51fa\u95ee\u9898\u91cd\u65b0\u751f\u6210\u4e00\u4e0bredis\u6c60\n            else:  # \u6267\u884c\u6ca1\u6709\u95ee\u9898\n                self.redis = redis1\n                return\n\n    def redis_decorator(func):\n        &quot;&quot;&quot;\n        redis\u5bf9\u8c61\u751f\u6210\u88c5\u9970\u5668, \u4e0d\u7528\u8fd9\u4e2a\u88c5\u9970\u5668\u4e5f\u53ef\u4ee5,\u53ea\u8981\u5728\u6bcf\u4e2a\u7528\u5230redis\u7684\n        \u4ee3\u7801\u4e2d\u8c03\u7528\u4e00\u4e0bself.get_redis() \u5c31\u53ef\u4ee5\u4e86\n        &quot;&quot;&quot;\n\n        def b(self, *args, **kwargs):\n            self.get_redis()\n            return func(self, *args, **kwargs)\n\n        return b\n\n    @redis_decorator\n    def exist_title(self, title):\n        &quot;&quot;&quot;\n        \u5224\u65ad title\u7684\u503c\u662f\u5426\u5b58\u5728\u4e8e\u96c6\u5408\u4e2d\n        &quot;&quot;&quot;\n        return self.redis.sismember(self.gather_name, title)\n\n    @redis_decorator\n    def add_title(self, title):\n        &quot;&quot;&quot;\n        \u5728\u5b57\u5178\u4e2d\u6dfb\u52a0\u4e00\u4e2a title\u503c\n        &quot;&quot;&quot;\n        return self.redis.sadd(self.gather_name, title)<\/code><\/pre>\n","protected":false},"excerpt":{"rendered":"<p>1 from redis import Redis if __name__ == &#039;__main__&#039;: clien   \u2026 &#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"ngg_post_thumbnail":0},"categories":[97],"tags":[],"_links":{"self":[{"href":"\/index.php?rest_route=\/wp\/v2\/posts\/1319"}],"collection":[{"href":"\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=1319"}],"version-history":[{"count":2,"href":"\/index.php?rest_route=\/wp\/v2\/posts\/1319\/revisions"}],"predecessor-version":[{"id":1321,"href":"\/index.php?rest_route=\/wp\/v2\/posts\/1319\/revisions\/1321"}],"wp:attachment":[{"href":"\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=1319"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=1319"},{"taxonomy":"post_tag","embeddable":true,"href":"\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=1319"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}