MST
星途 面试题库

面试题:Redis字典API之中等难度:哈希表操作

请描述如何使用Redis字典API(以哈希表为例)来存储一个用户信息,包含用户名、年龄和邮箱。并编写示例代码(语言自选)展示如何添加、获取和更新这些信息。
48.1万 热度难度
数据库Redis

知识考点

AI 面试

面试题答案

一键面试

使用Redis哈希表存储用户信息

  1. 存储逻辑
    • 使用Redis哈希表(Hash)结构来存储用户信息,将用户的不同属性作为哈希表的字段(field),属性值作为哈希表的值(value)。例如,用户名作为一个字段,其对应的字符串值作为值;年龄作为一个字段,年龄数值作为值;邮箱同理。
  2. 示例代码(Python with redis - py库)
import redis

# 连接Redis
r = redis.Redis(host='localhost', port=6379, db = 0)

# 添加用户信息
def add_user_info(user_id, username, age, email):
    r.hset(user_id, 'username', username)
    r.hset(user_id, 'age', age)
    r.hset(user_id, 'email', email)

# 获取用户信息
def get_user_info(user_id):
    username = r.hget(user_id, 'username')
    age = r.hget(user_id, 'age')
    email = r.hget(user_id, 'email')
    return {
        'username': username.decode('utf - 8') if username else None,
        'age': int(age) if age else None,
        'email': email.decode('utf - 8') if email else None
    }

# 更新用户信息
def update_user_info(user_id, **kwargs):
    for key, value in kwargs.items():
        r.hset(user_id, key, value)


# 示例使用
user_id = 'user:1'
add_user_info(user_id, 'John Doe', 30, 'johndoe@example.com')
print(get_user_info(user_id))
update_user_info(user_id, age = 31)
print(get_user_info(user_id))
  1. 代码解释
    • 添加用户信息add_user_info函数使用hset方法,每次设置一个用户属性。user_id作为哈希表的键,属性名(如usernameageemail)作为字段,属性值作为对应的值。
    • 获取用户信息get_user_info函数使用hget方法分别获取每个属性值。由于从Redis获取的值是字节类型,所以需要进行解码(对于字符串类型)或转换(对于数值类型)。
    • 更新用户信息update_user_info函数接受可变关键字参数,遍历这些参数并使用hset方法更新相应的字段值。