目标:存储一个
dict()
或{}
作为键值对的值,以set()
到Redis。
代码
import redis
r = redis.Redis()
value = 180
my_dict = dict(bar=value)
r.set('foo', my_dict)
redis.exceptions.DataError: Invalid input of type: 'dict'. Convert to a bytes, string, int or float first.
你不能在
set()
操作中将字典对象作为值传递给Redis。
但是,我们可以使用
pickle
或 json
来获取对象的 Bytes
。
恕我直言,您已经导入的任何一个都是最佳的。
泡菜
pickle.dumps
)pre-set()
import pickle
my_dict = {'a': 1, 'b': 2}
dict_bytes = pickle.dumps(my_dict)
r.set('my_key', dict_bytes)
pickle.loads
)post-get()
:
dict_bytes = r.get('my_key')
my_dict = pickle.loads(dict_bytes)
JSON 字符串
json.dumps
)pre-set()
import json
my_dict = {'a': 1, 'b': 2}
dict_str = json.dumps(my_dict)
r.set('my_key', dict_str)
json.loads
)post-get()
:
dict_str = r.get('my_key')
my_dict = json.loads(dict_str)