《Redis操作Python系列、redis 基本命令 hash|优快云创作打卡》

本文介绍了Redis中哈希类型的应用场景,如购物车功能,并详细讲解了如何使用Python进行操作,包括单个键值对的增加与修改、取出所有键值对、获取键或值、判断成员存在、删除键值对以及自增自减整数等操作。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

目录

导读

应用场景·购物车

单个增加--修改(单个取出)——没有就新增,有的话就修改

增加与取出

取出所有的键值对

得到所有键值对的格式 hash长度

得到所有的keys(类似字典的取所有keys)

得到所有的value(类似字典的取所有value) 

判断成员是否存在(类似字典的in) 

删除键值对

自增自减整数(将key对应的value--整数 自增1或者2,或者别的整数 负数就是自减)


导读

hash类型是一个string类型的field和value的映射表,每个 hash 可以存储 232 - 1 键值对(40多亿),hash类型主要有以下应用场景。

应用场景·购物车

以用户id为key,商品id为field,商品数量为value,恰好构成了购物车的3个要素。

创建测试类【demo10.py】

 

单个增加--修改(单个取出)——没有就新增,有的话就修改

hset(name, key, value)

name对应的hash中设置一个键值对(不存在,则创建;否则,修改)

参数:

  • name - redis的name
  • key - name对应的hash中的key
  • value - name对应的hash中的value

注:hsetnx(name, key, value) 当name对应的hash中不存在当前key时则创建(相当于添加)

import redis

r = redis.Redis(host='localhost', port=6379, decode_responses=True)
r.flushall()
r.hset("myhset", "护手霜", "29.9")
r.hset("myhset", "洗面奶", "69.9")
print(r.hkeys("myhset"))#取hash中所有的key
print(r.hget("myhset", "护手霜"))#单个取hash的key对应的值
print(r.hmget("myhset", "护手霜", "洗面奶"))#多个取hash的key对应的值
r.hsetnx("myhset", "洗面乳", "9.9")#只能新建
print(r.hget("myhset", "洗面乳"))

 

增加与取出

import redis

r = redis.Redis(host='localhost', port=6379, decode_responses=True)
r.flushall()
r.hset("myhset","赛亚人","1000万战斗力")
print(r.hget("myhset","赛亚人"))

 

取出所有的键值对

hgetall(name)
import redis

r = redis.Redis(host='localhost', port=6379, decode_responses=True)
r.flushall()
r.hset("myhset","赛亚人1","1000万战斗力")
r.hset("myhset","赛亚人2","2000万战斗力")
r.hset("myhset","赛亚人3","3000万战斗力")
r.hset("myhset","赛亚人4","4000万战斗力")
print(r.hgetall("myhset"))

得到所有键值对的格式 hash长度

hlen(name)
import redis

r = redis.Redis(host='localhost', port=6379, decode_responses=True)
r.flushall()
r.hset("myhset","赛亚人1","1000万战斗力")
r.hset("myhset","赛亚人2","2000万战斗力")
r.hset("myhset","赛亚人3","3000万战斗力")
r.hset("myhset","赛亚人4","4000万战斗力")
r.hset("myhset","赛亚人5","5000万战斗力")
print(r.hgetall("myhset"))
print(r.hlen("myhset"))

得到所有的keys(类似字典的取所有keys)

hkeys(name)

获取name对应的hash中所有的key的值

import redis

r = redis.Redis(host='localhost', port=6379, decode_responses=True)
r.flushall()
r.hset("myhset","赛亚人1","1000万战斗力")
r.hset("myhset","赛亚人2","2000万战斗力")
r.hset("myhset","赛亚人3","3000万战斗力")
r.hset("myhset","赛亚人4","4000万战斗力")
r.hset("myhset","赛亚人5","5000万战斗力")
print(r.hgetall("myhset"))
print(r.hkeys("myhset"))

得到所有的value(类似字典的取所有value) 

hvals(name)

获取name对应的hash中所有的value的值

import redis

r = redis.Redis(host='localhost', port=6379, decode_responses=True)
r.flushall()
r.hset("myhset","赛亚人1","1000万战斗力")
r.hset("myhset","赛亚人2","2000万战斗力")
r.hset("myhset","赛亚人3","3000万战斗力")
r.hset("myhset","赛亚人4","4000万战斗力")
r.hset("myhset","赛亚人5","5000万战斗力")
print(r.hgetall("myhset"))
print(r.hvals("myhset"))

判断成员是否存在(类似字典的in) 

hexists(name, key)

检查 name 对应的 hash 是否存在当前传入的 key

import redis

r = redis.Redis(host='localhost', port=6379, decode_responses=True)
r.flushall()
r.hset("myhset","赛亚人1","1000万战斗力")
r.hset("myhset","赛亚人2","2000万战斗力")
r.hset("myhset","赛亚人3","3000万战斗力")
r.hset("myhset","赛亚人4","4000万战斗力")
r.hset("myhset","赛亚人5","5000万战斗力")
print(r.hgetall("myhset"))
print(r.hexists("myhset","赛亚人2"))
print(r.hexists("myhset","赛亚人8"))

删除键值对

hdel(name,*keys)

将name对应的hash中指定key的键值对删除

import redis

r = redis.Redis(host='localhost', port=6379, decode_responses=True)
r.flushall()
r.hset("myhset","赛亚人1","1000万战斗力")
r.hset("myhset","赛亚人2","2000万战斗力")
r.hset("myhset","赛亚人3","3000万战斗力")
r.hset("myhset","赛亚人4","4000万战斗力")
r.hset("myhset","赛亚人5","5000万战斗力")
r.hdel("myhset","赛亚人4")
print(r.hgetall("myhset"))
print(r.hexists("myhset","赛亚人4"))

自增自减整数(将key对应的value--整数 自增1或者2,或者别的整数 负数就是自减)

hincrby(name, key, amount=1)

自增name对应的hash中的指定key的值,不存在则创建key=amount

参数:

  • name - redis中的name
  • key - hash对应的key
  • amount - 自增数(整数)
import redis

r = redis.Redis(host='localhost', port=6379, decode_responses=True)
r.flushall()
r.hset("myhset","赛亚人1","1000")
r.hset("myhset","赛亚人2","2000")
r.hset("myhset","赛亚人3","3000")
r.hset("myhset","赛亚人4","4000")
r.hset("myhset","赛亚人5","5000")
r.hincrby("myhset","赛亚人1")
r.hincrby("myhset","赛亚人1",1000)
print(r.hgetall("myhset"))

希望能大家有一定的帮助,欢迎一键三连哦。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小雨下雨的雨

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值