Redis hash

hash表现形式上有些像pyhton中的dict,可以存储一组关联性较强的数据 , redis中Hash在内存中的存储格式如下图:

  • hset(name, key, value)

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

  • 1# 参数: 2 # name,redis的name 3 # key,name对应的hash中的key 4 # value,name对应的hash中的value 5 6# 注: 7 # hsetnx(name, key, value),当name对应的hash中不存在当前key时则创建(相当于添加)

    View Code

  • hmset(name, mapping)

  • # 在name对应的hash中批量设置键值对

  • 1# 参数: 2 # name,redis的name 3 # mapping,字典,如:{'k1':'v1', 'k2': 'v2'} 4 5# 如: 6 # r.hmset('xx', {'k1':'v1', 'k2': 'v2'})

    View Code

  • hget(name,key)

  • # 在name对应的hash中获取根据key获取value

  • # 在name对应的hash中获取多个key的值

  • 1# 参数: 2 # name,reids对应的name 3 # keys,要获取key集合,如:['k1', 'k2', 'k3'] 4 # *args,要获取的key,如:k1,k2,k3 5 6# 如: 7 # r.mget('xx', ['k1', 'k2']) 8 # 或 9 # print r.hmget('xx', 'k1', 'k2')

    View Code

  • hgetall(name)

  • # 获取name对应``hash``的所有键值

  • hlen(name)

  • # 获取name对应的hash中键值对的个数

  • hkeys(name)

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

  • hvals(name)

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

  • hexists(name, key)

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

  • hdel(name,*keys)

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

  • hincrby(name, key, amount=1)

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

  • 1# 参数: 2 # name,redis中的name 3 # key, hash对应的key 4 # amount,自增数(整数)

    View Code

  • hincrbyfloat(name, key, amount=1.0)

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

  • 1# 参数: 2 # name,redis中的name 3 # key, hash对应的key 4 # amount,自增数(浮点数) 5 6# 自增name对应的hash中的指定key的值,不存在则创建key=amount

    View Code

  • hscan(name, cursor=0, match=None, count=None)

  • # 增量式迭代获取,对于数据大的数据非常有用,hscan可以实现分片的获取数据,并非一次性将数据全部获取完,从而放置内存被撑爆

  • 1# 参数: 2 # name,redis的name 3 # cursor,游标(基于游标分批取获取数据) 4 # match,匹配指定key,默认None 表示所有的key 5 # count,每次分片最少获取个数,默认None表示采用Redis的默认分片个数 6 7# 如: 8 # 第一次:cursor1, data1 = r.hscan('xx', cursor=0, match=None, count=None) 9 # 第二次:cursor2, data1 = r.hscan('xx', cursor=cursor1, match=None, count=None) 10 # ... 11 # 直到返回值cursor的值为0时,表示数据已经通过分片获取完毕

    View Code

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

  • # 利用yield封装hscan创建生成器,实现分批去redis中获取数据

  • 1# 参数: 2 # match,匹配指定key,默认None 表示所有的key 3 # count,每次分片最少获取个数,默认None表示采用Redis的默认分片个数 4 5# 如: 6 # for item in r.hscan_iter('xx'): 7 # print item

    View Code

点赞
收藏

评论区

加载中...

相关推荐

MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1

文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s

Oracle 分组与拼接字符串同时使用

SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(

MySQL部分从库上面因为大量的临时表tmp_table造成慢查询

背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_

皕杰报表之UUID

​在我们用皕杰报表工具设计填报报表时,如何在新增行里自动增加id呢?能新增整数排序id吗?目前可以在新增行里自动增加id,但只能用uuid函数增加UUID编码,不能新增整数排序id。uuid函数说明:获取一个UUID,可以在填报表中用来创建数据ID语法:uuid()或uuid(sep)参数说明:sep布尔值,生成的uuid中是否包含分隔符'',缺省为

手写Java HashMap源码

HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程HashMap的使用教程22

2020年前端实用代码段,为你的工作保驾护航

有空的时候,自己总结了几个代码段,在开发中也经常使用,谢谢。1、使用解构获取json数据let jsonData  id: 1,status: "OK",data: 'a', 'b';let  id, status, data: number   jsonData;console.log(id, status, number )