iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python怎么操作redis数据库
  • 809
分享到

python怎么操作redis数据库

2023-06-30 05:06:56 809人浏览 安东尼

Python 官方文档:入门教程 => 点击学习

摘要

今天小编给大家分享一下python怎么操作redis数据库的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、安装Redis

今天小编给大家分享一下python怎么操作redis数据库的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

一、安装

  • Redis 是一个 Key-Value 数据库

  • Value 支持 string(字符串),list(列表),set(集合),zset(有序集合),hash(哈希类型)等类型

pip install redis

二、连接

import redis# 方式一r = redis.StrictRedis(host='localhost', port=6379, db=0)# 方式二r = redis.Redis(host='localhost', port=6379, decode_responses=True)# 方式三,连接池pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)r = redis.Redis(host='localhost', port=6379, decode_responses=True)

三、string基本命令

import redisr = redis.Redis(host='localhost', port=6379, decode_responses=True)# 设置值并设置过期时间, ex单位: 秒r.set('food', 'mutton', ex=3)# 获取值r.get('food')# 设置值并设置过期时间, px单位: 毫秒r.set('food', 'beef', px=3)# nx=True时,则只有name不存在时,当前set操作才执行r.set('fruit', 'watermelon', nx=True)# xx=True时,则只有name存在时,当前set操作才执行r.set('fruit', 'watermelon', xx=True)# setnx设置值,只有name不存在时,执行设置操作r.setnx('fruit1', 'banana')# setex第一个参数是key,第二个是过期时间(秒),第三个是值r.setex("fruit2", 5, "orange")# psetex第一个参数是key,第二个是过期时间(毫秒),第三个是值r.psetex("fruit3", 5000, "apple")# 批量设置值 mset(*args, **kwargs)r.mset(k1="v1", k2="v2")# 批量获取r.mget('k1', 'k2')r.mget(['k1', 'k2'])# 设置新值并获取原来的值r.getset("food", "barbecue")# 获取子序列(根据字节获取,非字符)r.getrange("cn_name", 0, 2)r.getrange("en_name", 0, -1)# 修改字符串内容,从指定字符串索引开始向后替换(新值太长时,则向后添加)r.setrange("en_name", 1, "ccc")# 对 name 对应值的二进制表示的位进行操作r.setbit(name, offset, value)# 获取name对应的值的二进制表示中的某位的值,0或1r.getbit("foo1", 0)# 获取name对应的值的二进制表示中 1 的个数r.bitcount("foo",0,1)# 获取多个值,并将值做位运算,将最后的结果保存至新的name对应的值r.bitop("AND","new","foo","foo1")# 返回name对应值的字节长度(一个汉字3个字节)r.strlen("foo")# 自增 name 对应的值,当 name 不存在时,则创建 name=amount,否则,则自增。r.incr("foo", amount=1)# 自增 name对应的值,当name不存在时,则创建name=amount,否则,则自增。r.incrbyfloat("foo1", amount=2.0)# 自减 name 对应的值,当 name 不存在时,则创建 name=amount,否则,则自减。r.decr("foo4", amount=3)# 在redis name对应的值后面追加内容r.append("name", "haha")

四、hash基本命令

import redisr = redis.Redis(host='localhost', port=6379, decode_responses=True)# name对应的hash中设置一个键值对(不存在,则创建;否则,修改)r.hset("hash2", "k1", "v1")# 在name对应的hash中批量设置键值对r.hmset("hash3", {"k2": "v2", "k3": "v3"})# 在name对应的hash中获取根据key获取valuer.hmget("hash3", "k2", "k3")r.hmget("hash3", ["k2", "k3"])# 取出所有的键值对r.hgetall("hash2")# 得到所有键值对的格式 hash长度r.hlen("hash2")# 得到所有的keys(类似字典的取所有keys)r.hkeys("hash2")# 得到所有的value(类似字典的取所有value)r.hvals("hash2")# 判断成员是否存在(类似字典的in)r.hexists("hash2", "k4")# 删除键值对r.hdel("hash2", "k1")# 自增自减整数r.hincrby("hash2", "k3", amount=-1)# 自增自减浮点数r.hincrbyfloat("hash2", "k5", amount=-1.0)# 取值查看--分片读取r.hscan("hash2")# 利用yield封装hscan创建生成器,实现分批去redis中获取数据for item in r.hscan_iter('hash2'):print(item)print(r.hscan_iter("hash2"))

五、list基本命令

import redisr = redis.Redis(host='localhost', port=6379, decode_responses=True)# 增加 (从左边新增加)--没有就新建r.lpush("list1", 11, 22, 33)# 增加(从右边增加)--没有就新建r.rpush("list2", 11, 22, 33)# 在name对应的list中添加元素,只有name已经存在时,值添加到列表的最左边r.lpushx("list10", 10)# 往已经有的name的列表的右边添加元素,没有的话无法创建r.rpushx("list2", 99)# 在name对应的列表的某一个值前或后插入一个新值r.linsert("list2", "before", "11", "00")# 修改(指定索引号进行修改)r.lset("list2", 0, -11)# 删除(指定值进行删除)r.lrem("list2", "11", 1)# 删除并返回r.lpop("list2") # 删除列表最左边的元素,并且返回删除的元素r.rpop("list2") # 删除列表最右边的元素,并且返回删除的元素# 删除索引之外的值r.ltrim("list2", 0, 2)# 根据索引号取值r.lindex("list2", 0)# 移动 元素从一个列表移动到另外一个列表r.rpoplpush("list1", "list2")# 移动 元素从一个列表移动到另外一个列表 可以设置超时r.brpoplpush("list1", "list2", timeout=2)# 一次移除多个列表r.blpop(["list10", "list11"], timeout=2)# 自定义增量迭代def list_iter(name):"""自定义redis列表增量迭代:param name: redis中的name,即:迭代name对应的列表:return: yield 返回 列表元素"""list_count = r.llen(name)for index in range(list_count):yield r.lindex(name, index)

六、set基本命令

import redisr = redis.Redis(host='localhost', port=6379, decode_responses=True)# 新增r.sadd("set1", 33, 44, 55, 66)# 获取元素个数 类似于lenr.scard("set1")# 获取集合中所有的成员r.smembers("set1")# 获取集合中所有的成员--元组形式r.sscan("set1")# 获取集合中所有的成员--迭代器的方式for i in r.sscan_iter("set1"):print(i)# 差集r.sdiff("set1", "set2")# 差集--差集存在一个新的集合中r.sdiffstore("set3", "set1", "set2")# 交集r.sinter("set1", "set2")# 交集--交集存在一个新的集合中r.sinterstore("set3", "set1", "set2")# 并集r.suNIOn("set1", "set2")# 并集--并集存在一个新的集合r.sunionstore("set3", "set1", "set2")# 判断是否是集合的成员 类似inr.sismember("set1", 33)# 移动 将某个成员从一个集合中移动到另外一个集合r.smove("set1", "set2", 44)# 删除--随机删除并且返回被删除值r.spop("set2")# 删除--指定值删除r.srem("set2", 11)

七、zset基本命令

import redisr = redis.Redis(host='localhost', port=6379, decode_responses=True)# 新增r.zadd("zset2", 'm1', 22, 'm2', 44)# 获取有序集合元素个数 类似于lenr.zcard("zset1")# 获取有序集合的所有元素r.zrevrange("zset1", 0, -1)# 获取所有元素--迭代器for i in r.zscan_iter("zset3"): # 遍历迭代器print(i)# 获取name对应的有序集合中分数 在 [min,max] 之间的个数r.zcount("zset3", 11, 22)# 自增r.zincrby("zset3", "n2", amount=2)# 获取值的索引号r.zrank("zset3", "n1")# 删除--指定值删除r.zrem("zset3", "n3")# 删除--根据排行范围删除,按照索引号来删除r.zremrangebyrank("zset3", 0, 1)# 删除--根据分数范围删除r.zremrangebyscore("zset3", 11, 22)# 获取值对应的分数r.zscore("zset3", "n27")

八、其他通用命令

import redisr = redis.Redis(host='localhost', port=6379, decode_responses=True)# 删除 根据删除redis中的任意数据类型r.delete("gender")# 检查名字是否存在r.exists("zset1")# 模糊匹配 根据模型获取redis的namer.keys("foo*")# 设置超时时间r.expire("list5", time=3)# 重命名r.rename("list5", "list5-1")# 随机获取namer.randomkey()# 获取类型r.type("set1")# 查询所有的Keyr.keys()# 当前redis包含多少条数据r.dbsize()# 清空r中的所有数据r.flushdb()

九、管道命令

  • redis默认在执行每次请求都会创建(连接池申请连接)和断开(归还连接池)一次连接操作

  • 如果想要在一次请求中指定多个命令,则可以使用pipline实现一次请求指定多个命令

  • 并且默认情况下一次pipline 是原子性操作

  • 管道(pipeline)是redis在提供单个请求中缓冲多条服务器命令的基类的子类

  • 它通过减少服务器-客户端之间反复的tcp数据库包

  • 从而大大提高了执行批量命令的功能

import redisr = redis.Redis(host='localhost', port=6379, decode_responses=True)# 默认的情况下,管道里执行的命令可以保证执行的原子性# 默认 pipe = r.pipeline(transaction=True)# 禁止 pipe = r.pipeline(transaction=False)# 创建一个管道pipe = r.pipeline()pipe.set('name', 'jack')pipe.set('role', 'sb')pipe.sadd('faz', 'baz')pipe.incr('num')pipe.execute()# 或者写成 pipe.set('hello', 'redis').sadd('faz', 'baz').incr('num').execute()print(r.get("name"))print(r.get("role"))print(r.get("num"))

以上就是“Python怎么操作redis数据库”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注编程网Python频道。

--结束END--

本文标题: python怎么操作redis数据库

本文链接: https://www.lsjlt.com/news/327515.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • python怎么操作redis数据库
    今天小编给大家分享一下python怎么操作redis数据库的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。一、安装redis ...
    99+
    2023-06-30
  • Python操作redis数据库
    前言:这两天的事情不多,为了避免之前学习的一点点Python知识遗忘,我在Github上找了一些小项目跟着实践。之前的工作有写过相关的Python处理redis处理数据的脚本,但之前没有养成记录积累的习惯,所以~~~~(遗忘了),所以趁此...
    99+
    2023-01-31
    操作 数据库 Python
  • 怎么使用Python操作Redis数据库
    本篇内容主要讲解“怎么使用Python操作Redis数据库”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Python操作Redis数据库”吧!介绍Redis是一个开源的基于内存也可持久化...
    99+
    2023-07-02
  • 使用python怎么批量操作redis数据库
    使用python怎么批量操作redis数据库?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。方法一:使用 pipeline  使用pipelining ...
    99+
    2023-06-08
  • python 实现 redis 数据库的操作
    目录一、安装二、连接三、string基本命令四、hash基本命令五、list基本命令六、set基本命令七、zset基本命令八、其他通用命令九、管道命令一、安装 redis 是一个 K...
    99+
    2022-11-10
  • Python如何操作Redis缓存数据库
    本篇内容主要讲解“Python如何操作Redis缓存数据库”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Python如何操作Redis缓存数据库”吧!今天我们来学习如何使用Python操作Red...
    99+
    2023-06-02
  • python怎么操作pymysql数据库
    本篇内容主要讲解“python怎么操作pymysql数据库”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“python怎么操作pymysql数据库”吧!一、安装pip install&n...
    99+
    2023-06-30
  • Python怎么操作MongoDB数据库
    这篇文章主要介绍“Python怎么操作MongoDB数据库”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“Python怎么操作MongoDB数据库”文章能帮助大家解决问题。一、连接器的安装和配置pym...
    99+
    2023-07-05
  • IDEA版怎么使用Java操作Redis数据库
    本篇内容主要讲解“IDEA版怎么使用Java操作Redis数据库”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“IDEA版怎么使用Java操作Redis数据库”吧!首先 下载 jedis.jar包...
    99+
    2023-06-20
  • Python操作Redis数据库的超详细教程
    目录介绍常用数据结构安装连接String 字符串(键值对)List 列表Hash 哈希Set 集合Zset 有序集合Bitmap 位图全局函数总结介绍 Redis是一个开源的基于内存也可持久化的Key-Value数据库,...
    99+
    2022-06-23
    python操作redis数据库 python实现redis python读取redis
  • Python中怎么操作MongoDB数据库
    这期内容当中小编将会给大家带来有关Python中怎么操作MongoDB数据库,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、连接服务器连接服务器需要提供一个地址和接口import pymong...
    99+
    2023-06-15
  • 使用PHP操作Redis数据库
    Redis是一款基于内存的高性能键值对数据库,可以被用于缓存、队列等多种场景。而PHP是一种开发语言,可以用于Web开发、后端服务等多种场景。如果我们能够将PHP和Redis结合使用,可以达到更优秀的性能和效果。本文将介绍如何使用PHP操作...
    99+
    2023-05-16
    PHP redis 数据库操作
  • python操作数据库
     游标  在stored Routines调用中开的一个缓冲区,用于存放SQL调用的结果集。(结果集是只读的)   意味着我们的查询可以返回一个文档也可以返回一个游标去指向一个结果集,而后通过游标的切换而获取每个结果   Python连接...
    99+
    2023-01-31
    操作 数据库 python
  • Python中怎么操作Redis
    Python中怎么操作Redis,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。一、字符串 stringsPython操作Redis的redis模块对字符串(string)的...
    99+
    2023-06-16
  • 怎么在Python中操作MySQL数据库
    今天就跟大家聊聊有关怎么在Python中操作MySQL数据库,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。python主要应用领域有哪些1、云计算,典型应用OpenStack。2、W...
    99+
    2023-06-14
  • 使用Python怎么操作MySQL数据库
    本篇文章给大家分享的是有关使用Python怎么操作MySQL数据库,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。MySQL 建表建表的时候,遇到一些坑,没有解决,如修改 MyS...
    99+
    2023-06-14
  • 怎么用python包操作mongodb数据库
    本文小编为大家详细介绍“怎么用python包操作mongodb数据库”,内容详细,步骤清晰,细节处理妥当,希望这篇“怎么用python包操作mongodb数据库”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。一、安...
    99+
    2023-06-30
  • Redis数据操作
    点击中⽂官⽹查看命令⽂档http://redis.cn/commands.htmlRedis命令操作:http://doc.redisfans.com/数据结构redis是key-value的数据结构,每条...
    99+
    2022-10-18
  • spring使用RedisTemplate操作Redis数据库
    一.什么是Redis Redis是一个非关系型数据库,具有很高的存取性能,一般用作缓存数据库,减少正常存储数据库的压力。 Redis可以存储键与5种不同数据结构类型之间的映射,这5种...
    99+
    2022-11-11
  • Python中是怎么操作MySQL数据库的
    这篇文章将为大家详细讲解有关Python中是怎么操作MySQL数据库,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。什么是MySQLdbMySQLdb 是用于Python链接Mysql数据库的...
    99+
    2023-06-06
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作