docker 部署 redis

news2024/12/17 3:52:59

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=redisisthebest
    networks:
      - mynet
    volumes:
      - "/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 redis

try:
    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.coloradmin.cn/o/2260839.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于python绘制数据表(上)

利用python绘制各种数据图表 绘制柱形图-源码 from openpyxl import Workbook from openpyxl.chart import BarChart, Reference# 创建工作薄 wb Workbook(write_onlyTrue) # 创建工作表 ws wb.create_sheet(月收入)# 准备数据 rows [(月份, 销售额),(1, 23),(2, 43),(3, …

使用skywalking,grafana实现从请求跟踪、 指标收集和日志记录的完整信息记录

Skywalking是由国内开源爱好者吴晟开源并提交到Apache孵化器的开源项目, 2017年12月SkyWalking成为Apache国内首个个人孵化项目, 2019年4月17日SkyWalking从Apache基金会的孵化器毕业成为顶级项目, 目前SkyWalking支持Java、 .Net、 Node.js、…

ViG:图像分类领域前沿

🍑个人主页:Jupiter. 🚀 所属专栏:传知代码 欢迎大家点赞收藏评论😊 目录 图片分类任务方法概述卷积神经网络(CNN)视觉Transformer(ViT)视觉图神经网络(ViG&a…

系列2:基于Centos-8.6Kubernetes 集成GPU资源信息

每日禅语 自省,就是自我反省、自我检查,自知己短,从而弥补短处、纠正过失。佛陀强调自觉觉他,强调以达到觉行圆满为修行的最高境界。要改正错误,除了虚心接受他人意见之外,还要不忘时时观照己身。自省自悟之…

03篇--二值化与自适应二值化

二值化 定义 何为二值化?顾名思义,就是将图像中的像素值改为只有两种值,黑与白。此为二值化。 二值化操作的图像只能是灰度图,意思就是二值化也是一个二维数组,它与灰度图都属于单信道,仅能表示一种色调…

发现一个对话框中的按钮,全部失效,点击都没有任何反应,已经解决

前端问题,技术vue2,ts。 发现一个对话框中的按钮,全部失效,点击都没有任何反应。 因为我只在template标签中加入下面这个代码,并没有注册。 只要有一个子组件没有注册,就会影响所有的按钮,使当前…

RT系列机器人详细介绍(BC-Z、RT-1、OMM、RT-Trajectory、Q-Transformer、RT-2、RT-X、RT-H)

目录 一、BC-Z二、RT-1三、MOO四、RT-Trajectory五、Q-Transformer六、RT-2七、RT-X八、RT-H参考文献 一、BC-Z BC-Z通过结合大规模的交互式模仿学习系统、灵活的任务嵌入和多样化的数据,实现了在未见任务上的零样本泛化,为机器人学习领域提供了一种新的…

鸿蒙系统-前端0帧起手

鸿蒙系统-前端0帧起手 先search 一番 找到对应的入门文档1. 运行项目遇到问题 如下 (手动设计npm 的 registry 运行 npm config set registry https://registry.npmjs.org/)2.运行后不支持一些模拟器 配置一下(如下图,运行成功&am…

Redis是什么?Redis和MongoDB的区别在那里?

Redis介绍 Redis(Remote Dictionary Server)是一个开源的、基于内存的数据结构存储系统,它可以用作数据库、缓存和消息中间件。以下是关于Redis的详细介绍: 一、数据结构支持 字符串(String) 这是Redis最…

【问题记录】07 MAC电脑,使用FileZilla(SFTP)连接堡垒机不成功

项目场景: 使用MAC电脑,以子账号(非root)的形式登录,连接堡垒机CLB(传统型负载均衡),使用FileZilla(SFTP)进行FTP文件传输。 问题描述: MAC电脑…

从0到1实现vue3+vite++elementuiPlus+ts的后台管理系统(一)

前言:从这篇文章开始实现vue3vite的后台管理系统,记录下自己搭建后台系统图的过程。 这篇文章完成项目的初始化和基本配置,这一步可以直接跟着vue3官网进行。整个系列只有前端部分,不涉及后端。 vue3官网:https://cn.…

计算机网络错题

文章目录 码分复用透明传输差错检测停止-等待协议回退N帧协议CSMA/CD协议以太网交换机Vlanip地址的无分类编制方法ip地址的应用规划ip数据包的发送和转发过程路由信息协议IPI2016201720202022 2.5信道 码分复用 透明传输 差错检测 停止-等待协议 回退N帧协议 CSMA/CD协议 以太网…

报错:Method Not Allowed

当报错这个的时候就要注意了,自己的方法是否写对了!!! 就像我的这个因为我的后端是put,所以这也是put,我报错就是因为这写了get,虽然页面是改变了,但是一刷新,就会原形毕…

IDEA 2024 版本配置热部署

在实际开发过程中,每次修改代码就得将项目重启,重新部署,对于一些大型应用来说,重启时间需要花费大量的时间成本。对于一个后端开发者来说,重启过程确实很难受啊 采用下面三步骤可以完成 1.在IDEA中settings中搜索Debb…

客户端(浏览器)vue3本地预览txt,doc,docx,pptx,pdf,xlsx,csv,

预览文件 1、入口文件preview/index.vue2、预览txt3、预览doc4、预览pdf5、预览pptx6、预览xlsx7、预览csv 1、入口文件preview/index.vue 预览样式&#xff0c;如pdf 文件目录如图所示&#xff1a; 代码如下 <template><div class"preview-wrap" ref&…

安卓低功耗蓝牙BLE官方开发例程(JAVA)翻译注释版

官方原文链接 https://developer.android.com/develop/connectivity/bluetooth/ble/ble-overview?hlzh-cn 目录 低功耗蓝牙 基础知识 关键术语和概念 角色和职责 查找 BLE 设备 连接到 GATT 服务器 设置绑定服务 设置 BluetoothAdapter 连接到设备 声明 GATT 回…

uniapp打包apk允许横屏竖屏内容翻转

文章目录 一、教程总结 一、教程 1.添加配置 "orientation": [//竖屏正方向"portrait-primary",//竖屏反方向"portrait-secondary",//横屏正方向"landscape-primary",//横屏反方向"landscape-secondary",//自然方向"…

ElasticSearch 常见故障解析与修复秘籍

文章目录 一、ElasticSearch启动服务提示无法使用root用户二、ElasticSearch启动提示进程可拥有的虚拟内存少三、ElasticSearch提示用户拥有的可创建文件描述符太少四、ElasticSearch集群yellow状态分析五、ElasticSearch节点磁盘使用率过高&#xff0c;read_only状态问题解决六…

Java——网络编程(上)

1 计算机网络 (作用资源共享和信息传递) (计算机网络组成——> 硬件——>计算机设备&#xff0c;外部设备&#xff0c;通信线路 软件——>网络操作系统&#xff0c;网络管理软件&#xff0c;网络通信协议) 计算机网络是指将地理位置不同的具有独立功能的多台计算机…

游戏引擎学习第50天

仓库: https://gitee.com/mrxiao_com/2d_game Minkowski 这个算法有点懵逼 回顾 基本上&#xff0c;现在我们所处的阶段是&#xff0c;回顾最初的代码&#xff0c;我们正在讨论我们希望在引擎中实现的所有功能。我们正在做的版本是初步的、粗略的版本&#xff0c;涵盖我们认…