redis-py 4.1.0 ปล่อยตัวแล้ว!
การรองรับ Python สำหรับ Redis กำลังเติบโตมานานกว่าทศวรรษ ถึงเกิน 1 ล้านการดาวน์โหลดต่อสัปดาห์ และเรากลางภูมิใจประกาศการปล่อยล่าสุด redis-py 4.1.0!
การปล่อยครั้งนี้ทำให้เราใกล้เคียงกับการรองรับคำสั่ง Redis 6.2 สมบูรณ์เกือบหมด เราเพิ่มการรองรับ Options ที่ขาดหายไปในคำสั่งเดิม SSL Support สำหรับ Sentinel Connections และปรับปรุง Developer Experience โดยทั่วไป ยังมีการเปลี่ยนแปลงโครงสร้างขนาดใหญ่ เช่น โฟกัสที่ Python 3.6 และรองรับ Python 3.10 แม้กระทั่ง เราได้ปรับปรุง Client Documentation ใหม่ ทำให้หาคำสั่ง Redis ได้ง่ายขึ้น และเชิญชวนทุกคนเข้าร่วม! สำคัญกว่า เราทำได้ด้วยความรบกวนน้อยที่สุด ดังนั้นคุณจึงสามารถอัปเกรดโดยไม่มีปัญหา Compatibility
รองรับคำสั่ง Redis ใหม่ล่าสุด
Redis 6.2 มาพร้อมคำสั่ง Redis ใหม่จำนวนมาก และตอนนี้ใช้งานกับ Python ได้ง่ายกว่าคิด ตั้งแต่ทำให้ดึงข้อมูลและอัปเดต Expiration ในคำสั่งเดียวด้วย GETEX จัดการอินสแตนซ์ Redis โดยตัดการเชื่อมต่อ Client ด้วย CLIENT INFO และ CLIENT KILL redis-py 4.1.0 ครอบคลุมครบครัน มาดู 2 ตัวอย่างจากกว่า 30 คำสั่งที่เพิ่มใน redis-py 4.1.0!
### GETEX
import redis
r = redis.Redis()
r.set('somekey', 'hello')
r.getex('somekey', ex=15) # returns 'Hello'
r.ttl('somekey') # returns 15
### CLIENT INFO AND KILL
import redis
r = redis.Redis()
r2 = redis.Redis()
r.client_setname('redis-py-c1')
r2.client_setname('redis-py-c2')
clients = [client for client in r.client_list() if client.get('name') in ['redis-py-c1', 'redis-py-c2']]
clients_by_name = dict([(client.get('name'), client) for client in clients])
r.client_kill_filter(laddr=clients_by_name['redis-py-c2'].get('laddr'))
รองรับ Redis Modules แบบ First-class
redis-py 4.0 เป็นเวอร์ชันแรกของ Python Library ที่นำ First-class Support สำหรับ Redis Modules มาให้ ด้วยการปล่อย redis-py 4.1.0 ตอนนี้เรารองรับ RedisJSON, RediSearch, RedisTimeSeries, RedisGraph, และ RedisBloom นั่นแหละ คุณสามารถจัดเก็บ JSON Data ใน Redis ได้ง่าย! คุณสามารถปฏิบัติงานกับมันได้ — แม้แต่ Search ก็ได้! แค่จำไว้ว่าเมื่อจัดเก็บ JSON Data ใน Redis คุณกำลังจัดเก็บ Data Type ใหม่ จึงต้องใช้คำสั่ง JSON เฉพาะเพื่อจัดการ มาดูตัวอย่าง:
### STORING and RETRIEVING JSON
import redis
r = redis.Redis()
myDoc = {'hello', 'world', 'colours': ['red', 'blue', 'green'], 'hmm': {'hello': 'again'}}
r.json().set('colors', '$', myDoc)
r.json().get('colors')
เอกสารแบบ myDoc ข้างต้นทำได้ไหม? คุณรู้ไหมว่าสามารถดึง Multiple Keys ได้โดยการ Query ส่วนหนึ่งของเอกสาร?
### FETCHING ALL KEYS NAMED "hello" from the JSON document
r.json().get('colors', '$..hello')
คุณแม้แต่รวม RedisJSON และ RediSearch เพื่อ Document Capabilities หรือเพิ่ม Custom Redis Modules Support ของคุณเองได้ ทุกอย่างอยู่ใน redis-py 4.0
Redis Cluster Support ด้วย redis-py
คุณรู้ไหมว่า redis-py 4.1.0 ยังรวม Redis Cluster Support ด้วย สองวิธีเชื่อมต่อที่ง่าย? ประสบการณ์ที่ยอดเยี่ยมเดิมสำหรับการโต้ตอบกับ Standalone Redis Nodes ตอนนี้เป็นส่วนหนึ่งของ redis-py
### CONNECTING TO CLUSTER
from redis.cluster import RedisCluster
r = RedisCluster.from_url('redis://4.5.6.8:6379')
nodes = r.get_nodes()
อาจจะอยากเชื่อมต่อ Cluster ผ่าน SSL หรือชอบ Class Init Based Approach และอยากรันคำสั่ง Target ไปยัง Nodes เฉพาะ redis-py 4.1.0 รองรับสถานการณ์เหล่านั้น!
### CONNECTING TO CLUSTER 2
from redis.cluster import RedisCluster
r = RedisCluster('4.5.6.8', port=6379, ssl=True)
r.ping(target_nodes='all')
อะไรจะเป็นต่อไป?
งานไม่มีวันจบ เรากำลังเคลื่อนที่เต็มที่! เราจะเพิ่มการรองรับ Modules มากขึ้น เช่น RedisAI ด้วย First-class Experience เดียวกัน เราจะเพิ่มการรองรับ RESP3 Functions ที่จะปล่อยใน Redis 7 และเร่งความเร็ว Code Base เรายังกำลังทำงานบน Developer Tooling เพื่อให้ Contribution และการทำงานกับ redis-py ดีขึ้น!