使用Redis哈希表存储用户信息
- 存储逻辑:
- 使用Redis哈希表(Hash)结构来存储用户信息,将用户的不同属性作为哈希表的字段(field),属性值作为哈希表的值(value)。例如,用户名作为一个字段,其对应的字符串值作为值;年龄作为一个字段,年龄数值作为值;邮箱同理。
- 示例代码(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))
- 代码解释:
- 添加用户信息:
add_user_info
函数使用hset
方法,每次设置一个用户属性。user_id
作为哈希表的键,属性名(如username
、age
、email
)作为字段,属性值作为对应的值。
- 获取用户信息:
get_user_info
函数使用hget
方法分别获取每个属性值。由于从Redis获取的值是字节类型,所以需要进行解码(对于字符串类型)或转换(对于数值类型)。
- 更新用户信息:
update_user_info
函数接受可变关键字参数,遍历这些参数并使用hset
方法更新相应的字段值。