本节主要介绍字符串数据的操作。
1) set():该函数用于给单个键赋值。
>>> r.set('key10', 100)
True
>>> r.get('key10') # 得到键key10对应的值
b'100' # 返回值是字符串
该函数还有几个参数,其中包括有效时间,即如果过了指定时间,该键自动被删除。
可以用 ex 参数来指定该键存在的秒数。下面的代码设定一个键,其有效时间是 10 秒,可以发现在 10 秒后该键就不存在了。
import time, redis
r = redis.Redis(host='127.0.0.1',port=6379)
r.set("str_set_expire_demo", "val1", ex=10)
print("Key Exist? %s" % bool(r.exists("str_set_expire_demo")))
time.sleep(12)
print("12 Seconds Passed, Key Exist? %s" % bool(r.exists("str_set_expire_demo")))
运行后的结果如下:
$ python setEx1.py
Key Exist? True
12 Seconds Passed, Key Exist? False
如果希望存在的时间比较短,可以使用参数 px,其表示存在的毫秒数。下面的例子设置在 800 毫秒后就自动删除:
import time, redis
r = redis.Redis(host='127.0.0.1',port=6379)
r.set("str_set_expire_demo", "val1", px=800)
print("Key Exist? %s" % bool(r.exists("str_set_expire_demo")))
time.sleep(1)
print("1 Seconds Passed, Key Exist? %s" % bool(r.exists("str_set_
expire_demo")))
运行后的结果如下:
$ python setEx2.py
Key Exist? True
1 Seconds Passed, Key Exist? False
如果希望 1.2 秒后就自动删除,可以设置为:
r.set("str_set_expire_demo", "val1", ex=1, px=1200)
如果希望仅在该键不存在时才进行赋值,则可以使用参数 nx=True:
>>> r.set("str_set_nx_demo", "val1") # 设定了该值
True # 设定成功
>>> r.exists('str_set_nx_demo') # 键是否存在
1 # 存在
# 仅不存在时才赋值,没有赋值
>>> r.set("str_set_nx_demo", "val1", nx=True)
>>> r.set("str_set_nx_demo", "val1") # 直接赋值,返回True表示赋值成功
True
如果希望仅在该键已经存在时才进行赋值,则可以使用参数 xx=True:
>>> r.exists('str_set_xx_demo') # 键是否存在
0 # 不存在
>>> r.set("str_set_xx_demo", "val1", xx=True) # 赋值,失败
>>> r.set("str_set_xx_demo", "val1") # 直接赋值
True #