安装
redis
是第三方模块,需要手动安装
pip3 install -i http://pypi.douban.com/simple redis --trusted-host pypi.douban
导入
import redis
redis类
redis
提供两个类Redis
和StrictRedis
用于实现Redis的命令,
StrictRedis
用于实现大部分官方的命令,并使用官方的语法和命令。
Redis
是StrictRedis的子类,用于向后兼容旧版本的redis-py。
redis连接
直连
Redis类
rs = redis.Redis(
host='192.168.1.104', # 目标主机
port=6379, # 端口, 默认6379
db=0, # 数据库编号, 默认0
password='hardy9sap', # 密码
charset='utf-8', # 入库编码, 默认utf-8
errors='strict', # 默认strict
decode_responses=True, # 默认False
encoding='utf-8', # redis结果集以什么编码解码
encoding_errors='strict' # 解码失败时,该怎么做
)
参数:
port
、db
,charset
,errors
,
encoding
,encoding_errors
,
若没有特殊要求, 都可以不用写
StrictRedis类
用法一样
rs = redis.StrictRedis(
host='192.168.1.104',
port=6379,
db=0,
password='hardy9sap',
charset='utf-8',
errors='strict',
encoding='utf-8',
encoding_errors='strict',
decode_responses=True
)
简单示例:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""Redis直连"""
import redis
rs = redis.Redis(
host='192.168.1.104', # 目标主机
port=6379, # 端口, 默认6379
db=0, # 数据库编号, 默认0
password='hardy9sap', # 密码
charset='utf-8', # 入库编码, 默认utf-8
errors='strict', # 默认strict
decode_responses=True, # 默认False
encoding='utf-8',
encoding_errors='strict'
)
# 对应redis中的ping, 测试连接是否正常
# ping()返回True, 表示正常, 反之则反.
responses = rs.ping()
if responses:
rsp = rs.set(name='site', value='hardy9sap.com')
print(rsp) # 返回True, 表示正确设置
data = rs.get(name='site') # 返回bytes 还是 str, 根据decode_responses参数有关
print(data) # 如果为True, 表示按照encoding参数解码, 默认为utf-8
# 如果为False, 表示不解码, 默认为False
rs.close()
连接池
连接池的原理是, 通过预先创建多个连接, 当进行redis操作时,
直接获取已经创建的连接进行操作, 而且操作完成后, 不会释放, 用于后续的其他redis操作,
这样就达到了避免频繁的redis连接创建和释放的目的, 从而提高性能。
redis
模块采用ConnectionPool
来管理对redis server的所有连接。
默认,每个Redis实例都会维护一个自己的连接池。
可以直接建立一个连接池,然后作为参数Redis,这样就可以实现多个Redis实例共享一个连接池。
pool = redis.ConnectionPool(
host='192.168.1.104',
port=6379,
password='hardy9sap',
db=0,
decode_responses=True,
)
rs = redis.Redis(connection_pool=pool)
简单示例:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""Redis连接池"""
import redis
pool = redis.ConnectionPool(
host='192.168.1.104',
port=6379,
password='hardy9sap',
db=0,
decode_responses=True,
)
rs = redis.Redis(connection_pool=pool)
is_connected = rs.ping()
if is_connected:
rsp = rs.set(name='website', value='www.hardy9sap.com')
print(rsp)
data = rs.get(name='website')
print(data)
rs.close()
哨兵连接
哨兵连接应该就是集群吧…https://blog.csdn.net/pengjunlee/article/details/89203225
整体代码
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""Redis连接方式"""
import redis
# ===============================================================
#
# redis提供两个类Redis和StrictRedis用于实现Redis的命令,
# StrictRedis用于实现大部分官方的命令,并使用官方的语法和命令,
# Redis是StrictRedis的子类,用于向后兼容旧版本的redis-py。
#
# ===============================================================
# 方式一: 直连
# Redis
# 创建redis连接对象
# rs = redis.Redis(
# host='192.168.1.104', # 目标主机
# port=6379, # 端口, 默认6379
# db=0, # 数据库编号, 默认0
# password='hardy9sap', # 密码
# charset='utf-8', # 入库编码, 默认utf-8
# errors='strict', # 默认strict
# decode_responses=True, # 默认False
# encoding='utf-8',
# encoding_errors='strict'
#
# )
# ==============================
# 参数:
# port, db, charset, errors,
# encoding, encoding_errors,
# 若没有特殊要求, 都可以不用写
# ==============================
# StrictRedis
# 创建redis连接对象
# rs = redis.StrictRedis(
# host='192.168.1.104',
# port=6379,
# db=0,
# password='hardy9sap',
# charset='utf-8',
# errors='strict',
# encoding='utf-8',
# encoding_errors='strict',
# decode_responses=True
# )
# 对应redis中的ping, 测试连接是否正常
# ping()返回True, 表示正常, 反之则反.
# responses = rs.ping()
#
# if responses:
# rsp = rs.set(name='site', value='hardy9sap.com')
# print(rsp) # 返回True, 表示正确设置
# data = rs.get(name='site') # 返回bytes 还是 str, 根据decode_responses参数有关
# print(data) # 如果为True, 表示按照encoding参数解码, 默认为utf-8
# # 如果为False, 表示不解码, 默认为False
# rs.close()
# 方式二: 连接池
# =============================================================================
# 连接池的原理是, 通过预先创建多个连接, 当进行redis操作时,
# 直接获取已经创建的连接进行操作, 而且操作完成后, 不会释放, 用于后续的其他redis操作,
# 这样就达到了避免频繁的redis连接创建和释放的目的, 从而提高性能。
# redis模块采用ConnectionPool来管理对redis server的所有连接。
# 默认,每个Redis实例都会维护一个自己的连接池。
# 可以直接建立一个连接池,然后作为参数Redis,这样就可以实现多个Redis实例共享一个连接池。
# =============================================================================
pool = redis.ConnectionPool(
host='192.168.1.104',
port=6379,
password='hardy9sap',
db=0,
decode_responses=True,
)
rs = redis.Redis(connection_pool=pool)
is_connected = rs.ping()
if is_connected:
rsp = rs.set(name='website', value='www.hardy9sap.com')
print(rsp)
data = rs.get(name='website')
print(data)
rs.close()