Redis的String是一种最基本的数据类型,它是二进制安全的,这意味着Redis的String可以包含任何类型的数据,比如JPEG图片或者JSON对象,。它的最大长度可以达到512MB。
以下是一些使用Redis String的示例:
- 作为缓存使用:
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.set('key', 'value')
print(r.get('key'))
- 作为分布式锁:
import redis
import time
import uuid
r = redis.Redis(host='localhost', port=6379, db=0)
def acquire_lock(lock_key, acquire_timeout=10, lock_timeout=10):
identifier = str(uuid.uuid4())
end = time.time() + acquire_timeout
while time.time() < end:
if r.set(lock_key, identifier, ex=lock_timeout, nx=True):
return identifier
time.sleep(0.001)
return False
def release_lock(lock_key, identifier):
pipe = r.pipeline()
while True:
try:
pipe.watch(lock_key)
if pipe.get(lock_key) == identifier:
pipe.multi()
pipe.delete(lock_key)
pipe.execute()
return True
pipe.unwatch()
break
except redis.exceptions.WatchError:
pass
return False
lock_key = 'my_lock'
identifier = acquire_lock(lock_key)
if identifier:
print('Lock acquired')
# do some work
release_lock(lock_key, identifier)
print('Lock released')
else:
print('Unable to acquire lock')
- 作为计数器:
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.set('counter', 0)
r.incr('counter')
print(r.get('counter'))
r.incr('counter')
print(r.get('counter'))
- 作为配置或者配置文件:
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.set('config:api_key', '12345')
print(r.get('config:api_key'))
- 作为队列:
import redis
r = redis.Redis(host='localhost', port=6379, db=0)
r.rpush('queue', 'item1')
r.rpush('queue', 'item2')
print(r.lpop('queue'))
print(r.lpop('queue'))
以上都是Redis String的一些常见用法,你可以根据自己的需求选择合适的方法。