python - hash類型操作


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:\Python27\python.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']


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM