Dan*_*l99 6 python serialization byte redis python-3.x
目标:将dict()or{}作为键值对的值存储到Redisset()上。
代码
import redis
r = redis.Redis()
value = 180
my_dict = dict(bar=value)
r.set('foo', my_dict)
Run Code Online (Sandbox Code Playgroud)
redis.exceptions.DataError: Invalid input of type: 'dict'. Convert to a bytes, string, int or float first.
Run Code Online (Sandbox Code Playgroud)
Dan*_*l99 13
您不能将字典对象作为操作中的值传递set()给 Redis。
但是,我们可以使用pickleorjson来获取Bytes对象的 。
恕我直言,无论您已经导入哪个都是最佳的。
泡菜
序列化为 pickle (with pickle.dumps) pre-set()
import pickle
my_dict = {'a': 1, 'b': 2}
dict_bytes = pickle.dumps(my_dict)
r.set('my_key', dict_bytes)
Run Code Online (Sandbox Code Playgroud)
反序列化对象 (dict) (with pickle.loads) post- get():
dict_bytes = r.get('my_key')
my_dict = pickle.loads(dict_bytes)
Run Code Online (Sandbox Code Playgroud)
JSON 字符串
序列化为 JSON 字符串(带有json.dumps)预set()
import json
my_dict = {'a': 1, 'b': 2}
dict_str = json.dumps(my_dict)
r.set('my_key', dict_str)
Run Code Online (Sandbox Code Playgroud)
反序列化对象 (dict) (with json.loads) post- get():
dict_str = r.get('my_key')
my_dict = json.loads(dict_str)
Run Code Online (Sandbox Code Playgroud)