当前位置: 首页 > article >正文

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

http://www.kler.cn/a/320488.html

相关文章:

  • 网页作业9
  • 探索 HTML 和 CSS 实现的 3D旋转相册
  • Skywalking搭建-来自于图灵课堂
  • C++内存管理 - new/delete
  • H.265流媒体播放器EasyPlayer.js视频流媒体播放器关于直播流播放完毕是否能监听到
  • 基于Spring Boot+Unipp的博物馆预约小程序(协同过滤算法、二维码识别)【原创】
  • Linux标准IO(三)-格式化I/O输出
  • SpringBoot集成阿里easyexcel(一)基础导入导出
  • 使用爬虫编写一个挖掘更多关键词的脚本
  • 在深度学习中,是否应该打破正负样本1:1的迷信思想?
  • 戴尔笔记本电脑——重装系统
  • 安卓桌面Launcher负一屏如何实现各种方案比较设计
  • RNN模型学习
  • Kotlin Android 环境搭建
  • 网络原理3-应用层(HTTP/HTTPS)
  • C++三大特性——继承性(超万字详解)
  • 传奇外网架设教程带图文解说—Gee引擎
  • 如何在Excel中快速找出前 N 名,后 N 名
  • 【程序大侠传】应用内存缓步攀升,告警如影随形
  • ESP32 入门笔记02: ESP32-C3 系列( 芯片ESP32-C3FN4) (ESP-IDF + VSCode)
  • vant van-pull-refresh + van-list实现list列表支持搜索和下拉刷新
  • 前端框架对比与选择
  • SpringBoot整合邮件功能(带附件)
  • 江上场景目标检测系统源码分享
  • 嵌入式开发Git使用
  • 戴尔迅速应对疑似信息泄露事件,强化数据保护措施|硬盘文件数据销毁 文件销毁 数据销毁