Python redis模块的使用教程指南

目录
  • 1.安装模块
  • 2.连接池
  • 3.redis 基本命令 String
  • 4.redis 基本命令 hash
  • 5.redis基本命令 list
  • 6.redis基本命令 set
  • 7.其他常用操作
  • 8.管道

1.安装模块

Python 要使用 redis,需要先安装 redis 模块:

pip install redis

测试安装:

redis 取出的结果默认是字节,我们可以设定 decode_responses=True 改成字符串

r = redis.Redis(host='localhost', port=6379, decode_responses=True)
r.set('name', 'dahezhiquan')  # 设置 name 对应的值
print(r['name'])  # dahezhiquan
print(r.get('name'))  # dahezhiquan
print(type(r.get('name')))  # <class 'str'>

2.连接池

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

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

redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r = redis.Redis(host='localhost', port=6379, decode_responses=True)
r.set('name', 'dahe')
print(r.get('name'))  # dahe

3.redis 基本命令 String

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

语法:

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

参数:

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

案例1:(3秒后,name的值就会变为None)

redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r = redis.Redis(host='localhost', port=6379, decode_responses=True)
r.set('name', 'xiaoqian', ex=3)  # 设置过期时间为3秒
print(r.get('name'))  # xiaoqian

三秒后再次获取name的值:

print(r.get('name'))  # None

mset,批量获取值:

redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r = redis.Redis(host='localhost', port=6379, decode_responses=True)
r.set("name1", "xiaoqian")
r.set("name2", "xiaoguo")
print(r.mget('name1', 'name2'))  # ['xiaoqian', 'xiaoguo']

getset(name, value),设置新值并获取原来的值:

redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r = redis.Redis(host='localhost', port=6379, decode_responses=True)
print(r.getset("name1", "heihei"))  # xiaoqian
print(r.get("name1"))  # heihei

strlen(name),返回name对应值的字节长度(一个汉字3个字节):

print(r.strlen("name"))

incr(name, amount=1),自增 name 对应的值,当 name 不存在时,则创建 name=amount,否则,则自增:

参数:

  • name - Redis的name
  • amount - 自增数(必须是整数)
redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r = redis.Redis(host='localhost', port=6379, decode_responses=True)
r.set("like", 521)
r.incr("like", amount=1)
print(r.get("like"))  # 522

可以使用incrbyfloat方法自增浮点数类型

使用decr进行自减操作

append(key, value),在redis name对应的值后面追加内容:

参数:

  • key - redis的name
  • value - 要追加的字符串
r.append("name1", "world")
print(r.get("name1"))

4.redis 基本命令 hash

hset(name, key, value),单个增加–修改:

name对应的hash中设置一个键值对(不存在,则创建;否则,修改)

参数:

  • name - redis的name
  • key - name对应的hash中的key
  • value - name对应的hash中的value
redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r = redis.Redis(host='localhost', port=6379, decode_responses=True)
r.hset("dahe", "name", "guo")
r.hset("dahe", "age", 28)
# 获取dahe的所有key
print(r.hkeys("dahe"))  # ['name', 'age']
print(r.hget("dahe", "name"))  # guo
print(r.hmget("dahe", "name", "age"))  # ['guo', '28']

hmset(name, mapping),在name对应的hash中批量设置键值对:

redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r = redis.Redis(host='localhost', port=6379, decode_responses=True)
r.hmset("hash1", {"k1": "v1", "k2": "v2", "k3": "v3"})
print(r.hmget("hash1", "k1", "k2", "k3"))  # ['v1', 'v2', 'v3']

hgetall(name),取出所有的键值对:

print(r.hgetall("dahe"))  # {'name': 'guo', 'age': '28'}

hvals(name),得到所有的value:

print(r.hvals("dahe"))  # ['guo', '28']

hdel(name,*keys),将name对应的hash中指定key的键值对删除:

r.hdel("hash1", "k1")
print(r.hgetall("hash1"))  # {'k2': 'v2', 'k3': 'v3'}

hincrby(name, key, amount=1),自增自减整数:

参数:

name - redis中的name

key - hash对应的key

amount - 自增数(整数,负数表示自减)

hincrbyfloat(name, key, amount=1.0)表示自增自减浮点数

5.redis基本命令 list

lpush(name,values),增加:

在name对应的list中添加元素,每个新的元素都添加到列表的最左边

redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r = redis.Redis(host='localhost', port=6379, decode_responses=True)
r.lpush("score", 10, 20, 30, 40)
print(r.lrange("score", 0, -1))  # ['40', '30', '20', '10']

rpush表示从右边增加

r.lset(name, index, value),对name对应的list中的某一个索引位置重新赋值:

参数:

  • name - redis的name
  • index - list的索引位置
  • value - 要设置的值
redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r = redis.Redis(host='localhost', port=6379, decode_responses=True)
r.lset("score", 0, 521)
print(r.lrange("score", 0, 4))  # ['521', '30', '20', '10', '40']

r.lrem(name, value, num),删除:

参数:

name - redis的name

value - 要删除的值

num - num=0,删除列表中所有的指定值;

  • num=2 - 从前到后,删除2个, num=1,从前到后,删除左边第1个
  • num=-2 - 从后向前,删除2个
r.lrem("list2", "11", 1)    # 将列表中左边第一次出现的"11"删除
print(r.lrange("list2", 0, -1))
r.lrem("list2", "99", -1)    # 将列表中右边第一次出现的"99"删除
print(r.lrange("list2", 0, -1))
r.lrem("list2", "22", 0)    # 将列表中所有的"22"删除
print(r.lrange("list2", 0, -1))

lindex(name, index),取值:

print(r.lindex("list2", 0))  # 取出索引号是0的值

自定义增量迭代:

由于redis类库中没有提供对列表元素的增量迭代,如果想要循环name对应的列表的所有元素,那么就需要获取name对应的所有列表。

但是,如果列表非常大,那么就有可能在第一步时就将程序的内容撑爆,所有有必要自定义一个增量迭代的功能:

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)

# 使用
for item in list_iter('list2'): # 遍历这个列表
    print(item)

6.redis基本命令 set

sadd(name,values),新增:

pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r = redis.Redis(connection_pool=pool)
r.sadd("set1", 33, 44, 55, 66)  # 往集合中添加元素
print(r.scard("set1"))  # 4(集合长度)
print(r.smembers("set1"))  # {'66', '44', '55', '33'}(取出集合所有元素)

srem(name, values),在name对应的集合中删除某些值:

r.srem("set1", 66)
print(r.smembers("set1"))  # {'44', '33', '55'}

python-redis set支持集合的所有操作,请参考官方文档

7.其他常用操作

delete(*names),删除:

根据删除redis中的任意数据类型(string、hash、list、set、有序set)

pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r = redis.Redis(connection_pool=pool)
r.delete("set2")

expire(name ,time),为某个redis的某个name设置超时时间:

r.expire("set1", time=3)

rename(src, dst),重命名:

r.rename("dahe", "dahe-1")

8.管道

redis默认在执行每次请求都会创建(连接池申请连接)和断开(归还连接池)一次连接操作,如果想要在一次请求中指定多个命令,则可以使用pipline实现一次请求指定多个命令,并且默认情况下一次pipline是原子性操作

实例:

pool = redis.ConnectionPool(host='localhost', port=6379, decode_responses=True)
r = redis.Redis(connection_pool=pool)
pipe = r.pipeline()  # 创建一个管道
pipe.set('name', 'jack')
pipe.set('role', 'sb')
pipe.sadd('age', '18')
pipe.execute()

以上就是Python redis模块的使用教程指南的详细内容,更多关于Python redis模块的资料请关注我们其它相关文章!

(0)

相关推荐

  • Python模块对Redis数据库的连接与使用讲解

    下面看看Python模块对Redis数据库的连接与使用: ​ 1.Python连接Redis数据库方法: import redis res = redis.Redis( host="127.0.0.1", port=6379, db=0, password="XXXXXX", decode_responses=True ) res.set("name","Li") print(res.get("name")

  • Python调用Redis的示例代码

    #!/usr/bin/env python # -*- coding:utf-8 -*- # ************************************* # @Time : 2019/8/12 # @Author : Zhang Fan # @Desc : Library # @File : MyRedis.py # @Update : 2019/8/23 # ************************************* import redis class MyR

  • python使用redis模块来跟redis实现交互

    目录 redis模块的使用 1.安装模块 2.导入模块 4.连接池 5.操作 管道 事务 订阅\发布 redis模块的使用 1.安装模块 pip3 install redis 2.导入模块 import redis 3.连接方式 严格连接模式:r=redis.StrictRedis(host=“”,port=) 更Python化的连接模式:r=redis.Redis(host=“”,port=) StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令 Redis与StrictRe

  • Python redis模块的使用教程指南

    目录 1.安装模块 2.连接池 3.redis 基本命令 String 4.redis 基本命令 hash 5.redis基本命令 list 6.redis基本命令 set 7.其他常用操作 8.管道 1.安装模块 Python 要使用 redis,需要先安装 redis 模块: pip install redis 测试安装: redis 取出的结果默认是字节,我们可以设定 decode_responses=True 改成字符串 r = redis.Redis(host='localhost',

  • Pycharm导入Python包,模块的图文教程

    1.点击File->settings 2.选择Project Interpreter,点击右边绿色的加号添加包 3.输入你想添加的包名,点击Install Package 4.可以在Pycharm保存项目的目录下查看已经安装的包,路径D:\PycharmProjects\untitled\venv\Lib\site-packages 以上这篇Pycharm导入Python包,模块的图文教程就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持我们.

  • Python Selenium模块安装使用教程详解

    一.概述: Selenium是一个用于Web应用程序测试的工具,本文使用的是Selenium 2.Selenium就是一套类库,不依赖于任何测试框架,除了必要的浏览器驱动,不需要启动其他进程或安装其他程序,也不必像 Selenium 1那样需要先启动服务. 1 支持浏览器 Firefox (FirefoxDriver) IE(InternetExplorerDriver) Opera(OperaDriver) Chrome (ChromeDriver) safari(SafariDriver)

  • Python Gluon参数和模块命名操作教程

    本文实例讲述了Python Gluon参数和模块命名操作.分享给大家供大家参考,具体如下: Gluon参数和模块命名教程 在gluon里,每个参数和块都有一个名字(和前缀).参数名可以由用户指定,block名也可以由用户指定,也可以自动创建. 本教程中,我们将讨论命名方面的最佳实践.首先,import MXNet和Gluon from __future__ import print_function import mxnet as mx from mxnet import gluon Block

  • python redis存入字典序列化存储教程

    在python中通过redis hset存储字典时,必须主动把字典通过json.dumps()序列化为字符串后再存储, 不然hget获取后将无法通过json.loads()反序列化为字典 序列化存储 r = redis_conn() r.hset('wait_task', 'one', json.dumps({'project': 'india', 'total_size': '15.8 MB'})) r.hset('wait_task', 'two', json.dumps({'project

  • python math模块的基本使用教程

    what's the math 模块 Python math 模块提供了许多对浮点数的数学运算函数.需要注意的是,这些函数一般是对平台 C 库中同名函数的简单封装, 所以一般情况下, 不同平台下计算的结果可能稍微地有所不同, 有时候甚至有很大出入. 主要功能有: 幂数:幂次方.平方根 对数:2.10.e相关的对数操作 圆相关:π.弧度与角度的转换 三角函数:正三角函数.反三角函数 其他常用:小数的整数部分.向上取整.向下取整.两个数的最大公约数.取余数... 幂数 幂与平方根 # pow(x,

  • python threading模块的使用指南

    1. threding模块创建线程对象 接上述案例,我们可以利用程序阻塞的时间让程序执行后面的任务,可以用多线程的方式去实现.对应的需要我们借助threading模块去实现: 如下所示 import time import threading def work(): """只有函数对象才能佈田名线积""" print('5.洗茶杯: 1min ' ) time.sleep(1) print('6.放茶叶: 1min ' ) time.sleep(

  • Python中itertools模块的使用教程详解

    目录 itertools模块的介绍 无限迭代器(Infinite Iterators) 组合迭代器(Combinatoric Iterators) 有限迭代器(Iterators Terminating on the Shortest Input Sequence) itertools模块的介绍 在Python中,迭代器(Iterator)是常用来做惰性序列的对象,只有当迭代到某个值的时候,才会进行计算得出这个值.因此,迭代器可以用来存储无限大的序列,这样我们就不用把他一次性放在内存中,而只在需

  • Python pyecharts模块安装与入门教程

    目录 pyecharts产生背景 一.pyecharts模块安装 二.pyecharts入门 1.基础折线图 2.pyecharts配置选项 pyecharts产生背景 Echarts是由百度开源的数据可视化,凭借良好的交互性和精巧的图表设计,得到众多开发者的认可,而python很适合用于数据处理,数据分析遇到数据可视化时pyecharts就产生了. 官网链接:https://pyecharts.org/#/ 画廊pyecharts-gallery pyecharts支持的图表众多,官方提供了画

随机推荐