首页 > 数据库 >Day 21 21.2 数据库之Python操作redis

Day 21 21.2 数据库之Python操作redis

时间:2023-04-02 20:34:49浏览次数:33  
标签:21 21.2 Python redis scores print 操作 meng name

Python操作redis

(1)连接redis

# 方式1
import redis

r = redis.Redis(host='127.0.0.1', port=6379)
r.set('foo', 'Bar')
print(r.get('foo'))


# 方式2
import redis

pool = redis.ConnectionPool(host='127.0.0.1', port=6379)
r = redis.Redis(connection_pool=pool)
r.set('bar', 'Foo')
print(r.get('bar'))
  • 通常情况下, 当我们需要做redis操作时, 会创建一个连接, 并基于这个连接进行redis操作, 操作完成后, 释放连接,一般情况下, 这是没问题的, 但当并发量比较高的时候, 频繁的连接创建和释放对性能会有较高的影响。
  • 于是, 连接池就发挥作用了。
    • 连接池的原理是, 通过预先创建多个连接, 当进行redis操作时, 直接获取已经创建的连接进行操作, 而且操作完成后, 不会释放, 用于后续的其他redis操作。
    • 这样就达到了避免频繁的redis连接创建和释放的目的, 从而提高性能。

(2)数据类型操作

import redis

pool = redis.ConnectionPool(host='127.0.0.1', port=6379, db=0, decode_responses=True)
r = redis.Redis(connection_pool=pool)
# 一 : 字符串操作
# (1)字符串操作:不允许对已经存在的键设置值
ret = r.setnx("name", "dream")
print(ret)
# (2)字符串操作:设置键有效期
r.setex("good_1001", 10, "2")
# (3)字符串操作:自增自减
r.set("age", 20)
r.incrby("age", 2)
print(r.get("age"))  # b'22'
# 二 : hash操作

r.hset("info", "name", "meng")
print(r.hget("info", "name"))  # b'meng'
r.hset("info", mapping={"gender": "male", "age": 22})
print(r.hgetall("info"))  # {b'name': b'rain', b'gender': b'male', b'age': b'22'}

# 三 : list操作
r.rpush("scores", "100", "90", "80")
r.rpush("scores", "70")
r.lpush("scores", "120")
print(r.lrange("scores", 0, -1))  # ['120', '100', '90', '80', '70']
r.linsert("scores", "AFTER", "100", 95)
print(r.lrange("scores", 0, -1))  # ['120', '100', '95', '90', '80', '70']
print(r.lpop("scores"))  # 120
print(r.rpop("scores"))  # 70
print(r.lindex("scores", 1))  # '95'

# 四 : 集合操作
# key对应的集合中添加元素
r.sadd("name_set", "zhangsan", "lisi", "wangwu")
# 获取key对应的集合的所有成员
print(r.smembers("name_set"))  # {'lisi', 'zhangsan', 'wangwu'}
# 从key对应的集合中随机获取 numbers 个元素
print(r.srandmember("name_set", 2))
r.srem("name_set", "lisi")
print(r.smembers("name_set"))  # {'wangwu', 'zhangsan'}

# 五 :有序集合操作
# 在key对应的有序集合中添加元素
r.zadd("jifenbang", {"dream": 78, "meng": 20, "alen": 89, "fox": 45})
# 按照索引范围获取key对应的有序集合的元素
print(r.zrange("jifenbang", 0, -1))  # ['dream', 'meng', 'alen', 'fox']
print(
    r.zrange("jifenbang", 0, -1, withscores=True))  # [('meng', 20.0), ('fox', 45.0), ('dream', 78.0), ('alen', 89.0)]
print(r.zrevrange("jifenbang", 0, -1,
                  withscores=True))  # [('alen', 89.0), ('dream', 78.0), ('fox', 45.0), ('meng', 20.0)]

print(r.zrangebyscore("jifenbang", 0, 100))  # ['meng', 'fox', 'dream', 'alen']
print(r.zrangebyscore("jifenbang", 0, 100, start=0, num=2))  # ['meng', 'fox']
# 删除key对应的有序集合中值是values的成员
print(r.zrem("jifenbang", "dream"))  # 删除成功返回1
print(r.zrange("jifenbang", 0, -1))  # ['meng', 'fox', 'alen']

# 六 :键值对操作
r.delete("scores")
print(r.exists("scores"))
print(r.keys("*"))
r.expire("name", 10)

标签:21,21.2,Python,redis,scores,print,操作,meng,name
From: https://www.cnblogs.com/dream-ze/p/17281212.html

相关文章

  • Day 21 21.3 数据库之MongoDB
    MongoDB一般爬虫使用的数据库,是根据项目来定的。如需求方指定了使用什么数据库、如果没指定,那么决定权就在爬虫程序员手里,如果自选的话,mysql和mongodb用的都是比较多的。但不同的数据库品种有各自的优缺点,不同的场景任何一种数据库都可以用来存储,但是某种可能会更好。......
  • 在Android应用中通过Chaquopy使用Python
    在Android应用中通过Chaquopy使用Python[译]通过Python脚本和包为Android应用带来更多的功能翻译自https://proandroiddev.com/chaquopy-using-python-in-android-apps-dd5177c9ab6b欢迎通过我的Blog访问此文章.Python在开发者社区中时最受欢迎的语言之一,因为其简单,健......
  • Day 21 21.4 数据库之Python操作MongoDB
    PyMongo在这里我们来看一下Python3下MongoDB的存储操作,在本节开始之前请确保你已经安装好了MongoDB并启动了其服务,另外安装好了Python的PyMongo库。安装:pipinstallpymongo添加文档importpymongoclient=pymongo.MongoClient(host='localhost',port=27017)"""......
  • 【Pandas数据处理100例目录】Python数据分析玩转Excel表格数据
    前言大家好,我是阿光。本专栏整理了《Pandas数据分析处理》,内包含了各种常见的数据处理,以及Pandas内置函数的使用方法,帮助我们快速便捷的处理表格数据。正在更新中~✨......
  • Python | 解决方案 | 多个文件共用logger,重复打印问题
    项目中封装了logging库为log.py,实现既把日志输出到控制台,又写入日志文件文件。环境:python3.7.3项目中,多个文件共用logger,出现重复打印问题,解决流程记录如下:文件和调用方式如下:log.pyv1#encoding=utf-8####@Description:日志封装文件#@Author:fatih#@Dat......
  • 【Python】Flask-SQLAlchemy PyCharm无法自动补全解决方案
    ✨Flask-Sqlalchemy无法自动补全解决方案PyCharm版本:PyCharm2021.3.3(ProfessionalEdition)flask版本:2.2.3flask-sqlalchemy版本:3.0.3SQLAlchemy版本:2.0.4在使用flask-sqlalchemy中db.Column,primary_key等无法自动补全降低flask-sqlalchemy版本即可解决pipinstallf......
  • python接口自动化pytest+yaml+allure
    简介分层common公共层data数据层test层+main文件其中pytest框架使用pytest.ini全局配置和conftest.py夹具test层下载对于的安装包编写对于的用例实现参数化编写对于的fixture和pytest全局配置常用pytest执行方法main方法:pytest.main(['-vs','-n2'])console:py......
  • Python 多线程死循环挂服务器时CPU占用过高问题
    我的某个程序里有这样一段代码,把程序挂在服务器爬取信息,因此用到死循环,同时又需要进行三个任务,于是使用了多线程。刚开始在死循环部分并没有加time.sleep(60),于是它一直在for循环,同时会进行.is_alive()(不确定这个消耗大不大),但总之这使得CPU占用过高。而加上sleep之后,直接就降下......
  • Python 文件与路径操作
    路径表示绝对路径:绝对路径是指从盘符开始的文件全路径,一般表现为“/”。如“C:/Users/TheUser/Desktop/temp.txt”(Windows)、“/Users/TheUser/Desktop/temp.txt”(Windows)、“/home/TheUser/temp.txt”(Linux)。相对路径:相对路径是指从本文件开始算起的文件路径,总体长......
  • python系列教程208——为什么使用lambda
    声明:在人工智能技术教学期间,不少学生向我提一些python相关的问题,所以为了让同学们掌握更多扩展知识更好地理解AI技术,我让助理负责分享这套python系列教程,希望能帮到大家!由于这套python教程不是由我所写,所以不如我的AI技术教学风趣幽默,学起来比较枯燥;但它的知识点还是讲到位的了,也值......