Python Redis哈希hash存储和读取json字符串

import redis
rdb = redis.Redis(host='localhost',port=6379,db=1)

#模拟数据
data = [
	{"name":"张三","age":18},
	{"name":"李四","age":20}
]

#redis哈希存储,注意这边必须是以字符串形式存储
for x in data:
	hsname = x['name']
	rdb.hset('student',hsname ,str(x))

读取数据:

list = rdb.hgetall('student')
for x in list:
	temp = rdb.hget('student', x).decode('utf-8')
	print(temp)
	print(type(temp))

你会发现,输出的格式,双引号全变成单引号了,并且是 <class 'str'> 类型

{'name':'张三','age':18}
{'name':'李四','age':20}

处理数据: 对象存入redis后,都是字符串的形式,想到的是字符串转json,使用 json.loads() 这个函数,但是使用这个函数,就会出现以下问题:json.decoder.JSONDecodeError: Expecting property name enclosed in double问题在于json里只能用双引号,不能用单引号!

通过 eval 就可以转出来:

list = rdb.hgetall('student')
for x in list:
	temp = eval(rdb.hget('student', x).decode('utf-8'))
	print(type(temp))

你会发现类型为 <class 'dict'>

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Python,使用Redis哈希数据结构可以通过redis-py库进行操作。以下是一些常用的哈希操作方法: 1. hset(name, key, value): 在指定的哈希设置给定键的值。例如,`rediscli.hset('hms1', 'x1', 'tr1')`将在名为'hms1'的哈希设置键'x1'的值为'tr1'。 2. hget(name, key): 获取指定哈希给定键的值。例如,`rediscli.hget('hms1', 'x1')`将返回名为'hms1'的哈希键'x1'的值。 3. hmset(name, mapping): 在指定的哈希设置多个键值对。例如,`rediscli.hmset("hms2", {'b1': 'x1', 'b2': 'x2'})`将在名为'hms2'的哈希设置键'b1'的值为'x1',键'b2'的值为'x2'。 4. hmget(name, keys): 获取指定哈希多个键的值。例如,`rediscli.hmget(name='hms2', keys=['b1', 'b2'])`将返回名为'hms2'的哈希键'b1'和键'b2'的值。 5. hgetall(name): 获取指定哈希所有键值对。例如,`rediscli.hgetall("hms2")`将返回名为'hms2'的哈希所有键值对。 6. hlen(name): 获取指定哈希键值对的数量。例如,`rediscli.hlen('hms2')`将返回名为'hms2'的哈希键值对的数量。 7. hkeys(name): 获取指定哈希所有键的列表。例如,`rediscli.hkeys('hms2')`将返回名为'hms2'的哈希所有键的列表。 8. hvals(name): 获取指定哈希所有值的列表。例如,`rediscli.hvals('hms2')`将返回名为'hms2'的哈希所有值的列表。 9. hexists(name, key): 检查指定哈希是否存在给定键。例如,`rediscli.hexists('hms2', 'x1')`将返回名为'hms2'的哈希是否存在键'x1'。 10. hincrby(name, key, amount=1): 将指定键的值增加指定的数量。例如,`rediscli.hincrby('hms3', 'km1', amount=2)`将名为'hms3'的哈希键'km1'的值增加2。 以上是一些常用的Python Redis哈希操作方法,可以根据需要选择适合的方法进行操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值