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,否则,则自增:

参数:

  1. name - Redis的name
  2. 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中的某一个索引位置重新赋值:

Python redis 使用教程相关推荐

  1. python菜鸟工具-终于清楚python菜鸟入门教程

    Python是一款功能强大的脚本语言,具有丰富和强大的库,重要的是,它还具有很强的可读性,易用易学,非常适合编程初学者入门.以下是小编为你整理的python菜鸟入门教程 环境配置:下载Python并安 ...

  2. Redis数据库教程——系统详解学习Redis全过程

    Redis数据库教程--系统详解学习Redis全过程 Redis快速入门:Key-Value存储系统简介 Key-Value存储系统:     Key-Value Store是当下比较流行的话题,尤其 ...

  3. 字字谏言!Python入门学习教程:关于Python不得不说的事儿

    作为程序员,你肯定遇到过这样的领导: "别人还没走,你先走了不合适吧." "不能确定功劳,总得有苦劳吧!你看别人9点谁走了?" 说到996,这很有可能是诱因之一 ...

  4. Redis系列教程(一):Redis缓存的设计、性能、应用与数据集群同步

    Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库.Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中进行 ...

  5. python anaconda安装redis_Linux下安装python,redis

    Linux下安装python,redis linux 安装Python3 1.python下载 请在终端输入如下命令: cd /home wget ```http://cdn.npm.taobao.o ...

  6. Redis教程(一) Redis入门教程

    Redis教程(一) Redis入门教程 1 Redis入门教程 Redis是一个 Key-Value存储系统.和 Memcached类似,它支持存储的 value类型相对更多,包括 string(字 ...

  7. 视频教程- 19年录制Redis实战教程 高可用秒杀分布式锁布隆过滤器实战 SpringBoot教程整合-Java

    19年录制Redis实战教程 高可用秒杀分布式锁布隆过滤器实战 SpringBoot教程整合 7年的开发架构经验,曾就职于国内一线互联网公司,开发工程师,现在是某创业公司技术负责人, 擅长语言有nod ...

  8. 视频教程-Redis进阶教程—基础篇-NoSQL

    Redis进阶教程-基础篇 雅座Java架构师,架构开发公司百万级订单支付平台 叶向阳 ¥49.00 立即订阅 扫码下载「CSDN程序员学院APP」,1000+技术好课免费看 APP订阅课程,领取优惠 ...

  9. Python培训基础教程都教哪些

    根据相关数据统计,目前学习Python技术的同学大多数是零基础,都是从其他行业转型来学习的,那么Python培训基础教程都教哪些呢?好不好学呢?来看看下面的详细介绍. Python培训基础教程都教哪些 ...

最新文章

  1. [VC++入门]指针一
  2. Centos下Yum安装PHP5.5,5.6
  3. 2013年新疆中小学教师计算机水平考试机试题(复习版),2013年新疆中小学教师计算机水平考试笔试题(复习版8套含答案)...
  4. Java 求分段函数g(x)的值
  5. wpf(c#)中获取ComboBox选项值
  6. ConcurrentHashMap 内部实现分析
  7. 【树莓派】可能是最简单粗暴的树莓派搭建个人网站教程
  8. Python的oop概述
  9. java timer 线程安全_多线程之 线程安全与控制
  10. Linux集群服务 LVS
  11. python下sqlite增删查改方法(转)
  12. oracle包同义词报错,Oracle——04同义词与数据库链接
  13. 三维点云学习(3)2- K-Means
  14. 计算机图形学核心期刊,CCF 推荐国际国内会议及中文核心期刊要目总览
  15. Android15_ListView分页
  16. mysql报1205错误
  17. redis持久化机制,深入分析redisAOF和RDB模式的利弊
  18. 树莓派设置屏幕待机时间
  19. 微信php开发包,TP5专用微信sdk使用教程
  20. 磁盘盘符隐藏并访问隐藏磁盘的文件数据

热门文章

  1. 区块链产物 的安全是否真的无懈可击!
  2. 运维告诉我CPU飙升300%,为什么我的程序上线就奔溃了
  3. 在深夜加油站遇见哈利波特
  4. 3D模型欣赏:清纯美丽小姐姐
  5. 史上最大界面升级!微软 Windows 10 21H2!
  6. ProcDump+Mimikatz绕过杀毒软件抓密码
  7. 第二章(1) SCADA/EMS系统的概述
  8. 对象的序列化存储:Serializable 和 Parceable
  9. what is VC维
  10. 使用的tk集成mybatis,报No MyBatis mapper was found in的警告解决方案