我目前正在使用Serialized Redis,因为我在包中使用了orderedDict和许多其他功能,这些功能都是我需要的。问题是我不知道如何在红锁中使用conn = serialized_redis.MsgpackSerializedRedis(host='localhost', port=6379, db=0)
作为masters
{a2}
对于我这个序列化Redis的重度用户来说,将Redlock与之结合使用将是非常棒的。这将帮助我解决我不需要将两个redis连接连接到一个redis连接的问题,这样可以节省资源,也可以更正确地进行连接
我与序列化的redis一起创建了一个小脚本:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import time
import serialized_redis
from pottery import Redlock
conn = serialized_redis.MsgpackSerializedRedis(host='localhost', port=6379, db=0)
lock = Redlock(key='basket_test', masters={conn}, auto_release_time=15 * 1000)
try:
lock.acquire()
test = bool(lock.locked())
print("Locked test ?", test)
time.sleep(2)
test1 = bool(lock.locked())
print("Locked test1 ?", test)
lock.release()
test3 = bool(lock.locked())
print("Locked test3 ?", test)
except Exception as err:
print("Unfortunately there is an error here!", err)
>>> Locked test ? False
>>> Locked test1 ? False
>>> Unfortunately there is an error here! key='redlock:basket_test', masters=[MsgpackSerializedRedis<ConnectionPool<Connection<host=localhost,port=6379,db=0>>>]
另一个代码:
#!/usr/bin/python3
# -*- coding: utf-8 -*-
import time
import serialized_redis
from pottery import Redlock
from redis import Redis
conn = serialized_redis.MsgpackSerializedRedis(host='localhost', port=6379, db=0)
redis = Redis.from_url('redis://localhost:6379/0')
lock = Redlock(key='basket_test', masters={conn}, auto_release_time=15 * 1000)
try:
with lock:
print("We have locked it... I think... Let's see")
print("Locked?", bool(lock.locked()))
time.sleep(2)
print("After 'with lock', Are we released?")
print("Released?", bool(lock.locked()))
except Exception as err:
print("Unfortunately there is an error here!", err)
>>> We have locked it... I think... Let's see
>>> Locked? False
>>> Unfortunately there is an error here! key='redlock:basket_test', masters=[MsgpackSerializedRedis<ConnectionPool<Connection<host=localhost,port=6379,db=0>>>]
我想知道如何将serialized-redis与Redlock组合在一起
目前没有回答
相关问题 更多 >
编程相关推荐