目录
导读
应用场景·购物车
单个增加--修改(单个取出)——没有就新增,有的话就修改
增加与取出
取出所有的键值对
得到所有键值对的格式 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"))
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"))
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"))
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"))
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"))
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"))
希望能大家有一定的帮助,欢迎一键三连哦。