redis基本命令hash

1.hset

hset(name,key,value)

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

import redis,time
r = redis.Redis(host='localhost',port=6379,decode_responses=True)
r.hset('hash1','name','wl')  # 设置值
print(r.hkeys('hash1'))  # 取hash中的所有key  ['name']
print(r.hget('hash1','name'))  # 取hash中的name值  wl

2.hsetenx

hsetnx(name,key,value)

设置那么中对应的键值对,是只能新建攸,亲。不能修改

import redis,time

r = redis.Redis(host='localhost',port=6379,decode_responses=True)
r.hsetnx('hash1','name','wl')  # 设置值
r.hsetnx('hash1','name','wl1')  # 设置值
print(r.hget('hash1','name'))  # wl

3.hmset

hmset(name,mapping),批量设置。

import redis,time

r = redis.Redis(host='localhost',port=6379,decode_responses=True)
r.hmset('hash1',{'name':'wl','name1':'wl1'})  # 设置值
print(r.hgetall('hash1'))  # {'name1': 'wl1', 'name': 'wl'}

4.hget和hmget

  • hget(name,key):获取1个key对应的值
  • hmget(name,key,args):获取多个个key对应的值
import redis,time

r = redis.Redis(host='localhost',port=6379,decode_responses=True)
r.hmset('hash1',{'name':'wl','name1':'wl1'})  # 设置值
print(r.hget('hash1','name'))  # wl
print(r.hmget('hash1','name','name1'))  #  ['wl', 'wl1']

5.hgetall

hgetall(name)—获取name中所有的键值对

import redis,time

r = redis.Redis(host='localhost',port=6379,decode_responses=True)
r.hmset('hash1',{'name':'wl','name1':'wl1'})  # 设置值
print(r.hgetall('hash1'))  # {'name1': 'wl1', 'name': 'wl'}

6.hlen

hlen(name)—获取name的长度。

import redis,time

r = redis.Redis(host='localhost',port=6379,decode_responses=True)
r.hmset('hash1',{'name':'wl','name1':'wl1'})  # 设置值
print(r.hlen('hash1'))  # 获取hash中键值对的个数   2

7.hkeys

hkeys(name)—获取name中所有的个数。

import redis,time

r = redis.Redis(host='localhost',port=6379,decode_responses=True)
r.hmset('hash1',{'name':'wl','name1':'wl1'})  # 设置值
print(r.hkeys('hash1'))  # ['name', 'name1']

8.hvals

hvals(name)—获取name中所有的value。

import redis,time

r = redis.Redis(host='localhost',port=6379,decode_responses=True)
r.hmset('hash1',{'name':'wl','name1':'wl1'})  # 设置值
print(r.hvals('hash1'))  # ['wl', 'wl1']

9.hexists

hexists(name,key)

判断key对应的值是否在name中,就是判断成员是否存在。

import redis,time

r = redis.Redis(host='localhost',port=6379,decode_responses=True)
r.hmset('hash1',{'name':'wl','name1':'wl1'})  # 设置值
print(r.hexists('hash1','name'))  # True
print(r.hexists('hash1','name2'))  # False

10.hdel

hdel(name,*key)—删除指定的键值对。

import redis,time

r = redis.Redis(host='localhost',port=6379,decode_responses=True)
r.hmset('hash1',{'name':'wl','name1':'wl1'})  # 设置值
r.hdel('hash1','name','name1')
print(r.hgetall('hsah1'))  # {}

11.hincrby

1)hincrby(name,key,amount=1),自增自减函数,将key对应的值自增或者减1。复数为减。

import redis,time

r = redis.Redis(host='localhost',port=6379,decode_responses=True)
r.hmset('hash1',{'name':'wl','name1':'wl1','age':21})  # 设置值
r.hincrby('hash1','age',amount=1)
print(r.hgetall('hash1'))  # {'name1': 'wl1', 'age': '22', 'name': 'wl'}

2)hincrbyfloat(name,key,amount=1),自增自减函数,将key对应的值自增或者减,浮点数。复数为减。

import redis,time

r = redis.Redis(host='localhost',port=6379,decode_responses=True)
r.hmset('hash1',{'name':'wl','name1':'wl1','age':21.0})  # 设置值
r.hincrbyfloat('hash1','age',amount=1.0)
print(r.hgetall('hash1'))  # {'name1': 'wl1', 'age': '22', 'name': 'wl'}

12.hscan(name,cursor=0,match=None,count=1)

取值查看,分片阅读。这种读取方式对于大数据量的读取非常有用,分片的读取数据可以有效的防治一次性读入超量数据导致内存撑爆。

参数:

cursor:游标-基于游标获取数据

match:匹配指定的key,None表示所有。

count:每次读取的个数,None表示redis默认的读取个数。

import redis,time

r = redis.Redis(host='localhost',port=6379,decode_responses=True)
r.hmset('hash1',{'name':'wl','name1':'wl1','age':21.0})  # 设置值
r.hincrbyfloat('hash1','age',amount=1.0)
print(r.hscan('hash1',cursor=0,match=None,count=1))
# (0, {'name': 'wl', 'name1': 'wl1', 'age': '22'})

13.hscan_iter

hscan_iter(name,match=None,count=None)

使用yield封装hash创建生成器,实现分批获取数据。

import redis,time

r = redis.Redis(host='localhost',port=6379,decode_responses=True)
r.hmset('hash1',{'name':'wl','name1':'wl1','age':21.0})  # 设置值
r.hincrbyfloat('hash1','age',amount=1.0)

for item in r.hscan_iter('hash1'):
    print(item)
# ('name1', 'wl1') ('age', '22') ('name', 'wl')
posted @ 2019-01-14 22:56  炫风真是风  阅读(1485)  评论(0编辑  收藏  举报