사용 방법을 자세히 설명합니다. 🎜> 1, 설치
pip install redis
2, 기본 사용
사용:
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r['test'] = 'test' #또는 r.set( 'test', 'test') setkey
r.get('test') # test 값 가져오기
r.delete('test') #삭제이 키
r.flushdb() #데이터베이스 지우기
r.keys() # 모든 키 나열
r.exists('test') # 이 키가 존재하는지 확인
r.dbsize( ) # 데이터베이스의 항목 수
>>> import redis >>> pool = redis.ConnectionPool(host='localhost', port=6379, db=0) >>> r = redis.StrictRedis(connection_pool = pool) >>> r.set('foo', 'bar') True >>> r.get('foo') 'bar'
3.API참조
Redis 공식 문서에서는 각 명령에 대해 자세히 설명합니다(http:/ /www.php.cn/). redis-py는 이러한 명령을 구현하는 두 개의 클라이언트 클래스를 제공합니다. StrictRedis 클래스는 공식 명령 구문을 따르려고 시도하지만 몇 가지 예외가 있습니다.
·SELECT: 구현되지 않았습니다. 아래 "스레드안전" 섹션의 설명을 참조하세요.
·DEL: 'del'은 Python 구문의 예약어입니다. 따라서 redis-py는 대신 "delete"를 사용합니다.
·CONFIG GET|SET: 각각 config_get 및 config_set을 사용하여 구현됩니다.
·MULTI/EXEC: Pipeline 클래스의 일부로 구현됩니다. 파이프라인 메서드 호출 시 use_transaction=True를 지정하면 파이프라인 실행 시 MULTI 및 EXEC를 사용하여 파이프라인 작업을 캡슐화합니다. 아래 파이프라인 섹션을 참조하세요.
·SUBSCRIBE/LISTEN: 파이프라인과 유사하게 PubSub도 상태를 유지하기 위해 하위 연결이 필요하므로 별도의 클래스로 구현됩니다. Redis 클라이언트의 pubsub 메서드를 호출하면 채널을 구독하거나 메시지를 들을 수 있는 PubSub 인스턴스가 반환됩니다. 두 클래스(StrictRedis 및 PubSub 클래스) 모두 메시지를 게시(PUBLISH)할 수 있습니다.
위 변경 사항 외에도 StrictRedis의 하위 클래스인 Redis는 이전 버전의 redis-py와의 호환성을 제공합니다.
·LREM: 매개변수 'num' 및 'value의 순서 '를 교환하여 'num'이 기본값 0을 제공할 수 있도록 했습니다.
·ZADD: 구현 중 실수로 점수와 값의 순서가 뒤바뀌었고 나중에 누군가가 이를 사용했고 그게 전부입니다
·SETEX : 시간과 값은 역순입니다
참고: Redis를 사용하지 않는 것이 가장 좋습니다. 이 클래스는 호환성을 위해서만 사용됩니다
4. 자세한 설명
4.1 Connection Pool
redis-py는 백그라운드에서 연결 풀(ConnectionPool)을 사용하여 Redis 서버에 대한 연결을 관리합니다. 기본적으로 각 Redis 인스턴스는 자체 연결 풀을 생성합니다. 생성된 연결 풀을 Redis 클래스의 Connection_pool 매개변수에 전달할 수도 있습니다. 이렇게 하면 클라이언트 측 샤딩을 달성하거나 연결 관리를 정확하게 제어할 수 있습니다.
>>> pool = redis.ConnectionPool(host='localhost', port=6379, db=0) >>> r = redis.StrictRedis(connection_pool=pool)
4.2 连接
ConnectionPool 管理一组 Connection 实例。redis-py 提供两种类型的 Connection。缺省情况下,Connection 是一个普通的 TCP 连接。 UnixDomainSocketConnection 允许和服务器运行在同一个设备上的客户端通过 unix 套接字进行连接。要使用 UnixDomainSocketConnection 连接, 只需要通过unix_socket_path 参数传递一个 unix 套接字文件的字符串。另外,确保redis.conf 文件配置了unixsocket 参数(缺省情况下是注释掉的):
>>> r = redis.StrictRedis(unix_socket_path='/tmp/redis.sock')
也可以自己创建 Connection 子类。这个特性可以在使用异步框架时用于控制 socket 的行为。要使用自己的Connection 初始化客户端类,需要创建一个连接池,通 connection_class 参数把自己的类传递进去。传递的其它关键字参数会在初始化时传递给自定义的类:
>>> pool = redis.ConnectionPool(connection_class=YourConnectionClass, your_arg='...', ...)
4.3 分析器
分析类提供了控制如何对 Redis 服务器的响应进行分析的途径。redis-py 提供了两个分析类, PythonParser和 HiredisParser。缺省情况下,如果安装了 hiredis 模块, redis-py 会尝试使用 HiredisParser,否则使用 PythonParser。
Hiredis 是由 Redis 核心团队维护的 C 库。 Pieter Noordhuis 创建了 Python 的实现。分析 Redis 服务器的响应时,Hiredis 可以提供 10 倍的速度提升。性能提升在获取大量数据时优为明显,比如 LRANGE 和SMEMBERS 操作。
和 redis-py 一样,Hiredis 在 Pypi 中就有,可以通过 pip 或 easy_install 安装:
$ pip install hiredis
或:
$ easy_install hiredis
4.4 响应回调函数
客户端类使用一系列回调函数来把 Redis 响应转换成合适的 Python 类型。有些回调函数在 Redis 客户端类的字典 RESPONSE_CALLBACKS 中定义。
通过 set_response_callback 方法可以把自定义的回调函数添加到单个实例。这个方法接受两个参数:一个命令名和一个回调函数。通过这种方法添加的回调函数只对添加到的对象有效。要想全局定义或重载一个回调函数,应该创建 Redis 客户端的子类并把回调函数添加到类的 RESPONSE_CALLBACKS(原文误为REDIS_CALLBACKS) 中。
响应回调函数至少有一个参数:Redis 服务器的响应。要进一步控制如何解释响应,也可以使用关键字参数。这些关键字参数在对 execute_command 的命令调用时指定。通过 “withscores” 参数,ZRANGE 演示了回调函数如何使用关键字参数。
4.5 线程安全
Redis 客户端实例可以安全地在线程间共享。从内部实现来说,只有在命令执行时才获取连接实例,完成后直接返回连接池,命令永不修改客户端实例的状态。
但是,有一点需要注意:SELECT 命令。SELECT 命令允许切换当前连接使用的数据库。新的数据库保持被选中状态,直到选中另一个数据库或连接关闭。这会导致在返回连接池时,连接可能指定了别的数据库。
因此,redis-py 没有在客户端实例中实现 SELECT 命令。如果要在同一个应用中使用多个 Redis 数据库,应该给第一个数据库创建独立的客户端实例(可能也需要独立的连接池)。
在线程间传递 PubSub 和 Pipeline 对象是不安全的。
4.6 Pipeline
Pipeline 是 StrictRedis 类的子类,支持在一个请求里发送缓冲的多个命令。通过减少客户端和服务器之间往来的数据包,可以大大提高命令组的性能。
Pipeline 的使用非常简单:
>>> r = redis.Redis(...) >>> r.set('bing', 'baz') >>> # Use the pipeline() method to create a pipeline instance >>> pipe = r.pipeline() >>> # The following SET commands are buffered >>> pipe.set('foo', 'bar') >>> pipe.get('bing') >>> # the EXECUTE call sends all bufferred commands to the server, returning >>> # a list of responses, one for each command. >>> pipe.execute() [True, 'baz']
>>> pipe.set('foo', 'bar').sadd('faz', 'baz').incr('auto_number').execute() [True, True, 6]
另外,pipeline 也可以保证缓冲的命令组做为一个原子操作。缺省就是这种模式。要使用命令缓冲,但禁止pipeline 的原子操作属性,可以关掉 transaction:
>>> pipe = r.pipeline(transaction=False)
一个常见的问题是:在进行原子事务操作前需要从 Redis 中获取事务中要用的数据。比如,假设 INCR 命令不存在,但我们需要用 Python 创建一个原子版本的 INCR。
一个不成熟的实现是获取值(GET),在 Python 中增一, 设置(SET)新值。但是,这不是原子操作,因为多个客户端可能在同一时间做这件事,每一个都通过 GET 获取同一个值。
WATCH 命令提供了在开始事务前监视一个或多个键的能力。如果这些键中的任何一个在执行事务前发生改变,整个事务就会被取消并抛出 WatchError 异常。要实现我们的客户 INCR 命令,可以按下面的方法操作:
>>> with r.pipeline() as pipe: ... while 1: ... try: ... # 对序列号的键进行 WATCH ... pipe.watch('OUR-SEQUENCE-KEY') ... # WATCH 执行后,pipeline 被设置成立即执行模式直到我们通知它 ... # 重新开始缓冲命令。 ... # 这就允许我们获取序列号的值 ... current_value = pipe.get('OUR-SEQUENCE-KEY') ... next_value = unicode(int(current_value) + 1) ... # 现在我们可以用 MULTI 命令把 pipeline 设置成缓冲模式 ... pipe.multi() ... pipe.set('OUR-SEQUENCE-KEY', next_value) ... # 最后,执行 pipeline (set 命令) ... pipe.execute() ... # 如果执行时没有抛出 WatchError,我们刚才所做的确实“原子地” ... # 完成了 ... break ... except WatchError: ... # 一定是其它客户端在我们开始 WATCH 和执行 pipeline 之间修改了 ... # 'OUR-SEQUENCE-KEY',我们最好的选择是重试 ... continue
注意,因为在整个 WATCH 过程中,Pipeline 必须绑定到一个连接,必须调用 reset() 方法确保连接返回连接池。如果 Pipeline 用作 Context Manager(如上面的例子所示), reset() 会自动调用。当然,也可以用手动的方式明确调用 reset():
>>> pipe = r.pipeline() >>> while 1: ... try: ... pipe.watch('OUR-SEQUENCE-KEY') ... current_value = pipe.get('OUR-SEQUENCE-KEY') ... next_value = unicode(int(current_value) + 1) ... pipe.multi() ... pipe.set('OUR-SEQUENCE-KEY', next_value) ... pipe.execute() ... break ... except WatchError: ... continue ... finally: ... pipe.reset()
·WATCH 执行后,pipeline 被设置成立即执行模式
·用 MULTI 命令把 pipeline 设置成缓冲模式
·要么使用 with,要么显式调用 reset()
有一个简便的名为“transaction”的方法来处理这种处理和在 WatchError 重试的模式。它的参数是一个可执行对象和要 WATCH 任意个数的键,其中可执行对象接受一个 pipeline 对象做为参数。上面的客户端 INCR 命令可以重写如下(更可读):
>>> def client_side_incr(pipe): ... current_value = pipe.get('OUR-SEQUENCE-KEY') ... next_value = unicode(int(current_value) + 1) ... pipe.multi() ... pipe.set('OUR-SEQUENCE-KEY', next_value) >>> >>> r.transaction(client_side_incr, 'OUR-SEQUENCE-KEY')
위 내용은 Python Redis 사용법에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

제한된 시간에 Python 학습 효율을 극대화하려면 Python의 DateTime, Time 및 Schedule 모듈을 사용할 수 있습니다. 1. DateTime 모듈은 학습 시간을 기록하고 계획하는 데 사용됩니다. 2. 시간 모듈은 학습과 휴식 시간을 설정하는 데 도움이됩니다. 3. 일정 모듈은 주간 학습 작업을 자동으로 배열합니다.

Python은 게임 및 GUI 개발에서 탁월합니다. 1) 게임 개발은 Pygame을 사용하여 드로잉, 오디오 및 기타 기능을 제공하며 2D 게임을 만드는 데 적합합니다. 2) GUI 개발은 Tkinter 또는 PYQT를 선택할 수 있습니다. Tkinter는 간단하고 사용하기 쉽고 PYQT는 풍부한 기능을 가지고 있으며 전문 개발에 적합합니다.

Python은 데이터 과학, 웹 개발 및 자동화 작업에 적합한 반면 C는 시스템 프로그래밍, 게임 개발 및 임베디드 시스템에 적합합니다. Python은 단순성과 강력한 생태계로 유명하며 C는 고성능 및 기본 제어 기능으로 유명합니다.

2 시간 이내에 Python의 기본 프로그래밍 개념과 기술을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우기, 2. 마스터 제어 흐름 (조건부 명세서 및 루프), 3. 기능의 정의 및 사용을 이해하십시오. 4. 간단한 예제 및 코드 스 니펫을 통해 Python 프로그래밍을 신속하게 시작하십시오.

Python은 웹 개발, 데이터 과학, 기계 학습, 자동화 및 스크립팅 분야에서 널리 사용됩니다. 1) 웹 개발에서 Django 및 Flask 프레임 워크는 개발 프로세스를 단순화합니다. 2) 데이터 과학 및 기계 학습 분야에서 Numpy, Pandas, Scikit-Learn 및 Tensorflow 라이브러리는 강력한 지원을 제공합니다. 3) 자동화 및 스크립팅 측면에서 Python은 자동화 된 테스트 및 시스템 관리와 같은 작업에 적합합니다.

2 시간 이내에 파이썬의 기본 사항을 배울 수 있습니다. 1. 변수 및 데이터 유형을 배우십시오. 이를 통해 간단한 파이썬 프로그램 작성을 시작하는 데 도움이됩니다.

10 시간 이내에 컴퓨터 초보자 프로그래밍 기본 사항을 가르치는 방법은 무엇입니까? 컴퓨터 초보자에게 프로그래밍 지식을 가르치는 데 10 시간 밖에 걸리지 않는다면 무엇을 가르치기로 선택 하시겠습니까?

Fiddlerevery Where를 사용할 때 Man-in-the-Middle Reading에 Fiddlereverywhere를 사용할 때 감지되는 방법 ...


핫 AI 도구

Undresser.AI Undress
사실적인 누드 사진을 만들기 위한 AI 기반 앱

AI Clothes Remover
사진에서 옷을 제거하는 온라인 AI 도구입니다.

Undress AI Tool
무료로 이미지를 벗다

Clothoff.io
AI 옷 제거제

AI Hentai Generator
AI Hentai를 무료로 생성하십시오.

인기 기사

뜨거운 도구

PhpStorm 맥 버전
최신(2018.2.1) 전문 PHP 통합 개발 도구

스튜디오 13.0.1 보내기
강력한 PHP 통합 개발 환경

Eclipse용 SAP NetWeaver 서버 어댑터
Eclipse를 SAP NetWeaver 애플리케이션 서버와 통합합니다.

SublimeText3 Mac 버전
신 수준의 코드 편집 소프트웨어(SublimeText3)

VSCode Windows 64비트 다운로드
Microsoft에서 출시한 강력한 무료 IDE 편집기
