Python 连接 Redis及String类型测试

举报
tea_year 发表于 2025/04/14 10:50:27 2025/04/14
94 0 0
【摘要】 随着互联网技术的飞速发展,Web应用面临的数据量和用户访问量急剧增加,传统的数据库读写方式逐渐成为性能瓶颈。为了提升用户体验和系统响应速度,引入缓存机制成为了一种行之有效的解决方案。Redis以其卓越的性能和丰富的特性,成为了构建缓存系统的理想选择。Redis 是一个流行的内存数据库,Python 可以通过多种方式连接 Redis。一、Redis缓存原理Redis通过内存存储数据,提供了极高...

随着互联网技术的飞速发展,Web应用面临的数据量和用户访问量急剧增加,传统的数据库读写方式逐渐成为性能瓶颈。为了提升用户体验和系统响应速度,引入缓存机制成为了一种行之有效的解决方案。Redis以其卓越的性能和丰富的特性,成为了构建缓存系统的理想选择。Redis 是一个流行的内存数据库,Python 可以通过多种方式连接 Redis。

一、Redis缓存原理

Redis通过内存存储数据,提供了极高的数据访问速度。它支持多种数据类型,如字符串(Strings)、哈希(Hashes)、列表(Lists)、集合(Sets)、有序集合(Sorted Sets)等,能够满足不同的缓存需求。Redis还提供了丰富的命令操作这些数据结构,以及支持过期时间、事务、发布/订阅等高级功能。

在Web应用中,Redis通常被用作缓存层,存储那些读多写少、频繁访问的数据,如用户信息、商品列表、搜索结果等。当Web服务器接收到客户端的请求时,首先检查Redis中是否存在请求的数据,如果存在则直接返回给客户端,从而避免了数据库的访问,极大地提高了响应速度。

二、以下是几种常用的方法:

1. 使用 redis-py (官方推荐)

redis-py 是 Redis 官方推荐的 Python 客户端。

安装

bash
复制
pip install redis

基本连接

python
复制
import redis

# 创建连接
r = redis.Redis(
    host='localhost',  # Redis 服务器地址
    port=6379,         # Redis 服务器端口
    db=0,             # 数据库编号
    password=None,     # 密码,如果没有则为None
    decode_responses=True  # 自动解码返回的字节为字符串
)

# 测试连接
print(r.ping())  # 输出 True 表示连接成功

# 基本操作
r.set('foo', 'bar')
value = r.get('foo')
print(value)  # 输出 'bar'

连接池

python
复制
import redis

# 创建连接池
pool = redis.ConnectionPool(
    host='localhost',
    port=6379,
    db=0,
    max_connections=20
)

# 从连接池获取连接
r = redis.Redis(connection_pool=pool)

# 使用连接...

2. 使用 redis-py 的 StrictRedis

StrictRedis 是 redis.Redis 的子类,实现了更严格的 Redis 命令协议:

python
复制
from redis import StrictRedis

sr = StrictRedis(host='localhost', port=6379, db=0)

3. 使用异步客户端 aioredis (Python 3.5+)

对于异步应用,可以使用 aioredis。

安装

bash
复制
pip install aioredis

使用示例

python
复制
import asyncio
import aioredis

async def main():
    # 创建连接
    redis = await aioredis.create_redis_pool('redis://localhost')
    
    # 设置和获取值
    await redis.set('my-key', 'value')
    value = await redis.get('my-key')
    print(value)
    
    # 关闭连接
    redis.close()
    await redis.wait_closed()

asyncio.run(main())

4. 使用 URL 连接

redis-py 支持使用 URL 格式连接:

python
复制
import redis

# 基本格式: redis://[:password]@host:port/db
r = redis.from_url('redis://localhost:6379/0')

5. 使用 SSL 连接

如果需要安全连接:

python
复制
r = redis.Redis(
    host='localhost',
    port=6379,
    ssl=True,
    ssl_cert_reqs='required',
    ssl_ca_certs='/path/to/ca.crt'
)

常见操作示例

python
复制
# 字符串操作
r.set('name', 'Alice')
r.get('name')
r.incr('counter')

# 哈希操作
r.hset('user:1', 'name', 'Bob')
r.hgetall('user:1')

# 列表操作
r.lpush('mylist', 'a', 'b', 'c')
r.lrange('mylist', 0, -1)

# 集合操作
r.sadd('myset', 'a', 'b', 'c')
r.smembers('myset')

# 有序集合操作
r.zadd('ranking', {'player1': 100, 'player2': 90})
r.zrange('ranking', 0, -1, withscores=True)

# 发布/订阅
pubsub = r.pubsub()
pubsub.subscribe('mychannel')

注意事项

  1. 生产环境中应该使用连接池管理连接

  2. 敏感信息如密码不要硬编码在代码中

  3. 考虑使用环境变量或配置文件存储连接参数

  4. 对于高并发应用,考虑使用异步客户端

三、String类型测试

Redis 的 String 类型是最基本的数据类型,可以存储字符串、整数或浮点数。以下是使用 Python 操作 Redis String 类型的全面指南。

1. 基本连接设置

首先确保已安装 redis-py 库:

bash
复制
pip install redis

建立连接:python

复制
import redis

# 创建 Redis 连接
r = redis.Redis(
    host='localhost',
    port=6379,
    db=0,
    password=None,  # 如果有密码则填写
    decode_responses=True  # 自动将返回的字节解码为字符串
)

# 测试连接
print(r.ping())  # 输出 True 表示连接成功

2. 基本 String 操作

设置和获取值python

复制
# 设置单个键值
r.set('name', 'zhangchen')

# 获取值
name = r.get('name')
print(name)  # 输出 'zhangchen'

# 设置带过期时间(单位:秒)
r.setex('yanzhengma', 60, '222333')  # 60秒后自动删除

# 设置带过期时间(单位:毫秒)
r.psetex('temp_key_ms', 10000, '342422')  # 10秒后自动删除

# 只有当键不存在时设置
r.setnx('unique_key', 'value')  # 如果键已存在则不会设置
dfdfdfd
asdfasdf

ffgfgf
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

作者其他文章

评论(0

抱歉,系统识别当前为高风险访问,暂不支持该操作

    全部回复

    上滑加载中

    设置昵称

    在此一键设置昵称,即可参与社区互动!

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

    *长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。