> 데이터 베이스 > Redis > Python에서 Redis를 사용하는 방법에 대한 간략한 분석

Python에서 Redis를 사용하는 방법에 대한 간략한 분석

青灯夜游
풀어 주다: 2021-11-22 19:22:54
앞으로
2696명이 탐색했습니다.

Python에서 Redis를 어떻게 사용하나요? 다음 글에서는 Python에서 Redis를 사용하는 방법을 소개하겠습니다. 도움이 되길 바랍니다.

Python에서 Redis를 사용하는 방법에 대한 간략한 분석

이전에는 Redis를 사용하기 위해 Redis 클라이언트를 사용했지만, 실제 작업에서는 대부분 코드Redis를 통해 사용하는데, 편집자는 Python에 익숙하므로 오늘은 Python을 사용하여 Redis를 작동하는 방법을 알아 보겠습니다. [관련 권장사항: Redis 동영상 튜토리얼]Redis 客户端对 Redis 进行使用的,但是实际工作中,我们大多数情况下都是通过代码来使用 Redis 的,由于小编对 Python 比较熟悉,所以我们今天就一起来学习下如何使用 Python 来操作 Redis。【相关推荐:Redis视频教程

环境准备

  • Redis 首先需要安装好。
  • Python 安装好(建议使用 Python3)。
  • RedisPython 库安装好(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')))
로그인 후 복사

Python에서 Redis를 사용하는 방법에 대한 간략한 분석

Python에서 Redis를 사용하는 방법에 대한 간략한 분석

其中的 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')))
로그인 후 복사

Python에서 Redis를 사용하는 방법에 대한 간략한 분석

你会发现,在实际使用中直连和使用连接池的效果是一样的,只是在高并发的时候会有明显的区别。

基操实践

对于众多的 Redis 命令,我们在此以 SET 命令为例进行展示。

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

在 redis-py 中 set 命令的参数:

예: 우리의 계획 Python을 통해 Redis에 연결하세요. 그런 다음 kv를 작성하고 마지막으로 쿼리된 v를 인쇄합니다.

직접 연결

#!/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')))
로그인 후 복사
로그인 후 복사
Python에서 Redis를 사용하는 방법에 대한 간략한 분석
参数名释义
ex<int>过期时间(m)
px<int>过期时间(ms)
nx<bool>如果为真,则只有 name 不存在时,当前 set 操作才执行
xx<bool>

환경 준비

  • Redis를 먼저 설치해야 합니다.
  • Python이 설치되어 있습니다(Python3 권장).
  • RedisPython 라이브러리가 설치되었습니다(pip install redis).

연습 시작

시도해 보기

🎜Python에서 Redis를 사용하는 방법에 대한 간략한 분석🎜
🎜get은 연결 풀에서 실행되는 마지막 명령입니다. 🎜

연결 풀

🎜일반적으로 redis에 연결해야 할 때 연결이 생성되고 이를 기반으로 합니다. 연결< code>redis 작업이 완료되면 해제하세요. 일반적인 상황에서는 문제가 되지 않지만, 동시성 양이 높을 경우 연결 생성 및 해제를 자주 수행하면 성능에 큰 영향을 미치므로 연결 풀이 작동하게 됩니다. 🎜🎜연결 풀의 원칙: 미리 여러 ​​개의 연결을 생성하세요. redis 작업을 수행할 때 이미 생성된 연결을 직접 가져와서 작업하세요. 완료 후에는 연결이 해제되지 않지만 후속 redis 작업을 위해 연결 풀로 반환됩니다! 이렇게 하면 지속적인 생성 및 릴리스가 방지되어 성능이 향상됩니다! 🎜
#!/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;)))
로그인 후 복사
로그인 후 복사
🎜Python에서 Redis를 사용하는 방법에 대한 간략한 분석🎜< blockquote>🎜실제 사용에서는 직접 연결의 효과와 연결 풀의 사용 효과는 동일하지만 높은 동시성에서는 분명한 차이가 있음을 알 수 있습니다. 🎜

기본 작업 연습

🎜많은 Redis 명령의 경우 여기서는 SET을 사용합니다. 명령 예시로 표시됩니다. 🎜🎜형식: redis-py 매개변수의 set(name, value, ex=None, px=None, nx=False, xx=False)🎜🎜 설정 명령: 🎜🎜< tr > < td>xx🎜
매개변수 이름해석
ex🎜<int>만료 시간(분)🎜🎜
px🎜<int> 만료 시간(ms)🎜🎜
nx🎜<bool>true이면 현재 설정 작업은 이름이 존재하지 않는 경우에만 실행됩니다🎜🎜
<bool>true이면 현재 설정 작업은 이름이 존재할 때만 실행됩니다🎜🎜🎜🎜

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;)))
로그인 후 복사
로그인 후 복사

Python에서 Redis를 사용하는 방법에 대한 간략한 분석

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;)))
로그인 후 복사
로그인 후 복사

Python에서 Redis를 사용하는 방법에 대한 간략한 분석

如上,你会发现 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;)))
로그인 후 복사

Python에서 Redis를 사용하는 방법에 대한 간략한 분석

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

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

위 내용은 Python에서 Redis를 사용하는 방법에 대한 간략한 분석의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
원천:juejin.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿