自学内容网 自学内容网

fastzdp_redis第一次开发, 2024年9月26日, Python操作Redis零基础快速入门

提供完整录播课

在这里插入图片描述

安装

pip install fastzdp_redis

Python连接Redis

import redis

# 建立链接
r = redis.Redis(host='localhost', port=6379, db=0)

# 设置key
r.set('foo', 'bar')

# 获取key的值
print(r.get('foo'))

RESP3 支持

简单的理解: 支持更丰富的数据类型

参考文档:
https://blog.csdn.net/LZH984294471/article/details/114233835
https://trunks2008.github.io/redis/RESP3.html#_5%E3%80%81verbatim-string

示例代码:

import redis

# 建立链接
# 通过参数 protocol=3  支持 RESP3
r = redis.Redis(host='localhost', port=6379, db=0, protocol=3)

# 设置key
r.set('foo', 'bar')

# 获取key的值
print(r.get('foo'))

连接池

import redis

# 建立链接
pool = redis.ConnectionPool(host='localhost', port=6379, db=0)
r = redis.Redis(connection_pool=pool)

# 设置key
r.set('foo', 'bar')

# 获取key的值
print(r.get('foo'))

异步支持

参考文档: https://redis.readthedocs.io/en/stable/examples/asyncio_examples.html

自动解析结果

import redis

# 建立链接
# decode_responses=True 得加在获取连接池对象的参数里面, 否则不生效
pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r = redis.Redis(connection_pool=pool)

# 设置key
r.set('foo', 'bar')

# 获取key的值
print(r.get('foo'))

设置过期时间

  • ex - 过期时间(秒) 这里过期时间是3秒,3秒后p,键food的值就变成None
  • px - 过期时间(豪秒) 这里过期时间是3豪秒,3毫秒后,键foo的值就变成None

示例代码:

import redis
import time

# 建立链接
# decode_responses=True 得加在获取连接池对象的参数里面, 否则不生效
pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r = redis.Redis(connection_pool=pool)

# 设置key
r.set('foo', 'bar', ex=3)

# 获取key的值
print(r.get('foo'))


time.sleep(3)

print(r.get('foo'))

nx 不存在才创建

nx - 如果设置为True,则只有name不存在时,当前set操作才执行 (新建)

在分布式事务中, 经常用到这个特性.

示例:

import redis
import time

# 建立链接
# decode_responses=True 得加在获取连接池对象的参数里面, 否则不生效
pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r = redis.Redis(connection_pool=pool)

# 设置key
# nx 不存在, 才新建
r.set('foo', 'bar', nx=True)
r.set('foo', 'bar333', nx=True)
print(r.get('foo'))


# 设置key
# 如果不设置nx, 则每次都会修改
r.set('foo', 'bar')
r.set('foo', 'bar333')
print(r.get('foo'))

使用FastZDPRedisClient

import fastzdp_redis as fzr

# 建立链接
rc = fzr.FastZDPRedisClient()
r = rc.get_client()

r.set("name", "张大鹏")
print(r.get("name"))

使用类封装的get和set方法

底层会自动维护连接池的链接, 更方便.

import fastzdp_redis as fzr

# 建立链接
r = fzr.FastZDPRedisClient()

r.set("name", "张大鹏")
print(r.get("name"))

底层封装的代码如下, 屏蔽细节, 使用更简单.

import redis


class FastZDPRedisClient:
    def __init__(
            self,
            host="127.0.0.1",
            port=6379,
            db=0,
            decode_responses=True
    ):
        # 连接池
        self.pool = redis.ConnectionPool(host=host, port=port, db=db, decode_responses=decode_responses)

    def get_client(self):
        """
        从连接池获取客户端对象
        :return: Redis操作的客户端对象
        """
        return redis.Redis(connection_pool=self.pool)

    def set(self, key, value, ex=None):
        """设置字符串的方法"""
        r = self.get_client()
        if isinstance(ex, int):
            r.set(key, value, ex)
        else:
            r.set(key, value)
        r.close()

    def get(self, key):
        """获取字符串的方法"""
        r = self.get_client()
        value = r.get(key)
        r.close()
        return value

原文地址:https://blog.csdn.net/qq_37703224/article/details/142545992

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!