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

目录

导读

应用场景·购物车

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

增加与取出

取出所有的键值对

得到所有键值对的格式 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个要素。

《Redis操作Python系列、redis 基本命令 hash|CSDN创作打卡》_第1张图片

创建测试类【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", "洗面乳"))

《Redis操作Python系列、redis 基本命令 hash|CSDN创作打卡》_第2张图片 

增加与取出

import redis

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

《Redis操作Python系列、redis 基本命令 hash|CSDN创作打卡》_第3张图片 

取出所有的键值对

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"))

《Redis操作Python系列、redis 基本命令 hash|CSDN创作打卡》_第4张图片

得到所有的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"))

《Redis操作Python系列、redis 基本命令 hash|CSDN创作打卡》_第5张图片

判断成员是否存在(类似字典的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"))

《Redis操作Python系列、redis 基本命令 hash|CSDN创作打卡》_第6张图片

删除键值对

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"))

《Redis操作Python系列、redis 基本命令 hash|CSDN创作打卡》_第7张图片

自增自减整数(将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"))

《Redis操作Python系列、redis 基本命令 hash|CSDN创作打卡》_第8张图片

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

你可能感兴趣的:(Redis_python用法,redis,哈希算法,python)