Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Redis

Ra Mắt Upstash Redis Python SDK v1.0.0 – Client Connectionless, Sẵn Sàng Serverless

Giới Thiệu

Hôm nay chúng tôi phát hành phiên bản v1.0.0 của package upstash-redis Python. Package hiện có sẵn trên GitHub và PyPi.

Đây là client HTTP-based connectionless cho Upstash Redis, thiết kế để dùng trong môi trường serverless như AWS Lambda, Google Cloud Functions hoặc bất kỳ môi trường nào ưu tiên HTTP hơn TCP.

Điều Gì Mới?

Với phiên bản mới, package đi kèm python docstrings cho mọi command kèm ví dụ sử dụng.

Ra Mắt Upstash Redis Python SDK v1.0.0 – Client Connectionless, Sẵn Sàng Serverless

Bạn cũng tìm thấy documentation và ví dụ cho mọi command trong Upstash Redis Python docs.

Khởi Động Nhanh

Cài Đặt Package

pip install upstash-redis

Tạo Redis Client

from upstash_redis import UpstashRedis
redis = Redis(url="UPSTASH_REDIS_REST_URL", token="UPSTASH_REDIS_REST_TOKEN")
redis.set("key", "value")

Bạn cũng có thể dùng biến môi trường UPSTASH_REDIS_REST_URL và UPSTASH_REDIS_REST_TOKEN thay vì truyền vào constructor:

from upstash_redis import UpstashRedis
redis = Redis.from_env()
redis.set("key", "value")

SDK cũng hỗ trợ async functions với asyncio và aiohttp:

import asyncio
from upstash_redis.asyncio import Redis

async def main():
    redis = Redis.from_env()
    await redis.set("key", "value")

asyncio.run(main())

Nếu môi trường serverless cho phép, khuyến khích khởi tạo client ngoài request handler để tái dùng khi function vẫn "hot".

Thay Đổi Kiểu Giá Trị Trong Một Số Command

Một số command như set hoặc hset trước đây chấp nhận Any làm kiểu giá trị. Giá trị sau đó chuyển string bằng json.dumps. Điều này gây nhầm lẫn ở một số command.

Giờ đã đổi sang kiểu mới ValueT chỉ chấp nhận str, int, float và bool:

ValueT = Union[str, int, float, bool]
def set(
  self, key: str, value: ValueT, ...
) -> Optional[str]: ...

SDK vẫn hỗ trợ hành vi cũ nhưng typing đã thay đổi:

# Vẫn chạy nhưng báo type error
redis.set("key", {"foo": "bar"})
# Chạy OK
redis.set("key", json.dumps({"foo": "bar"}))

Geo Commands Trả Về GeoSearchResult Thay Vì Dict

Command geosearch và georadius giờ trả về object GeoSearchResult thay vì dictionary — tiện lợi hơn.

Set Commands Trả Về List Thay Vì Set

Đổi kiểu trả về của sdiff, sunion, sinter, và smembers từ Set sang List. Loại bỏ việc allocate set thêm cho user iterate qua kết quả. Nếu muốn, tự convert list thành set.

Kết Luận

Hy vọng bạn thích phiên bản mới. Chúng tôi dự định thêm hỗ trợ pipeline và json commands cho Python SDK.

Bạn cũng có thể xem thư viện rate-limiting Python của chúng tôi hoặc các bài blog khác về Python.

Nếu có câu hỏi hoặc feedback, hãy liên hệ qua X hoặc Discord.