本文主要讲解“如何在Python中使用Redis”。感兴趣的朋友不妨看看。本文介绍的方法简单、快速、实用。让边肖带你学习“如何在Python中使用Redis”!
前面我们用了Redis客户端来使用Redis,但是在实际工作中,我们大多是通过代码来使用Redis。因为边肖对Python比较熟悉,今天就让我们学习一下如何使用Python来操作Redis。
环境准备
需要先安装Redis。
安装了Python(建议使用Python3)。
安装了redis的Python库(pip安装Redis)。
00-1010
开始实践
示例:我们计划通过Python连接到Redis。然后写一个kv,最后打印出查询到的v。
小试牛刀
#!/usr/bin/python3
Importredis#导入redis模块
R=redis.redis (host=' localhost ',port=6379,password=' PWD @ 321 ',decode _ responses=true) # host为redis主机,password为身份验证密码,redis默认端口为6379。
R.set ('name ',' phyger-from-python-redis') # key为' name'value为' phyger-from-python-redis '将键值对存储在redis缓存中。
Print(r['name'])#第一个:取出键名对应的值。
Print(r.get('name'))# Second:取出键名对应的值。
打印(键入(r . get(' name ')))
Get of是连接池执行的最后一个命令。
00-1010正常情况下,当需要连接到redis时,会创建一个连接,并基于这个连接执行redis操作,完成后释放操作。正常情况下,这是没有问题的,但是在高并发的情况下,频繁的连接创建和释放会对性能产生很大的影响,所以连接池会发挥作用。
连接池原理:预先创建多个连接,在进行redis操作时,直接获取创建的连接进行操作。完成后,这个连接不会被释放,而是会返回到连接池中进行后续的redis操作!这避免了持续的创建和发布,从而提高了性能!
#!/usr/bin/python3
Importredis,time#导入redis模块,通过在python中操作redis,还可以直接在redis主机的服务器上操作缓存数据库。
池=
redis.ConnectionPool(host='localhost', port=6379, password="pwd@321", decode_responses=True) # host是redis主机,需要redis服务端和客户端都起着 redis默认端口是6379
r = redis.Redis(connection_pool=pool)
r.set('name', 'phyger-from-python-redis')
print(r['name'])
print(r.get('name')) # 取出键name对应的值
print(type(r.get('name')))
你会发现,在实际使用中直连和使用连接池的效果是一样的,只是在高并发的时候会有明显的区别。
基操实践
对于众多的 Redis
命令,我们在此以 SET
命令为例进行展示。
格式: set(name, value, ex=None, px=None, nx=False, xx=False)
在 redis-py 中 set 命令的参数:
参数名 | 释义 |
---|---|
ex | <int> 过期时间(m) |
px | <int> 过期时间(ms) |
nx | <bool> 如果为真,则只有 name 不存在时,当前 set 操作才执行 |
xx | <bool> 如果为真,则只有 name 存在时,当前 set 操作才执行 |
ex
我们计划创建一个 kv
并且设置其 ex
为 3
,期待 3
秒后此 k
的 v
会变为 None
。
#!/usr/bin/python3 import redis,time # 导入redis模块,通过python操作redis 也可以直接在redis主机的服务端操作缓存数据库 pool = redis.ConnectionPool(host='localhost', port=6379, password="pwd@321", decode_responses=True) # host是redis主机,需要redis服务端和客户端都起着 redis默认端口是6379 r = redis.Redis(connection_pool=pool) r.set('name', 'phyger-from-python-redis',ex=3) print(r['name']) # 应当有v time.sleep(3) print(r.get('name')) # 应当无v print(type(r.get('name')))
nx
由于 px 的单位太短,我们就不做演示,效果和 ex 相同。
我们计划去重复 set
前面已经 set
过的 name
,不出意外的话,在 nx
为真时,我们将会 set
失败。但是人如果 set
不存在的 name1
,则会成功。
#!/usr/bin/python3 import redis,time # 导入redis模块,通过python操作redis 也可以直接在redis主机的服务端操作缓存数据库 pool = redis.ConnectionPool(host='localhost', port=6379, password="pwd@321", decode_responses=True) # host是redis主机,需要redis服务端和客户端都起着 redis默认端口是6379 r = redis.Redis(connection_pool=pool) r.set('name', 'phyger-0',nx=3) # set失败 print(r['name']) # 应当不生效 r.set('name1', 'phyger-1',nx=3) # set成功 print(r.get('name1')) # 应当生效 print(type(r.get('name')))
如上,你会发现
name
的set
未生效,因为name
已经存在于数据库中。而name1
的set
已经生效,因为name1
是之前在数据库中不存在的。
xx
我们计划去重复 set
前面已经 set
过的 name
,不出意外的话,在 nx
为真时,我们将会 set
成功。但是人如果 set
不存在的 name2
,则会失败。
#!/usr/bin/python3 import redis,time # 导入redis模块,通过python操作redis 也可以直接在redis主机的服务端操作缓存数据库 pool = redis.ConnectionPool(host='localhost', port=6379, password="pwd@321", decode_responses=True) # host是redis主机,需要redis服务端和客户端都起着 redis默认端口是6379 r = redis.Redis(connection_pool=pool) r.set('name', 'phyger-0',xx=3) # set失败 print(r['name']) # 应当变了 r.set('name2', 'phyger-1',xx=3) # set成功 print(r.get('name2')) # 应当没有set成功 print(type(r.get('name')))
到此,相信大家对“Python中如何用Redis”有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/121641.html