Home > Database > Redis > A brief analysis of how to use Redis in Python

A brief analysis of how to use Redis in Python

青灯夜游
Release: 2021-11-22 19:22:54
forward
2671 people have browsed it

How to use Redis in Python? The following article will introduce to you how to use Redis in Python. I hope it will be helpful to you!

A brief analysis of how to use Redis in Python

Previously we used Redis client to use Redis, but in actual work, in most cases The following are all using Redis through code. Since the editor is familiar with Python, we will learn how to use Python today. ##Redis. [Related recommendations: Redis video tutorial]

Environment preparation

  • Redis First you need to install it.
  • Python is installed (Python3 is recommended). The Python
  • library of
  • Redis is installed (pip install redis).
Start practicing

Try it out

Example: We plan to connect to

Redis through Python. Then write a kv, and finally print out the queried v.

Direct connection

#!/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')))
Copy after login

A brief analysis of how to use Redis in Python

A brief analysis of how to use Redis in Python

##get

is the last one in the connection pool command to execute.

Connection pool

Normally, when you need to connect to

redis

, a connection will be created, and redis operations will be performed based on this connection. Release after the operation is completed. Under normal circumstances, this is no problem, but when the amount of concurrency is high, frequent connection creation and release will have a high impact on performance, so the connection pool comes into play. The principle of connection pool: Create multiple connections in advance. When performing

redis

operations, directly obtain the already created connections for operation. After completion, the connection will not be released, but returned to the connection pool for subsequent redis operations! This avoids continuous creation and release, thus improving performance! <div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:js;toolbar:false;">#!/usr/bin/python3 import redis,time # 导入redis模块,通过python操作redis 也可以直接在redis主机的服务端操作缓存数据库 pool = redis.ConnectionPool(host=&amp;#39;localhost&amp;#39;, port=6379, password=&quot;pwd@321&quot;, decode_responses=True) # host是redis主机,需要redis服务端和客户端都起着 redis默认端口是6379 r = redis.Redis(connection_pool=pool) r.set(&amp;#39;name&amp;#39;, &amp;#39;phyger-from-python-redis&amp;#39;) print(r[&amp;#39;name&amp;#39;]) print(r.get(&amp;#39;name&amp;#39;)) # 取出键name对应的值 print(type(r.get(&amp;#39;name&amp;#39;)))</pre><div class="contentsignin">Copy after login</div></div>

A brief analysis of how to use Redis in Python

You will find that in actual use, the effect of direct connection and using connection pool is the same, but there will be an obvious difference when concurrency is high. .

Basic Operation Practice

For the many

Redis

commands, we take the SET command as an example to demonstrate.

Format:

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

Parameters of the set command in redis-py:

Parameter nameexpxnxxxIf true, the current set operation will only be executed when name exists implement

ex

我们计划创建一个 kv 并且设置其 ex3,期待 3 秒后此 kv 会变为 None

#!/usr/bin/python3

import redis,time   # 导入redis模块,通过python操作redis 也可以直接在redis主机的服务端操作缓存数据库

pool = redis.ConnectionPool(host=&#39;localhost&#39;, port=6379, password="pwd@321", decode_responses=True)   # host是redis主机,需要redis服务端和客户端都起着 redis默认端口是6379
r = redis.Redis(connection_pool=pool)
r.set(&#39;name&#39;, &#39;phyger-from-python-redis&#39;,ex=3)
print(r[&#39;name&#39;])    # 应当有v
time.sleep(3)
print(r.get(&#39;name&#39;))  # 应当无v
print(type(r.get(&#39;name&#39;)))
Copy after login

A brief analysis of how to use Redis in Python

nx

由于 px 的单位太短,我们就不做演示,效果和 ex 相同。

我们计划去重复 set 前面已经 set 过的 name,不出意外的话,在 nx 为真时,我们将会 set 失败。但是人如果 set 不存在的 name1,则会成功。

#!/usr/bin/python3

import redis,time   # 导入redis模块,通过python操作redis 也可以直接在redis主机的服务端操作缓存数据库

pool = redis.ConnectionPool(host=&#39;localhost&#39;, port=6379, password="pwd@321", decode_responses=True)   # host是redis主机,需要redis服务端和客户端都起着 redis默认端口是6379
r = redis.Redis(connection_pool=pool)
r.set(&#39;name&#39;, &#39;phyger-0&#39;,nx=3) # set失败
print(r[&#39;name&#39;])    # 应当不生效
r.set(&#39;name1&#39;, &#39;phyger-1&#39;,nx=3) # set成功
print(r.get(&#39;name1&#39;))  # 应当生效
print(type(r.get(&#39;name&#39;)))
Copy after login

A brief analysis of how to use Redis in Python

如上,你会发现 nameset 未生效,因为 name 已经存在于数据库中。而 name1set 已经生效,因为 name1 是之前在数据库中不存在的。

xx

我们计划去重复 set 前面已经 set 过的 name,不出意外的话,在 nx 为真时,我们将会 set 成功。但是人如果 set 不存在的 name2,则会失败。

#!/usr/bin/python3

import redis,time   # 导入redis模块,通过python操作redis 也可以直接在redis主机的服务端操作缓存数据库

pool = redis.ConnectionPool(host=&#39;localhost&#39;, port=6379, password="pwd@321", decode_responses=True)   # host是redis主机,需要redis服务端和客户端都起着 redis默认端口是6379
r = redis.Redis(connection_pool=pool)
r.set(&#39;name&#39;, &#39;phyger-0&#39;,xx=3) # set失败
print(r[&#39;name&#39;])    # 应当变了
r.set(&#39;name2&#39;, &#39;phyger-1&#39;,xx=3) # set成功
print(r.get(&#39;name2&#39;))  # 应当没有set成功
print(type(r.get(&#39;name&#39;)))
Copy after login

A brief analysis of how to use Redis in Python

以上,就是今天全部的内容,更多信息建议参考 redis 官方文档。

更多编程相关知识,请访问:编程视频!!

The above is the detailed content of A brief analysis of how to use Redis in Python. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
source:juejin.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template
Interpretation
Expiration time (m)
Expiration time (ms)
If true, only name does not exist
##