docker 部署 redis

docker 部署 redis

1. 下载 redis 镜像

# docker images | grep redis
bitnami/redis                  7.2.4-debian-11-r5   45de196aef7e   10 months ago   95.2MB

2. docker-compose 部署

version: "3"
services:redis:image: bitnami/redis:7.2.4-debian-11-r5#ports:#  - "6379:6379"environment:- REDIS_PASSWORD=redisisthebestnetworks:- mynetvolumes:- "/data/docker_data/redis/conf:/opt/bitnami/redis/etc"- "/data/docker_data/redis/data:/bitnami/redis/data"networks:mynet:external: false

注意:挂载data目录增加宿主机上incr.aof的写权限,
在这里插入图片描述
否则redis启动报错
在这里插入图片描述

python 操作 redis

在 Python 中连接和操作 Redis 数据库,通常使用 redis-py 库。以下是连接 Redis 的基本步骤和示例代码。

1. 安装 redis-py

首先,你需要安装 redis-py 库。可以使用 pip 来安装:

pip install redis

2. 连接到 Redis

以下是连接到本地 Redis 服务器的示例代码:

import redis# 创建 Redis 连接
r = redis.Redis(host='localhost',  # Redis 服务器地址port=6379,         # Redis 端口db=0,              # 数据库编号password=None      # 如果 Redis 设置了密码,填写密码
)# 测试连接
try:r.ping()  # 发送 PING 命令,检查是否连接成功print("Connected to Redis!")
except redis.ConnectionError:print("Failed to connect to Redis.")

3. 基本操作

以下是一些常见的 Redis 操作示例:

设置和获取键值对
# 设置键值对
r.set('name', 'Alice')# 获取键值对
name = r.get('name')
print(name.decode('utf-8'))  # 输出: Alice
删除键
r.delete('name')
检查键是否存在
exists = r.exists('name')
print(exists)  # 输出: 0 (不存在) 或 1 (存在)
设置过期时间
r.set('key', 'value')
r.expire('key', 10)  # 设置键在 10 秒后过期
获取所有键
keys = r.keys('*')  # 获取所有键
print([key.decode('utf-8') for key in keys])
列表操作
# 向列表中添加元素
r.lpush('mylist', 'item1')
r.lpush('mylist', 'item2')# 获取列表中的所有元素
items = r.lrange('mylist', 0, -1)
print([item.decode('utf-8') for item in items])  # 输出: ['item2', 'item1']
哈希操作
# 设置哈希字段
r.hset('myhash', 'field1', 'value1')
r.hset('myhash', 'field2', 'value2')# 获取哈希字段
value = r.hget('myhash', 'field1')
print(value.decode('utf-8'))  # 输出: value1# 获取所有哈希字段和值
hash_data = r.hgetall('myhash')
print({k.decode('utf-8'): v.decode('utf-8') for k, v in hash_data.items()})
集合操作
# 向集合中添加元素
r.sadd('myset', 'member1')
r.sadd('myset', 'member2')# 获取集合中的所有元素
members = r.smembers('myset')
print([member.decode('utf-8') for member in members])

4. 使用连接池

在高并发场景下,建议使用连接池来管理 Redis 连接,以提高性能。

import redis# 创建连接池
pool = redis.ConnectionPool(host='localhost',port=6379,db=0
)# 从连接池获取连接
r = redis.Redis(connection_pool=pool)# 使用连接
r.set('key', 'value')
value = r.get('key')
print(value.decode('utf-8'))

5. 处理异常

在实际应用中,建议捕获和处理 Redis 操作中的异常。

import redistry:r = redis.Redis(host='localhost', port=6379, db=0)r.set('key', 'value')value = r.get('key')print(value.decode('utf-8'))
except redis.RedisError as e:print(f"Redis error: {e}")

总结

  • 使用 redis-py 库可以轻松连接和操作 Redis。
  • 常见的操作包括设置和获取键值对、列表操作、哈希操作、集合操作等。
  • 在高并发场景下,建议使用连接池来管理连接。
  • 处理异常以确保程序的健壮性。

通过这些步骤,你可以在 Python 中轻松地连接和操作 Redis 数据库。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/492196.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Windows环境 (Ubuntu 24.04.1 LTS ) 国内镜像,用apt-get命令安装RabbitMQ,java代码样例

一、环境 Windows11 WSL(Ubuntu 24.04.1) 二、思路 1 用Windows中的Ubuntu安装RabbitMQ,贴近Linux的线上环境; 2 RabbitMQ用erlang语言编写的,先安装erlang的运行环境; 2 用Linux的apt-get命令安装,解决软件依赖…

Linux网络应用——高级IO

目录 1. I/O 的重新理解 2. 五种 I/O 模型 ① 阻塞 && 非阻塞 ② 同步 I/O && 异步 I/O 3. select 模型 ① 非阻塞 I/O ② select 接口介绍 ③ 代码实现 ④ select 模型的优缺点 4. poll 模型 ① poll 接口介绍 ② 代码实现 ③ 与 select 模型的…

Dcoker Redis哨兵模式集群介绍与搭建 故障转移 分布式 Java客户端连接

介绍 Redis 哨兵模式(Sentinel)是 Redis 集群的高可用解决方案,它主要用于监控 Redis 主从复制架构中的主节点和从节点的状态,并提供故障转移和通知功能。通过 Redis 哨兵模式,可以保证 Redis 服务的高可用性和自动故…

使用 Wireshark 和 Lua 脚本解析通讯报文

在复杂的网络环境中,Wireshark 凭借其强大的捕获和显示功能,成为协议分析不可或缺的工具。然而,面对众多未被内置支持的协议或需要扩展解析的场景,Lua 脚本的引入为Wireshark 提供了极大的灵活性和可扩展性。本文将详细介绍如何使…

宝塔SSL证书申请失败,报错:申请SSL证书错误 module ‘OpenSSL.crypto‘ has no attribute ‘sign‘(已解决)

刚安装宝塔申请SSL就报错:申请SSL证书错误 module OpenSSL.crypto has no attribute sign 面板、插件版本:9.2.0 系统版本:Alibaba Cloud Linux 3.2104 LTS 问题:申请SSL证书错误 module OpenSSL.crypto has no attribute sign…

自动驾驶控制与规划——Project 2: 车辆横向控制

目录 零、任务介绍一、环境配置二、算法三、代码实现四、效果展示 零、任务介绍 补全src/ros-bridge/carla_shenlan_projects/carla_shenlan_stanley_pid_controller/src/stanley_controller.cpp中的TODO部分。 一、环境配置 上一次作业中没有配置docker使用gpu,…

双内核架构 Xenomai 4 安装教程

Xenomai 4是一种双内核架构, 继承了Xenomai系列的特点,通过在Linux内核中嵌入一个辅助核心(companion core),来提供实时能力。这个辅助核心专门处理那些需要极低且有界响应时间的任务。 本文将在官网教程(https://evlproject.org/…

MySQL学习之DML操作

目录 插入 删除 修改 数据库事务 事务的特征(ACID原则) 原子性 一致性 隔离性 持久性 事务隔离级别 读未提交 读已提交 可重复读 序列化 脏读 虚读 幻读 插入 insert into 表名 values(); 要求插入数据的数量,类型要和定义…

clearvoice 语音降噪、语音分离库

参看: https://github.com/modelscope/ClearerVoice-Studio/tree/main ClearVoice 提供了一个统一的推理平台,用于语音增强、语音分离以及视听目标说话人提取。 代码参看: https://github.com/modelscope/ClearerVoice-Studio/tree/main/clearvoice https://github.com/mode…

linux打包qt程序

Linux下Qt程序打包_linuxdeployqt下载-CSDN博客 Linux/Ubuntu arm64下使用linuxdeployqt打包Qt程序_linuxdeployqt arm-CSDN博客 本篇文章的系统环境是 : 虚拟机ubuntu18.04 用下面这个qmake路径 进行编译 在 ~/.bashrc 文件末尾,qmake目录配置到文件末尾 将上图中…

qt-C++笔记之自定义类继承自 `QObject` 与 `QWidget` 及开发方式详解

qt-C笔记之自定义类继承自 QObject 与 QWidget 及开发方式详解 code review! 参考笔记 1.qt-C笔记之父类窗口、父类控件、对象树的关系 2.qt-C笔记之继承自 QWidget和继承自QObject 并通过 getWidget() 显示窗口或控件时的区别和原理 3.qt-C笔记之自定义类继承自 QObject 与 QW…

教师工作量管理系统

源代码地址:31、教师工作量管理系统 目录 1系统概述 1.1 研究背景 1.2研究目的 1.3系统设计思想 2相关技术 2.1 MYSQL数据库 2.2 B/S结构 2.3 Spring Boot框架简介 3系统分析 3.1可行性分析 3.1.1技术可行性 3.1.2经济可行性 3.1.3操作可行性 3.2系统性…

LiveData源码研究

LiveData 源码分析 前言 用过MVVM的大概知道LiveData可以感知组件的生命周期,当页面活跃时,更新页面数据, 当页面处于非活跃状态,它又会暂停更新,还能自动注册和注销观测者,能有效避免内存泄漏和不必要的…

vscode+msys2+clang+xmake c++开发环境搭建

转载请标明出处:小帆的帆的专栏 安装msys2 下载msys2安装包:清华源下载地址安装msys2:安装目录,C:\Softwares\msys64 安装cling工具链,xmake !!!在开始菜单中启动MSYS2 CLANG64,…

VMware ubuntu16.04怎么设置静态IP联网

1.将VMware桥接到当前电脑使用的网络上面; 2.点击网络符号,编辑连接; 3.双击有线连接1; 4.选择IPv4设置,将地址,子网掩码,网关,DNS服务器设置好,保存; 5.在终…

金蝶云苍穹踩过的坑(慢慢更新)

IDEA不能用最新版,不然搜不到金蝶的插件。 我用的是2024.1.7/2023.1.7 IDEA里增加金蝶插件库的地址也变了,现在是 https://tool.kingdee.com/kddt/idea-updatePlugins.xml 金蝶云苍穹部署在服务器 MAC本地IDEA调试的时候,登录N次能成功一次…

【人工智能学习之HDGCN训练自己的数据集】

【人工智能学习之HDGCN训练自己的数据集】 HD-GCN准备事项项目代码开源数据集第一行:帧数第二行:body数第三行:关节附加信息第四行:关节数5-29行:每个关节的数据之后的帧总结: 自定义2D数据集模型移植与修改…

Trimble天宝三维激光扫描仪在建筑工程竣工测量中的应用【沪敖3D】

竣工测量是建筑项目竣工阶段的一个至关重要的环节,它为建筑工程的质量验收和成果核查提供了核心的参考依据。传统的竣工测量方法,如全站仪测量,主要依赖于现场人工操作,存在一些明显的局限性,例如作业时间长、工作量大…

Unity A*算法实现+演示

注意: 本文是对基于下方文章链接的理论,并最终代码实现,感谢作者大大的描述,非常详细,流程稍微做了些改动,文末有工程网盘链接,感兴趣的可以下载。 A*算法详解(个人认为最详细,最通俗易懂的一…

MoonBit 核心编译器正式开源!

由 IDEA研究院基础软件中心打造的 MoonBit (月兔)AI 原生开发平台,今日宣布正式开源其核心的编译器 WebAssembly(简称“Wasm”) 后端。开发者现在可以利用 MoonBit 的能力做性能优化,且直接参与 MoonBit 的…