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

Python 操作Redis

在 Python中我们使用 redis库来操作 Redis数据库。Redis数据库的使用命令这里就不介绍了。

需要安装 redis库。检查是否安装redis:

pip redis

如果未安装,使用 pip命令安装 redis。

pip install redis #安装最新版本

一、Redis连接

Redis提供两个类 Redis和 StrictRedis用于实现 Redis的命令。

  • StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,
  • Redis是 StrictRedis的子类,用于向后兼容旧版本的 redis-py库。

方式1:单机连接

import redisredis_conn = redis.Redis(host='192.168.xxx.xxx',port=16379,password='******',db=0,decode_responses=True)print(redis_conn) 
# Redis<ConnectionPool<Connection<host=192.168.xxx.xxx,port=16379,db=0>>>

注意:redis 取出的结果默认都是字节(bytes)类型,我们可以设定 decode_responses=True 改成字符串。

方式2:连接池

redis-py 使用 connection pool 来管理对一个 redis server 的所有连接,避免每次建立、释放连接的开销。

默认,每个Redis实例都会维护一个自己的连接池。可以直接建立一个连接池,然后作为参数 Redis,这样就可以实现多个 Redis 实例共享一个连接池。

import redisredis_pool = redis.ConnectionPool(host='192.168.xxx.xxx',port=16379,password='******',db=0,decode_responses=True)redis_conn = redis.Redis(connection_pool=redis_pool)print(redis_conn)

二、Redis操作

在 Redis 中设置值,默认,不存在则创建,存在则修改。

1、String字符串

redis基本语法:

set(name, value, ex=None, px=None, nx=False, xx=False)

参数:

  • ex - 过期时间(秒)
  • px - 过期时间(毫秒)
  • nx - 如果设置为True,则只有name不存在时,当前set操作才执行
  • xx - 如果设置为True,则只有name存在时,当前set操作才执行

示例代码如下:

res = redis_conn.set('kk1', 'vv1', ex=30)
v1 = redis_conn.get('kk1')
print(res)  
print(v1)  res = redis_conn.set('kk2', 'vv字符串', ex=30)
v2 = redis_conn.get('kk2')
print(v2)  

在这里插入图片描述

2、List列表

左边增加:lpush(name,values)
右边增加:rpush(name,values)

示例代码如下:

# 表示从左向右操作
redis_conn.lpush("list1", 11, 22, 33)
print(redis_conn.lrange('list1', 0, -1))  # 取出全部。# 表示从右向左操作
redis_conn.rpush("list2", 11, 22, 33, 44)
print(redis_conn.llen("list2"))  # 列表长度。
print(redis_conn.lrange("list2", 0, 3))  # 切片取出值,范围是索引号0-3。

在这里插入图片描述

3、Hash哈希

单个增加基本语法:

hset(name, key, value)

参数:

  • name - redis的name
  • key - name对应的hash中的key
  • value - name对应的hash中的value

示例代码如下:

redis_conn.hset("hash1", "k1", "v1")
redis_conn.hset("hash1", "k2", "v2")print(redis_conn.hkeys("hash1"))  # 取hash中所有的key
print(redis_conn.hget("hash1", "k5"))  # 单个取hash的key对应的值。不存在返回None
print(redis_conn.hmget("hash1", "k1", "k2"))  # 多个取hash的key对应的值

在这里插入图片描述

4、Set集合

新增:sadd(name,values)
获取元素个数:scard(name)
获取集合中所有的成员:smembers(name)

示例代码如下:

redis_conn.sadd("set1", 33, 44, 55, 66)  # 往集合中添加元素print(redis_conn.scard("set1"))  # 集合的长度是4
print(redis_conn.smembers("set1"))  # 获取集合中所有的成员

在这里插入图片描述

5、其他常用操作

  • 删除:delete(*names)
  • 检查名字是否存在:exists(name)
  • 设置超时时间:expire(name ,time)
  • 获取类型:type(name)
  • 查看所有元素–迭代器:scan_iter(match=None, count=None)

通过上面示例,其实在Python操作Redis数据库,主要还是要熟悉 Redis数据库的相关命令和语法。更多操作大家举一反三。

三、Redis操作封装

这里通过类简单封装一下 Redis数据库的相关操作。

代码如下:

import redis# RedisUtils 操作工具类
class RedisUtils:def __init__(self, db=0, decode_responses=True):self.conn = redis.StrictRedis(host='192.168.xxx.xxx',port=16379,password='******',db=db,decode_responses=decode_responses)'''list相关操作方法'''# 创建或者增加列表数据的操作 rpush, lpushdef list_push(self, key, push_var='r', *value):# print(value)if push_var == 'r':self.conn.rpush(key, *value)elif push_var == 'l':self.conn.lpush(key, *value)# 删除列表数据的操作 lpop, rpop, lrem指定删除 count=0 代表删除全部#    count 也代表数量def list_pop(self, key, count, value, pop_var='r'):if pop_var == 'r':# 从右边删除self.conn.rpop(key)elif pop_var == 'l':# 从左边删除self.conn.lpop(key)elif pop_var == 'm':# 指定删除全部元素self.conn.lrem(key, count, value)elif pop_var == 'c':list2 = self.conn.lrange(key, 0, -1)# 遍历删除全部元素for value in list2:self.conn.lrem(key, count, value)# 修改所在索引的元素:lset lset key index valuedef list_set(self, key, index, value):self.conn.lset(key, index, value)# 查看列表元素所在的索引:lrangedef list_get(self, key, start_index, end_index):print(self.conn.lrange(key, start_index, end_index))# 测试方法redisUtils = RedisUtils(db=1, decode_responses=True)
print(redisUtils.conn)# 从右边插入列表数据
redisUtils.list_push('list1', 'r', '张三', '李四', '王五')# 修改指定索引的元素
redisUtils.list_set('list1', 2, '赵云')# 查看列表
redisUtils.list_get('list1', 0, -1)# 删除全部
redisUtils.list_pop('list1', 0, '', 'c')

在这里插入图片描述

– 求知若饥,虚心若愚。

相关文章:

Python 操作Redis

在 Python中我们使用 redis库来操作 Redis数据库。Redis数据库的使用命令这里就不介绍了。 需要安装 redis库。检查是否安装redis&#xff1a; pip redis 如果未安装&#xff0c;使用 pip命令安装 redis。 pip install redis #安装最新版本 一、Redis连接 Redis提供两个类 Re…...

CEC2020:鱼鹰优化算法(Osprey optimization algorithm,OOA)求解CEC2020(提供MATLAB代码

一、鱼鹰优化算法简介 鱼鹰优化算法&#xff08;Osprey optimization algorithm&#xff0c;OOA&#xff09;由Mohammad Dehghani 和 Pavel Trojovsk于2023年提出&#xff0c;其模拟鱼鹰的捕食行为。 鱼鹰是鹰形目、鹗科、鹗属的仅有的一种中型猛禽。雌雄相似。体长51-64厘米…...

词对齐 - MGIZA++

文章目录关于 MGIZAgiza-py安装 MGIZA命令说明mkclsd4normhmmnormplain2sntsnt2coocsnt2coocrmpsnt2plainsymalmgizageneral parameters:No. of iterations:parameter for various heuristics in GIZA for efficient training:parameters for describing the type and amount o…...

GUI 之 Tkinter编程

GUI 图形界面&#xff0c;Tkinter 是 Python 内置的 GUI 库&#xff0c;IDLE 就是 Tkinter 设计的。 1. Tkinter 之初体验 import tkinter as tkroot tk.Tk() # 创建一个窗口root.title(窗口标题)# 添加 label 组件 theLabel tk.Label(root, text文本内容) theLabel.p…...

【软件测试】性能测试面试题都问什么?面试官想要什么?回答惊险避坑......

目录&#xff1a;导读前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09;前言 1、你认为不同角色关…...

后端开发基础能力以及就Java的主流开发框架介绍

前言&#xff1a;java语言开发转后端&#xff0c;必须了解后端主流的一些东西&#xff0c;共勉。 后端开发需要具备以下基础能力&#xff1a; 1.编程语言&#xff1a;熟练掌握至少一门编程语言&#xff0c;如Java、Python、Ruby、PHP、C#等。 2.数据结构和算法&#xff1a;具…...

H2数据库连接时用户密码错误:Wrong user name or password [28000-214] 28000/28000 (Help)

H2数据库连接时用户密码错误: 2023-03-03 08:25:07 database: wrong user or password; user: "SA" org.h2.message.DbException: Wrong user name or password [28000-214]出现的问题配置信息原因解决办法org.h2.message.DbException: Wrong user name or password …...

青岛诺凯达机械盛装亮相2023济南生物发酵展,3月与您相约

BIO CHINA生物发酵展&#xff0c;作为生物发酵产业一年一度行业盛会&#xff0c;由中国生物发酵产业协会主办&#xff0c;上海信世展览服务有限公司承办&#xff0c;2023第10届国际生物发酵展&#xff08;济南&#xff09;于2023年3月30-4月1日在山东国际会展中心&#xff08;济…...

【JAVA程序设计】【C00111】基于SSM的网上图书商城管理系统——有文档

基于SSM的网上图书商城管理系统——有文档项目简介项目获取开发环境项目技术运行截图项目简介 基于ssm框架开发的网上在线图书售卖商城项目&#xff0c;本项目分为三种权限&#xff1a;系统管理员、卖家、买家 管理员角色包含以下功能&#xff1a; 用户信息管理、权限管理、订…...

基于卷积神经网络CNN的三相故障识别

目录 背影 卷积神经网络CNN的原理 卷积神经网络CNN的定义 卷积神经网络CNN的神经元 卷积神经网络CNN的激活函数 卷积神经网络CNN的传递函数 卷积神经网络CNN手写体识别 基本结构 主要参数 MATALB代码 结果图 展望 背影 现在生活&#xff0c;为节能减排&#xff0c;减少电能损…...

Java工厂设计模式详解,大厂的Java抽象工厂模式分享!

我是好程序员-小源&#xff01;本期文章主要给大家分享&#xff1a;Java工厂设计模式。文中使用通俗易懂的案例&#xff0c;使你快速学习和轻松上手&#xff01;一、什么是Java抽象工厂模式1. Java抽象工厂是23种设计模式中创建型模式的一种&#xff0c;Java抽象工厂是由多个工…...

Git 企业级分支提交流程

Git 企业级分支提交流程 首先在本地分支hfdev上进行开发&#xff0c;开发后要经过测试。 如果测试通过了&#xff0c;那么久可以合并到本地分支develop&#xff0c;合并之后hfdev和development应该完全一样。 git add 文件 git commit -m ‘注释’ git checkout develop //切换…...

C/C++每日一练(20230303)

目录 1. 字符串相乘 2. 单词拆分 II 3. 串联所有单词的子串 1. 字符串相乘 给定两个以字符串形式表示的非负整数 num1 和 num2&#xff0c;返回 num1 和 num2 的乘积&#xff0c;它们的乘积也表示为字符串形式。 示例 1: 输入: num1 "2", num2 "3"…...

Python3-条件控制

Python3 条件控制 Python 条件语句是通过一条或多条语句的执行结果&#xff08;True 或者 False&#xff09;来决定执行的代码块。 可以通过下图来简单了解条件语句的执行过程: 代码执行过程&#xff1a; if 语句 Python中if语句的一般形式如下所示&#xff1a; if condi…...

KDZD地埋电缆故障测试仪

一、产品特性 ★电缆故障测试仪&#xff08;闪测仪&#xff09; &#xff08;1&#xff09;使用范围广&#xff1a;用于测量各种不同截面、不同介质的各种电力电缆、高频同轴电缆&#xff0c;市话电缆及两根以上均匀铺设的地埋电线等电缆高低阻、短路、开路、断线以及高阻泄漏…...

爆款升级!新系列南卡Neo最强旗舰杀到,业内首款无线充骨传导耳机!

中国专业骨传导耳机品牌NANK南卡于近日发布了全新南卡Neo骨传导运动耳机&#xff0c;打造一款佩戴最舒适、音质体验最好的骨传导耳机。推出第2代声学響科技技术&#xff0c;提供更优质的开放式骨传导听音体验&#xff0c;透过不一样的音质体验&#xff0c;打造更好的骨传导耳机…...

基于Spring Boot+Thymeleaf的在线投票系统

文章目录 项目介绍主要功能截图:后台登录注册个人信息展示投票数据显示首页展示对战匹配分数排行榜部分代码展示设计总结项目获取方式🍅 作者主页:Java韩立 🍅 简介:Java领域优质创作者🏆、 简历模板、学习资料、面试题库【关注我,都给你】 🍅文末获取源码联系🍅…...

【每日一题Day135】LC1487保证文件名唯一 | 哈希表

保证文件名唯一【LC1487】 给你一个长度为 n 的字符串数组 names 。你将会在文件系统中创建 n 个文件夹&#xff1a;在第 i 分钟&#xff0c;新建名为 names[i] 的文件夹。 由于两个文件 不能 共享相同的文件名&#xff0c;因此如果新建文件夹使用的文件名已经被占用&#xff0…...

计算机系统的基本组成 第一节

一、计算机系统 计算机系统是指&#xff1a;电子数字通用、计算机系统 由硬件和软件两个子系统组成 硬件是保存和运行软件的物质基础 软件是指挥硬件完成预期功能的智力部分 重点&#xff1a; 计算机系统部件 五个 1、数据运算部件&#xff1a;完成对数据的运算处理功能…...

Scrapy爬虫框架入门

Scrapy是Python开发的一个非常流行的网络爬虫框架&#xff0c;可以用来抓取Web站点并从页面中提取结构化的数据&#xff0c;被广泛的用于数据挖掘、数据监测和自动化测试等领域。下图展示了Scrapy的基本架构&#xff0c;其中包含了主要组件和系统的数据处理流程&#xff08;图中…...

深入浅出Asp.Net Core MVC应用开发系列-AspNetCore中的日志记录

ASP.NET Core 是一个跨平台的开源框架&#xff0c;用于在 Windows、macOS 或 Linux 上生成基于云的新式 Web 应用。 ASP.NET Core 中的日志记录 .NET 通过 ILogger API 支持高性能结构化日志记录&#xff0c;以帮助监视应用程序行为和诊断问题。 可以通过配置不同的记录提供程…...

【Oracle APEX开发小技巧12】

有如下需求&#xff1a; 有一个问题反馈页面&#xff0c;要实现在apex页面展示能直观看到反馈时间超过7天未处理的数据&#xff0c;方便管理员及时处理反馈。 我的方法&#xff1a;直接将逻辑写在SQL中&#xff0c;这样可以直接在页面展示 完整代码&#xff1a; SELECTSF.FE…...

【CSS position 属性】static、relative、fixed、absolute 、sticky详细介绍,多层嵌套定位示例

文章目录 ★ position 的五种类型及基本用法 ★ 一、position 属性概述 二、position 的五种类型详解(初学者版) 1. static(默认值) 2. relative(相对定位) 3. absolute(绝对定位) 4. fixed(固定定位) 5. sticky(粘性定位) 三、定位元素的层级关系(z-i…...

[10-3]软件I2C读写MPU6050 江协科技学习笔记(16个知识点)

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16...

Python ROS2【机器人中间件框架】 简介

销量过万TEEIS德国护膝夏天用薄款 优惠券冠生园 百花蜂蜜428g 挤压瓶纯蜂蜜巨奇严选 鞋子除臭剂360ml 多芬身体磨砂膏280g健70%-75%酒精消毒棉片湿巾1418cm 80片/袋3袋大包清洁食品用消毒 优惠券AIMORNY52朵红玫瑰永生香皂花同城配送非鲜花七夕情人节生日礼物送女友 热卖妙洁棉…...

【从零学习JVM|第三篇】类的生命周期(高频面试题)

前言&#xff1a; 在Java编程中&#xff0c;类的生命周期是指类从被加载到内存中开始&#xff0c;到被卸载出内存为止的整个过程。了解类的生命周期对于理解Java程序的运行机制以及性能优化非常重要。本文会深入探寻类的生命周期&#xff0c;让读者对此有深刻印象。 目录 ​…...

MySQL 8.0 事务全面讲解

以下是一个结合两次回答的 MySQL 8.0 事务全面讲解&#xff0c;涵盖了事务的核心概念、操作示例、失败回滚、隔离级别、事务性 DDL 和 XA 事务等内容&#xff0c;并修正了查看隔离级别的命令。 MySQL 8.0 事务全面讲解 一、事务的核心概念&#xff08;ACID&#xff09; 事务是…...

手机平板能效生态设计指令EU 2023/1670标准解读

手机平板能效生态设计指令EU 2023/1670标准解读 以下是针对欧盟《手机和平板电脑生态设计法规》(EU) 2023/1670 的核心解读&#xff0c;综合法规核心要求、最新修正及企业合规要点&#xff1a; 一、法规背景与目标 生效与强制时间 发布于2023年8月31日&#xff08;OJ公报&…...

comfyui 工作流中 图生视频 如何增加视频的长度到5秒

comfyUI 工作流怎么可以生成更长的视频。除了硬件显存要求之外还有别的方法吗&#xff1f; 在ComfyUI中实现图生视频并延长到5秒&#xff0c;需要结合多个扩展和技巧。以下是完整解决方案&#xff1a; 核心工作流配置&#xff08;24fps下5秒120帧&#xff09; #mermaid-svg-yP…...

Linux安全加固:从攻防视角构建系统免疫

Linux安全加固:从攻防视角构建系统免疫 构建坚不可摧的数字堡垒 引言:攻防对抗的新纪元 在日益复杂的网络威胁环境中,Linux系统安全已从被动防御转向主动免疫。2023年全球网络安全报告显示,高级持续性威胁(APT)攻击同比增长65%,平均入侵停留时间缩短至48小时。本章将从…...