redis-py: StrictRedis () และ Redis () ต่างกันอย่างไร


105

ฉันต้องการใช้redis-pyในการแคชข้อมูลบางอย่าง แต่ฉันไม่พบคำอธิบายที่เหมาะสมเกี่ยวกับความแตกต่างระหว่างredis.StrictRedis()และredis.Redis(). เทียบเท่าหรือไม่?

นอกจากนี้ผมไม่สามารถหาเอกสารที่ชัดเจนใด ๆ เกี่ยวกับredis.StrictRedis()การขัดแย้ง 'ในRedis หลามเอกสาร ความคิดใด ๆ ?

คำตอบ:


142

ดูเหมือนจะค่อนข้างชัดเจน :

 redis-py exposes two client classes that implement these commands
 The StrictRedis class attempts to adhere to the official command syntax.

และ

In addition to the changes above, the Redis class, a subclass of StrictRedis,
overrides several other commands to provide backwards compatibility with older
versions of redis-py

คุณต้องการความเข้ากันได้แบบย้อนหลังหรือไม่? ใช้Redis. ไม่สนเหรอ ใช้StrictRedis.


2017-03-31

นี่คือรายละเอียดเฉพาะของความเข้ากันได้แบบย้อนกลับจากลิงค์ github.com ที่อ้างถึง:

นอกเหนือจากการเปลี่ยนแปลงข้างต้นคลาส Redis ซึ่งเป็นคลาสย่อยของ StrictRedis ยังแทนที่คำสั่งอื่น ๆ อีกหลายคำสั่งเพื่อให้สามารถใช้งานร่วมกับ redis-py เวอร์ชันเก่าได้:

LREM: ลำดับของอาร์กิวเมนต์ 'num' และ 'value' กลับรายการซึ่ง 'num' สามารถให้ค่าเริ่มต้นเป็นศูนย์

ZADD: Redis ระบุอาร์กิวเมนต์ 'score' ก่อน 'value' สิ่งเหล่านี้ถูกสลับโดยบังเอิญเมื่อมีการใช้งานและไม่ถูกค้นพบจนกว่าจะมีคนใช้งานไปแล้ว คลาส Redis คาดหวัง * args ในรูปแบบของ: name1, score1, name2, score2, ...

SETEX: ลำดับของอาร์กิวเมนต์ 'เวลา' และ 'ค่า' กลับรายการ



40

เป็นคำถามเก่า แต่สำหรับใครก็ตามที่มาถึงคำถามนี้หลังจากค้นหาด้วย Google:

จาก redis-py readme ( ลิงค์ ):

redis-py 3.0 ลดการรองรับคลาสไคลเอนต์ "Redis" แบบเดิม "StrictRedis" ถูกเปลี่ยนชื่อเป็น "Redis" และมีการให้นามแฝงที่ชื่อว่า "StrictRedis" เพื่อให้ผู้ใช้ที่ใช้ "StrictRedis" ก่อนหน้านี้สามารถทำงานต่อไปได้โดยไม่มีการเปลี่ยนแปลง

นี่คือบรรทัดจากรหัส redis-py ซึ่งกำหนดStrictRedis( ลิงค์ ):

StrictRedis = Redis
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.