python对redis的增删查改

python对redis的增删查改

  • 安装 redis-py 库
  • 连接 Redis 服务器
    • 1. 字符串(String)
    • 2. 列表(List)
    • 3. 哈希(Hash)
    • 4. 集合(Set)
    • 5. 有序集合(Sorted Set)
    • 1. 删除键
    • 2. 从列表中删除元素
    • 3. 从哈希中删除字段
    • 4. 从集合中删除元素
    • 5. 从有序集合中删除元素
    • 1. 获取字符串
    • 2. 获取列表
    • 3. 获取哈希
    • 4. 获取集合
    • 5. 获取有序集合
    • 1. 更新字符串
    • 2. 更新列表
    • 3. 更新哈希
    • 4. 更新集合
    • 5. 更新有序集合
  • 完整示例

安装 redis-py 库

需要安装 redis-py 库,可以使用 pip 安装:

pip install redis

连接 Redis 服务器

在使用 redis-py 之前,需连接到 Redis 服务器,可使用 Redis 类来创建一个连接实例

import redis# 创建连接
r = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)
#r = redis.StrictRedis(host='localhost',port=6379)

1. 字符串(String)

# 设置一个键值对
r.set('key1', 'value1')# 获取值
value = r.get('key1')
print(value)  # Output: value1

2. 列表(List)

# 在列表的左侧插入值
r.lpush('list1', 'item1')
r.lpush('list1', 'item2')# 在列表的右侧插入值
r.rpush('list1', 'item3')# 获取列表的所有值
values = r.lrange('list1', 0, -1)
print(values)  # Output: ['item2', 'item1', 'item3']

3. 哈希(Hash)

# 设置一个哈希的字段
r.hset('hash1', 'field1', 'value1')
r.hset('hash1', 'field2', 'value2')# 获取哈希的所有字段和值
fields_values = r.hgetall('hash1')
print(fields_values)  # Output: {'field1': 'value1', 'field2': 'value2'}

4. 集合(Set)

# 添加元素到集合
r.sadd('set1', 'item1')
r.sadd('set1', 'item2')
r.sadd('set1', 'item3')# 获取集合的所有元素
members = r.smembers('set1')
print(members)  # Output: {'item1', 'item2', 'item3'}

5. 有序集合(Sorted Set)

# 添加元素到有序集合
r.zadd('sorted_set1', {'item1': 1, 'item2': 2, 'item3': 3})# 获取有序集合的所有元素
members_scores = r.zrange('sorted_set1', 0, -1, withscores=True)
print(members_scores)  # Output: [('item1', 1.0), ('item2', 2.0), ('item3', 3.0)]

1. 删除键

# 删除键
r.delete('key1')

2. 从列表中删除元素

# 从列表中删除指定元素
r.lrem('list1', 0, 'item2')

3. 从哈希中删除字段

# 从哈希中删除字段
r.hdel('hash1', 'field1')

4. 从集合中删除元素

# 从集合中删除元素
r.srem('set1', 'item1')

5. 从有序集合中删除元素

# 从有序集合中删除元素
r.zrem('sorted_set1', 'item1')

1. 获取字符串

# 获取字符串值
value = r.get('key1')
print(value)

2. 获取列表

# 获取列表的所有值
values = r.lrange('list1', 0, -1)
print(values)

3. 获取哈希

# 获取哈希的所有字段和值
fields_values = r.hgetall('hash1')
print(fields_values)

4. 获取集合

# 获取集合的所有元素
members = r.smembers('set1')
print(members)

5. 获取有序集合

# 获取有序集合的所有元素
members_scores = r.zrange('sorted_set1', 0, -1, withscores=True)
print(members_scores)

1. 更新字符串

# 更新字符串值
r.set('key1', 'new_value')
value = r.get('key1')
print(value)  # Output: new_value

2. 更新列表

# 在列表的右侧插入新值
r.rpush('list1', 'item4')
values = r.lrange('list1', 0, -1)
print(values)  # Output: ['item2', 'item1', 'item3', 'item4']

3. 更新哈希

# 更新哈希的字段值
r.hset('hash1', 'field2', 'new_value2')
fields_values = r.hgetall('hash1')
print(fields_values)  # Output: {'field2': 'new_value2'}

4. 更新集合

集合中的元素是唯一的,不能直接更新,如果需要更新,可以先删除再插入

# 删除元素后重新插入
r.srem('set1', 'item1')
r.sadd('set1', 'new_item1')
members = r.smembers('set1')
print(members)  # Output: {'new_item1', 'item2', 'item3'}

5. 更新有序集合

有序集合中的元素也可以通过修改分数来更新

# 更新有序集合的分数
r.zadd('sorted_set1', {'item2': 4})
members_scores = r.zrange('sorted_set1', 0, -1, withscores=True)
print(members_scores)  # Output: [('item1', 1.0), ('item3', 3.0), ('item2', 4.0)]

完整示例

import redis# 创建连接
r = redis.Redis(host='localhost', port=6379, db=0, decode_responses=True)# 增
r.set('key1', 'value1')
r.lpush('list1', 'item1')
r.hset('hash1', 'field1', 'value1')
r.sadd('set1', 'item1')
r.zadd('sorted_set1', {'item1': 1})# 查
print(r.get('key1'))  # Output: value1
print(r.lrange('list1', 0, -1))  # Output: ['item1']
print(r.hgetall('hash1'))  # Output: {'field1': 'value1'}
print(r.smembers('set1'))  # Output: {'item1'}
print(r.zrange('sorted_set1', 0, -1, withscores=True))  # Output: [('item1', 1.0)]# 改
r.set('key1', 'new_value1')
r.rpush('list1', 'item2')
r.hset('hash1', 'field1', 'new_value1')
r.srem('set1', 'item1')
r.sadd('set1', 'new_item1')
r.zadd('sorted_set1', {'item1': 2})# 查
print(r.get('key1'))  # Output: new_value1
print(r.lrange('list1', 0, -1))  # Output: ['item1', 'item2']
print(r.hgetall('hash1'))  # Output: {'field1': 'new_value1'}
print(r.smembers('set1'))  # Output: {'new_item1'}
print(r.zrange('sorted_set1', 0, -1, withscores=True))  # Output: [('item1', 2.0)]# 删
r.delete('key1')
r.lrem('list1', 0, 'item1')
r.hdel('hash1', 'field1')
r.srem('set1', 'new_item1')
r.zrem('sorted_set1', 'item1')# 查
print(r.get('key1'))  # Output: None
print(r.lrange('list1', 0, -1))  # Output: ['item2']
print(r.hgetall('hash1'))  # Output: {}
print(r.smembers('set1'))  # Output: {}
print(r.zrange('sorted_set1', 0, -1, withscores=True))  # Output: []

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

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

相关文章

电影动画shader解析与实现

着色器代码解析 大家好!我是 [数擎AI],一位热爱探索新技术的前端开发者,在这里分享前端和Web3D、AI技术的干货与实战经验。如果你对技术有热情,欢迎关注我的文章,我们一起成长、进步! 开发领域:…

【FlutterDart】 拖动边界线改变列宽类似 vscode 那种拖动改变编辑框窗口大小(11 /100)

【Flutter&Dart】 拖动改变 widget 的窗口尺寸大小GestureDetector~简单实现(10 /100) 【Flutter&Dart】 拖动边界线改变列宽并且有边界高亮和鼠标效果(12 /100) 上效果: 这个在知乎里找到的效果&…

【Rust自学】11.1. 编写和运行测试

喜欢的话别忘了点赞、收藏加关注哦,对接下来的教程有兴趣的可以关注专栏。谢谢喵!(・ω・) 11.1.1. 什么是测试 在Rust里一个测试就是一个函数,它被用于验证非测试代码的功能是否和预期一致。 在一个测试的函数体里通…

数据分析思维(八):分析方法——RFM分析方法

数据分析并非只是简单的数据分析工具三板斧——Excel、SQL、Python,更重要的是数据分析思维。没有数据分析思维和业务知识,就算拿到一堆数据,也不知道如何下手。 推荐书本《数据分析思维——分析方法和业务知识》,本文内容就是提取…

57. Three.js案例-创建一个带有聚光灯和旋转立方体的3D场景

57. Three.js案例-创建一个带有聚光灯和旋转立方体的3D场景 实现效果 该案例实现了使用Three.js创建一个带有聚光灯和旋转立方体的3D场景。 知识点 WebGLRenderer(WebGL渲染器) THREE.WebGLRenderer 是 Three.js 中用于将场景渲染为 WebGL 内容的核…

Idea-离线安装SonarLint插件地址

地址: SonarQube for IDE - IntelliJ IDEs Plugin | Marketplace 选择Install Plugin from Disk..,选中下载好的插件,然后重启idea

Unity:删除注册表内的项目记录

然后WinR按键输入regedit 打开注册表 在注册表 HKEY CURRENT USER—>SOFTWARE—>Unity—>UnityEditor—>DefaultCompany —>language_Test 中,删除我们的之前存储的语言环境数据。在 “ 三、文本调用和替换 ” 测试时已经将语言环境存储到注册表中了…

JAVA学习记录3

文章为个人学习记录,仅供参考,如有错误请指出。 上期说到使用记事本编写Java程序太过繁琐,所以我们后面都将使用IDEA进行代码的编写、编译和运行。 如何下载安装IDEA? 这个的下载途径也很多,我还是推荐去官网下载(h…

CSS——22.静态伪类(伪类是选择不同元素状态)

<!DOCTYPE html> <html><head><meta charset"UTF-8"><title>静态伪类</title> </head><body><a href"#">我爱学习</a></body> </html>单击链接前的样式 左键单击&#xff08;且…

IDEA中Maven依赖包导入失败报红的潜在原因

在上网试了别人的八个问题总结之后依然没有解决&#xff1a; IDEA中Maven依赖包导入失败报红问题总结最有效8种解决方案_idea导入依赖还是报红-CSDN博客https://blog.csdn.net/qq_43705131/article/details/106165960 江郎才尽之后突然想到一个原因&#xff1a;<dep…

GMDH自组织网络模型时间序列预测,可预测未来

GMDH自组织网络模型时间序列预测&#xff0c;可预测未来 目录 GMDH自组织网络模型时间序列预测&#xff0c;可预测未来效果一览基本介绍模型构建程序设计学习总结参考资料 效果一览 基本介绍 GMDH自组织网络模型是自组织数据挖掘中的一种模型方法&#xff0c;是基于计算机科学和…

【docker系列】可视化Docker 管理工具——Portainer

1. 介绍 Portainer是一个可视化的Docker操作界面&#xff0c;提供状态显示面板、应用模板快速部署、容器镜像网络数据卷的基本操作&#xff08;包括上传下载镜像&#xff0c;创建容器等操作&#xff09;、事件日志显示、容器控制台操作、Swarm集群和服务等集中管理和操作、登录…

Linux/Ubuntu/银河麒麟 arm64 飞腾FT2000 下使用 arm64版本 linuxdeployqt 打包Qt程序

文章目录 一、前言二、环境三、准备1、下载Linuxdeployqt源码2、下载Appimagetool-aarch64.AppImage四、编译linuxdeployqt1.配置环境变量2.编译linuxdeployqt五、安装patchelf六、配置Appimagetool七、打包Qt程序重要提示:测试启动应用八、其他九、最后一、前言 因为项目需要…

pg数据库运维经验2024

这篇文章主要是讲pg运维常见问题&#xff0c;两三年见一次的疑难杂症就不说了。 主要是技术性运维总结&#xff0c;主打通俗易懂和快速上手&#xff0c;尽量避免源码层面等深入分析。 SQL性能与执行计划 执行计划突变 pg官方不支持hint功能&#xff0c;并且计划永远不支持&…

Hadoop 实战笔记(一) -- Windows 安装 Hadoop 3.x

环境准备 安装 JAVA 1.8 Java环境搭建之JDK下载及安装下载 Hadoop 3.3.5 安装包 Hadoop 下载&#xff1a;https://archive.apache.org/dist/hadoop/common/ 一、JAVA JDK 环境检查 二、Hadoop(HDFS)环境搭建 1. 解压安装文件 hadoop-3.3.5.tar 2. 配置环境变量 HADOOP_HO…

个人博客搭建(二)—Typora+PicGo+OSS

个人博客站—运维鹿: http://www.kervin24.top CSDN博客—做个超努力的小奚&#xff1a; 做个超努力的小奚-CSDN博客 一、前言 博客搭建完一直没有更新&#xff0c;因为WordPress自带的文档编辑器不方便&#xff0c;以前用CSDN写作的时候&#xff0c;习惯了Typora。最近对比了…

【向量数据库】搜索算法

最近几年&#xff0c;一种叫做向量数据库的产品&#xff0c;正趁着AI的热潮开始崭露头角。伴随着AI时代的到来&#xff0c;向量将成为一种重要的数据形式&#xff0c;而传统数据库并不适合用来存储和检索向量数据&#xff0c;因此我们大约需要一种专门设计的数据库来处理这些问…

ARM CCA机密计算安全模型之安全生命周期管理

安全之安全(security)博客目录导读 目录 一、固件启用的调试 二、CCA系统安全生命周期 三、重新供应 四、可信子系统与CCA HES 启用 CCA&#xff08;机密计算架构&#xff09;的安全系统是指 CCA 平台的实现处于可信状态。 由于多种原因&#xff0c;CCA 启用系统可能处于不…

k8s排错集:zk集群的pod报错 Init:CrashLoopBackOff无法启动

zk三节点集群&#xff0c;zk-0无法启动 statefulset 进到该node节点上查看容器的报错日志&#xff0c;发现在初始化container的时候一个命令有问题 查看正常zk集群的pod的资源配置文件 解决办法&#xff1a; 修改资源配置文件 应该修改为 chown -R 1000:1000 /zkenv kubec…

Golang的并发编程框架比较

# Golang的并发编程框架比较 中的并发编程 在现代软件开发中&#xff0c;处理高并发的能力愈发重要。Golang作为一门支持并发编程的编程语言&#xff0c;提供了丰富的并发编程框架和工具&#xff0c;使得开发者能够更轻松地处理并发任务。本文将介绍Golang中几种常用的并发编程…