Python × ElastiCache for Redis:入门简易教程2-哈希类型-

首先

本文是上一篇文章的延续。

 

请参考先前的文章。

安装库
连接数据库

这次我们将讨论如何使用ElastiCache for Redis处理哈希类型的方法。

散列类型:向Redis写入

哈希类型可以对应一个键拥有多个字段和数值的组合。

使用hset进行基本写入的方法如下所示。

import redis
redis_host = 'エンドポイント'
redis_port = 6379
client = redis.Redis(host=redis_host, port=redis_port,decode_responses=True, ssl=True)

key = "id1"
mapping = {"a":"1"}
client.hset(key, mapping=mapping)

Redis无法直接存储int类型、float类型或None,而是需要将其保存为字符串。

def to_str(value):
    """
    int型とfloat型を識別して、型情報と共に文字列型として保存し、Noneを"null"として保存する関数
    """
    if isinstance(value, int):
        return f"int:{field_value}"
    elif isinstance(value, float):
        return f"float:{field_value}"
    elif value == None:
        return "null"
    return value
    
pre_mapping = {"a",1,"b":None}
mapping = {field: to_str(value) for field, value in pre_mapping.items()}
client.hset(key, mapping=mapping)

哈希类型:从Redis读取

使用hgetall函数进行散列类型的读取如下所示。
如前所述,如果要将字符串类型的int型或float型变量还原为其原始类型,则可以使用cast_value。

def cast_value(value):
    """
    int型とfloat型のprefixを識別して本来の型にキャストし、"null"をNoneに戻す関数
    """
    if value.startswith('int:'):
        return int(value.split(':', 1)[1])
    elif value.startswith('float:'):
        return float(value.split(':', 1)[1])
    elif value == "null":
        return None
    return value
    
key = "id1"
res = client.hgetall(key)
res = {field: cast_value(value) for field, value in res.items()}

最後

以上是有关Python×ElastiCache for Redis中哈希类型的使用说明。

一旦本次Python×AWS数据库的说明在本节的日历活动结束了,但是如果有机会的话,我想要整理一篇关于解释(1) RDS和MongoDB编程的文章,并进行(2) 速度测试。

    前回までの類似記事はこちら

 

广告
将在 10 秒后关闭
bannerAds