Python3中redis模块学习之redis连接

安装

redis 是第三方模块,需要手动安装

pip3 install -i http://pypi.douban.com/simple redis --trusted-host pypi.douban

导入

import redis

redis类

redis提供两个类RedisStrictRedis用于实现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'   # 解码失败时,该怎么做
)

参数:
portdb, 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()
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值