Python操作Redis大全( 五 )

五、哈希 hashes
Redis 数据库hash数据类型是一个string类型的key和value的映射表 , 适用于存储对象 。 redis 中每个hash可以存储键值对多达40亿 。 Python的redis模块实现了Redis哈希(Hash)命令行操作的几乎全部命令 , 包括HDEL、HEXISTS、HGET、HGETALL、HINCRBY、HKEYS、HLEN 、HMGET 、HMSET 、HSET 、HSETNX 、HVALS 、HINCRBYFLOAT等命令 。 函数说明如下:

  1. HDEL:删除对应哈希(Hash)表的指定键(key)的字段 , hdel(self, name, key)
  2. HEXISTS:检测哈希(Hash)表对应键(key)字段是否存在 , 返回布尔逻辑 , hexists(self, name, key)
  3. HGET:获取哈希(Hash)指定键(key)对应的值 , hget(self, name, key)
  4. HGETALL:获取哈希(Hash)表的键-值对(key-value pairs),返回python字典类型数据 , hgetall(self, name)
  5. HINCRBY:为哈希表(Hash)指定键(key)对应的值(key)加上指定的整数数值(int , 可为负值)hincrby(self>, name, key, amount=1) , Redis 中本操作的值被限制在 64 位(bit)有符号数字 。
  6. HKEYS:返回哈希表(Hash)对应键(key)的数组(Python称之为列表List) , hkeys(self, name)
  7. HLEN: 获取哈希表(Hash)中键-值对(key-value pairs)个数 , hlen(self, name)
  8. HMGET:获取哈希表(Hash)中一个或多个给点字段的值 , 不存在返回nil(Redis命令行)/None(Python) , hmget(self, name, keys) , 其中keys可以为列表(list)
  9. HMSET:设置对个键-值对(key-value pairs)到哈希表(Hash)中 , python输入值(mapping)为字典(dictionary)类型 , hmset(self, name, mapping)
  10. HSET:为哈希表(Hash)赋值 , 若键(key)存在值(value)则覆盖 , 不存在则创建 , hset(self, name, key, value)
  11. HSETNX:为哈希表(Hash)不存值(value)的键(key)赋值 , 存在操作无效 , 对应值(value)无变化 , hsetnx(self, name, key, value)
  12. HVALS:返回哈希表(Hash)对应值(value)的列表 , hvals(self, name)
  13. HINCRBYFLOAT:为哈希表 key 中的指定字段的浮点数值加上增量 increment, hincrbyfloat(self, name, key, amount=1.0)
示例代码如下:
#!/usr/bin/python# -*- coding:utf-8 -*-# __author__ = 'Jack'pool = redis.ConnectionPool(host='127.0.0.1', port=6379)r = redis.Redis(connection_pool=pool)r.flushall # 清空Redisr.hset('n1', 'k1', 'v1') # hset(name, key, value),name对应的hash中设置一个键值对(不存在 , 则创建;否则 , 修改)print(r.hget('n1', 'k1'))r.hmset('n2', {'k1': 'v1', 'k2': 'v2', 'k3': 'v3'}) # hmset(name, mapping),在name对应的hash中批量设置键值对print(r.hmget('n2', 'k2'))print(r.hgetall('n2')) # 获取name对应hash的所有键值print(r.hlen('n2')) # 获取name对应的hash中键值对的个数print(r.hkeys('n2')) # 获取name对应的hash中所有的key的值print(r.hvals('n2')) # 获取name对应的hash中所有的value的值print(r.hexists('n2', 'k4')) # 检查name对应的hash是否存在当前传入的keyr.hdel('n2', 'k3') # 将name对应的hash中指定key的键值对删除r.hset('n3', 'k1', 1)r.hincrby('n3', 'k1', amount=1) # hincrby(name, key, amount=1),自增name对应的hash中的指定key的value的值 , 不存在则创建key=amountprint(r.hgetall('n3'))输出结果如下:
b'v1'[b'v2']{b'k1': b'v1', b'k2': b'v2', b'k3': b'v3'}3[b'k1', b'k2', b'k3'][b'v1', b'v2', b'v3']False{b'k1': b'2'}