วันนี้เราเผยแพร่ version v1.0.0 ของแพ็กเกจ upstash-redis สำหรับ Python พร้อมใช้งานบน GitHub และ PyPi แล้ว
แพ็กเกจนี้เป็น connectionless HTTP-based client สำหรับ Upstash Redis ออกแบบมาเพื่อใช้งานใน serverless environments เช่น AWS Lambda, Google Cloud Functions หรือสภาพแวดล้อมที่ชอบ HTTP มากกว่า TCP
อะไรใหม่บ้าง?
ใน version ใหม่นี้ แพ็กเกจมาพร้อม python docstrings สำหรับทุก command พร้อมตัวอย่างการใช้งาน

คุณยังหา documentation และตัวอย่างสำหรับทุก command ได้ใน upstash redis python docs
Quick Start
ติดตั้งแพ็กเกจ
pip install upstash-redis
สร้าง Redis client
from upstash_redis import UpstashRedis
redis = Redis(url="UPSTASH_REDIS_REST_URL", token="UPSTASH_REDIS_REST_TOKEN")
redis.set("key", "value")
สามารถใช้ environment variables UPSTASH_REDIS_REST_URL และ UPSTASH_REDIS_REST_TOKEN แทนการส่งผ่าน constructor:
from upstash_redis import UpstashRedis
redis = Redis.from_env()
redis.set("key", "value")
SDK รองรับ async functions ด้วย asyncio และ aiohttp:
import asyncio
from upstash_redis.asyncio import Redis
async def main():
redis = Redis.from_env()
await redis.set("key", "value")
asyncio.run(main())
ถ้าอยู่ใน serverless environment ที่อนุญาต แนะนำให้ initialize client นอก request handler เพื่อ reuse ขณะ function ยัง hot
การเปลี่ยนแปลง value type ในบาง commands
Commands บางตัวเช่น set หรือ hset เดิมรับ Any เป็น value type แล้วแปลงเป็น string ด้วย json.dumps ทำให้เกิดความสับสนบ้าง
ตอนนี้เปลี่ยนเป็น type ใหม่ ValueT ที่รับเฉพาะ str, int, float และ bool:
ValueT = Union[str, int, float, bool]
def set(
self, key: str, value: ValueT, ...
) -> Optional[str]: ...
SDK ยังรองรับพฤติกรรมเก่า แต่ typing เปลี่ยนแล้ว:
# ทำงานได้ แต่มี type error
redis.set("key", {"foo": "bar"})
# ทำงานได้
redis.set("key", json.dumps({"foo": "bar"}))
Geo commands คืนค่า GeoSearchResult แทน Dict
Commands geosearch และ georadius ตอนนี้คืนค่า object GeoSearchResult แทน dictionary ซึ่งสะดวกกว่า
Set commands คืนค่า List แทน Set
เปลี่ยน return types ของ sdiff, sunion, sinter, และ smembers เป็น List จาก Set กำจัด extra set allocation สำหรับผู้ที่ iterate ผลลัพธ์ ถ้าต้องการ set ก็แปลงกลับได้เอง
สรุป
หวังว่าคุณจะเพลิดเพลินกับ version ใหม่นี้ เราวางแผนเพิ่ม support pipeline และ json commands ใน python sdk
คุณยังดู python ratelimiting library ของเรา หรือ blog posts อื่นๆ เกี่ยวกับ Python ได้
หากมีคำถามหรือ feedback ติดต่อเราที่ X หรือ Discord ได้เลย