zoukankan      html  css  js  c++  java
  • Redis操作hash

    来自:http://www.cnblogs.com/alex3714/articles/6217453.html

    Hash操作

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

    hset(name, key, value)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # name对应的hash中设置一个键值对(不存在,则创建;否则,修改)
     
    # 参数:
        # name,redis的name
        # key,name对应的hash中的key
        # value,name对应的hash中的value
     
    # 注:
        # hsetnx(name, key, value),当name对应的hash中不存在当前key时则创建(相当于添加)

    hmset(name, mapping)

    1
    2
    3
    4
    5
    6
    7
    8
    # 在name对应的hash中批量设置键值对
     
    # 参数:
        # name,redis的name
        # mapping,字典,如:{'k1':'v1', 'k2': 'v2'}
     
    # 如:
        # r.hmset('xx', {'k1':'v1', 'k2': 'v2'})

    hget(name,key)

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

    hmget(name, keys, *args)

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

    hgetall(name)

    1
    获取name对应hash的所有键值

    hlen(name)

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

    hkeys(name)

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

    hvals(name)

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

    hexists(name, key)

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

    hdel(name,*keys)

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

    hincrby(name, key, amount=1)

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

    hincrbyfloat(name, key, amount=1.0)

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

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

    Start a full hash scan with:

    HSCAN myhash 0

    Start a hash scan with fields matching a pattern with:

    HSCAN myhash 0 MATCH order_*

    Start a hash scan with fields matching a pattern and forcing the scan command to do more scanning with:

    HSCAN myhash 0 MATCH order_* COUNT 1000

     

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    # 增量式迭代获取,对于数据大的数据非常有用,hscan可以实现分片的获取数据,并非一次性将数据全部获取完,从而放置内存被撑爆
     
    # 参数:
        # name,redis的name
        # cursor,游标(基于游标分批取获取数据)
        # match,匹配指定key,默认None 表示所有的key
        # count,每次分片最少获取个数,默认None表示采用Redis的默认分片个数
     
    # 如:
        # 第一次:cursor1, data1 = r.hscan('xx', cursor=0, match=None, count=None)
        # 第二次:cursor2, data1 = r.hscan('xx', cursor=cursor1, match=None, count=None)
        # ...
        # 直到返回值cursor的值为0时,表示数据已经通过分片获取完毕

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

    1
    2
    3
    4
    5
    6
    7
    8
    9
    # 利用yield封装hscan创建生成器,实现分批去redis中获取数据
      
    # 参数:
        # match,匹配指定key,默认None 表示所有的key
        # count,每次分片最少获取个数,默认None表示采用Redis的默认分片个数
      
    # 如:
        # for item in r.hscan_iter('xx'):
        #     print item
  • 相关阅读:
    file is universal (3 slices) but does not contain a(n) armv7s slice error for static libraries on iOS
    WebImageButton does not change images after being enabled in Javascript
    ajax OPTION
    编程遍历页面上所有TextBox控件并给它赋值为string.Empty?
    获取海洋天气预报
    C#线程系列教程(1):BeginInvoke和EndInvoke方法
    js控制只能输入数字和小数点
    Response.AddHeader(,)
    ManualResetEvent的理解
    Convert.ToInt32、int.Parse(Int32.Parse)、int.TryParse、(int) 区别
  • 原文地址:https://www.cnblogs.com/staff/p/9946101.html
Copyright © 2011-2022 走看看