Wie verwende ich Redis in Python? Der folgende Artikel wird Ihnen die Verwendung von Redis in Python vorstellen. Ich hoffe, er wird Ihnen hilfreich sein!
Zuvor haben wir den Redis
-Client verwendet, um Redis
zu verwenden, aber in der tatsächlichen Arbeit verwenden wir ihn in den meisten Fällen über CodeRedis. Da der Editor mit Python
vertraut ist, werden wir heute lernen, wie man Python
verwendet, um Redis code> zu bedienen. [Verwandte Empfehlungen: <a href="http://www.php.cn/course/list/54.html" target="_blank">Redis-Video-Tutorial</a>]<code>Redis
客户端对 Redis
进行使用的,但是实际工作中,我们大多数情况下都是通过代码来使用 Redis
的,由于小编对 Python
比较熟悉,所以我们今天就一起来学习下如何使用 Python
来操作 Redis
。【相关推荐:Redis视频教程】
Redis
首先需要安装好。Python
安装好(建议使用 Python3
)。Redis
的 Python
库安装好(pip install redis
)。例:我们计划通过 Python
连接到 Redis
。然后写入一个 kv
,最后将查询到的 v
打印出来。
#!/usr/bin/python3 import redis # 导入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']) # 第一种:取出键name对应的值 print(r.get('name')) # 第二种:取出键name对应的值 print(type(r.get('name')))
其中的
get
为连接池最后一个执行的命令。
通常情况下,需要连接 redis
时,会创建一个连接,基于这个连接进行 redis
操作,操作完成后去释放。正常情况下,这是没有问题的,但是并发量较高的情况下,频繁的连接创建和释放对性能会有较高的影响,于是连接池发挥作用。
连接池的原理:预先创建多个连接,当进行 redis
操作时,直接获取已经创建好的连接进行操作。完成后,不会释放这个连接,而是让其返回连接池,用于后续 redis
操作!这样避免连续创建和释放,从而提高了性能!
#!/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') 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></int> 过期时间(m) |
px |
<int></int> 过期时间(ms) |
nx |
<bool></bool> 如果为真,则只有 name 不存在时,当前 set 操作才执行 |
xx |
<bool></bool> Umgebungsvorbereitung
Übung beginnenProbieren Sie es aus | Beispiel: Unser Plan Stellen Sie über
🎜Der get
ist der letzte Befehl, der vom Verbindungspool ausgeführt wird. 🎜
redis
herstellen müssen Verbindungredis-Vorgang, geben Sie ihn frei, nachdem der Vorgang abgeschlossen ist. Unter normalen Umständen ist dies kein Problem, aber wenn die Parallelität hoch ist, hat das häufige Erstellen und Freigeben von Verbindungen einen großen Einfluss auf die Leistung, sodass der Verbindungspool ins Spiel kommt. 🎜🎜Das Prinzip des Verbindungspools: Erstellen Sie im Voraus mehrere Verbindungen, wenn Sie einen redis
-Vorgang ausführen. Rufen Sie direkt die bereits erstellten Verbindungen für den Betrieb ab. Nach Abschluss wird die Verbindung nicht freigegeben, sondern für nachfolgende redis
-Vorgänge an den Verbindungspool zurückgegeben! Dies vermeidet eine kontinuierliche Erstellung und Veröffentlichung und verbessert so die Leistung! 🎜#!/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')))🎜🎜🎜Sie werden feststellen, dass bei der tatsächlichen Verwendung die Auswirkungen einer direkten Verbindung und der Verwendung eines Verbindungspools gleich sind, es jedoch offensichtliche Unterschiede bei der hohen Parallelität gibt. 🎜
Redis
-Befehle verwenden wir hier SET
Der Befehl wird als Beispiel gezeigt. 🎜🎜Format: set(name, value, ex=None, px=None, nx=False, xx=False)
🎜🎜in redis-py-Parametern des Set-Befehls: 🎜Parametername | Interpretation | 🎜ex🎜 |
<int></int> Ablaufzeit (m)🎜🎜 |
---|---|
px🎜 |
<int></int> Ablaufzeit (ms)🎜🎜 |
nx🎜 |
<bool></bool> Wenn true, wird der aktuelle Set-Vorgang nur ausgeführt, wenn der Name nicht existiert🎜🎜 |
xx🎜 |
<bool></bool> Wenn true, wird die aktuelle Set-Operation nur ausgeführt, wenn der Name vorhanden ist🎜🎜🎜🎜ex我们计划创建一个 #!/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 相同。 我们计划去重复 #!/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')))
xx我们计划去重复 #!/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')))
更多编程相关知识,请访问:编程视频!! |
Das obige ist der detaillierte Inhalt vonEine kurze Analyse der Verwendung von Redis in Python. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!