• python


    Redis在内存中存储hash类型是以name对应一个字典形式存储的

    常用操作

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

    hget(name,key)

    • 在name 对应的hash 中设备键值对

    hset(name, key, value)

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

    hmset(name, mapping)

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

    hmget(name, keys, *args)

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

    hgetall(name)

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

    hlen(name)

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

    hkeys(name)

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

    hvals(name)

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

    hexists(name, key)

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

    hdel(name, *keys)

    #!/usr/bin/env python
    # -*- coding:utf-8 -*-
    # @Time   : 2017/12/5 22:01
    # @Author : lijunjiang
    # @File   : hash.py
    import redis
    
    redis_info = {
        'host': '11.11.11.11',
        'port': 6379
    }
    
    def conncet_redis():
        pool = redis.ConnectionPool(**redis_info)
        try:
            r = redis.Redis(connection_pool=pool)
        except Exception as err:
            raise err
        return r
    
    r = conncet_redis()
    
    r.hset('hash1', 'test1', 'val_1')
    print(r.hget('hash1', 'test1'))
    # val_1
    
    r.hmset('hash1',{'k2':'v2', 'k3':'v3'})
    print(r.hmget('hash1', ['k2', 'k3', 'test1']))
    # ['v2', 'v3', 'val_1']
    
    print(r.hgetall('hash1'))
    # {'test1': 'val_1', 'k3': 'v3', 'kl': 'v1', 'k_l': 'valu', 'k2': 'v2'}
    print(r.hlen('hash1'))
    # 5
    print(r.hkeys('hash1'))
    # ['test1', 'k3', 'k2', 'kl', 'k_l']
    print(r.hvals('hash1'))
    # ['val_1', 'v3', 'v2', 'v1', 'valu']
    print(r.hexists('hash1', 'test1'))
    # True
    print(r.hexists('hash1', 'test2'))
    # False
    print(r.hdel('hash1', 'k1'))
    # 1
    print(r.hgetall('hash1'))
    # {'test1': 'val_1', 'k3': 'v3', 'k2': 'v2'}
    print(r.hlen('hash1'))
    # 3
    
    #########
    C:Python27python.exe D:/Python/redis/hash.py
    val_1
    ['v2', 'v3', 'val_1']
    {'test1': 'val_1', 'k3': 'v3', 'k2': 'v2'}
    3
    ['test1', 'k3', 'k2']
    ['val_1', 'v3', 'v2']
    True
    False
    0
    {'test1': 'val_1', 'k3': 'v3', 'k2': 'v2'}
    3
    
    Process finished with exit code 0
    

    其它操作

    • 根据name删除redis中的任意数据类型

    delete(*names)

    • 检测redis的name是否存在

    exists(name)

    • 根据* ?等通配符匹配获取redis的name

    keys(pattern='*')

    • 为某个name设置超时时间

    expire(name ,time)

    • 重命名

    rename(src, dst)

    • 将redis的某个值移动到指定的db下

    move(name, db))

    • 获取name对应值的类型

    type(name)

    _keys = r.keys()
    print(_keys)
    # ['set_2', 'set_tmp', 'set_3', 'set_name', 'hash1']
    r.delete('set_2')
    _keys = r.keys()
    print(_keys)
    # ['set_tmp', 'set_3', 'set_name', 'hash1']
    
    print(r.keys(pattern= 'set_2'))
    # []
    
    r.move('hash1', 1)
    # [root@Node1 src]# ./redis-cli
    # 127.0.0.1:6379> keys *
    # 1) "set_tmp"
    # 2) "set_3"
    # 3) "set_name"
    # 127.0.0.1:6379> select 1
    # OK
    # 127.0.0.1:6379[1]> keys *
    # 1) "hash1"
    # 127.0.0.1:6379[1]>
    
    
    r.rename('set_now','set_tmp')
    _keys = r.keys()
    print(_keys)
    r.rename('set_tmp', 'set_now')
    _keys = r.keys()
    print(_keys)
    # ['set_tmp', 'set_3', 'set_name', 'hash1']
    # ['set_now', 'set_3', 'set_name', 'hash1']
    
  • 相关阅读:
    重构的体会——类属性优先移动
    jQuery实现无限循环滚动公告
    jquery菜单左右翻屏效果
    44种IE css bug实例测试总结
    IE6不支持position:fixed的解决方法
    DedeCMS会员排行调用代码,实现连接到会员空间
    程序员们 不要想一辈子靠技术混饭吃
    Load JSON data with jQuery, PHP and MySQL
    mysql 实现行号的方法——如何获取当前记录所在行号
    jQuery精仿手机上的翻牌效果菜单
  • 原文地址:https://www.cnblogs.com/lijunjiang2015/p/7989897.html
Copyright © 2020-2023  润新知