下面是详细的攻略。
1. 安装redis-py
首先需要安装redis-py库,可以通过pip直接安装:
pip install redis
2. 创建redis连接对象
接下来需要创建一个redis连接对象,连接Redis服务器。可以通过如下代码创建:
import redis
redis_host = 'localhost'
redis_port = 6379
redis_password = ''
r = redis.StrictRedis(host=redis_host, port=redis_port, password=redis_password, decode_responses=True)
以上代码创建了一个StrictRedis对象,连接的是本机Redis服务器,并且没有设置密码。
3. 将json对象存入Redis
接下来就可以将json对象存入Redis了,可以使用Redis的hash类型。将json对象中的每个键值对都存储为一个hash的一个字段,并使用json对象的一个固定字段作为hash的键值。
下面是将一个json对象存储到Redis中的代码:
import json
# 假设需要存储的json对象如下
json_obj = {
"name": "张三",
"age": 30,
"gender": "男",
"email": "zhangsan@example.com"
}
key = 'user:1' # 使用user:1作为键名
# 将json对象转为字符串,并存入Redis的hash类型中
string_obj = json.dumps(json_obj)
r.hset(key, 'obj', string_obj)
以上代码将json_obj转为字符串,然后将其存储为hash类型的一个字段,键值为'obj',键名为'user:1'。
4. 从Redis中获取json对象
如果需要获取存储在Redis中的json对象,可以使用以下代码:
# 将存储的json对象从Redis中取出,并转为python对象
json_string = r.hget(key, 'obj')
json_obj = json.loads(json_string)
print(json_obj['name'])
以上代码将之前存储的json对象从Redis中取出,并将其转为python对象。我们可以通过json_obj['name']访问其中的一个字段。
5. 导入导出数据
有时,我们需要将Redis中的数据导出到本地文件中,或者将本地的json数据导入到Redis中。这时可以使用以下代码进行导出和导入:
5.1. 导出数据到文件
import json
key = 'user:1' # 使用user:1作为键名
# 从Redis中取出json对象,并将其导出为json格式的文件
json_string = r.hget(key, 'obj')
json_obj = json.loads(json_string)
with open('user1.json', 'w', encoding='utf-8') as f:
json.dump(json_obj, f, indent=4, ensure_ascii=False)
以上代码将Redis中的json对象从Redis中取出,并将其导出为'user1.json'文件。
5.2. 导入数据到Redis
import json
key = 'user:2' # 使用user:2作为键名
# 将本地的json文件导入到Redis中
with open('user2.json', 'r', encoding='utf-8') as f:
json_obj = json.load(f)
string_obj = json.dumps(json_obj)
r.hset(key, 'obj', string_obj)
以上代码将本地的'user2.json'文件中的json对象取出,并将其存储到Redis中,使用'user:2'作为键名。
示例说明
示例1 - 将电影信息存储到Redis中
例如,我们有一个电影信息的json对象,如下:
{
"title": "肖申克的救赎",
"director": "弗兰克·德拉邦特",
"actors": ["蒂姆·罗宾斯", "摩根·弗里曼"],
"release_date": "1994年9月23日",
"rating_score": 9.6,
"rating_count": 2453455
}
我们可以将这个json对象存储到Redis中,并且使用'movie:1'作为键名:
import json
import redis
redis_host = 'localhost'
redis_port = 6379
redis_password = ''
r = redis.StrictRedis(host=redis_host, port=redis_port, password=redis_password, decode_responses=True)
# 电影json对象
movie_obj = {
"title": "肖申克的救赎",
"director": "弗兰克·德拉邦特",
"actors": ["蒂姆·罗宾斯", "摩根·弗里曼"],
"release_date": "1994年9月23日",
"rating_score": 9.6,
"rating_count": 2453455
}
# 将电影json对象存储到Redis中
movie_key = 'movie:1'
string_obj = json.dumps(movie_obj)
r.hset(movie_key, 'obj', string_obj)
以上代码将电影json对象存储到Redis中,并使用'movie:1'作为键名。
示例2 - 导出Redis中的用户信息到文件中
假设我们在Redis中存储了一些用户信息,如下:
[
{
"name": "张三",
"age": 22,
"gender": "男",
"email": "zhangsan@example.com"
},
{
"name": "李四",
"age": 25,
"gender": "男",
"email": "lisi@example.com"
},
{
"name": "王五",
"age": 28,
"gender": "女",
"email": "wangwu@example.com"
}
]
我们可以将这些用户信息导出为'user_info.json'文件:
import json
import redis
redis_host = 'localhost'
redis_port = 6379
redis_password = ''
r = redis.StrictRedis(host=redis_host, port=redis_port, password=redis_password, decode_responses=True)
# Redis中保存的用户信息
user_list = [
{
"name": "张三",
"age": 22,
"gender": "男",
"email": "zhangsan@example.com"
},
{
"name": "李四",
"age": 25,
"gender": "男",
"email": "lisi@example.com"
},
{
"name": "王五",
"age": 28,
"gender": "女",
"email": "wangwu@example.com"
}
]
# 将用户信息导出到文件中
with open('user_info.json', 'w', encoding='utf-8') as f:
json.dump(user_list, f, indent=4, ensure_ascii=False)
以上代码将Redis中保存的用户信息'user_list'导出到'user_info.json'文件中。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:python3实现将json对象存入Redis以及数据的导入导出 - Python技术站