今天工作群里,有小伙伴问了一个问题,从Redis获取的数据,一会是0,一会是OK。
这引起了我们对Redis数据存储和读写的疑问。
以下是整理的一些技术研究内容。
在 Redis 中,所有的数据存储都是基于字符串的。无论你插入的是 String、int 还是 DateTime 类型的数据,最终都会以字符串的形式存储在 Redis 中。具体来说:
String 类型数据:
int 类型数据:
DateTime 类型数据:
具体的操作示例如下:
插入数据
import redis from datetime import datetime # 连接到 Redis r = redis.StrictRedis(host='localhost', port=6379, db=0) # 存储 String 数据 r.set('my_string', 'Hello, Redis!') # 存储 int 数据 r.set('my_int', str(12345)) # 存储 DateTime 数据 now = datetime.now().isoformat() r.set('my_datetime', now)
取出数据
# 取出 String 数据 my_string = r.get('my_string').decode('utf-8') # 取出 int 数据 my_int = int(r.get('my_int')) # 取出 DateTime 数据 my_datetime = datetime.fromisoformat(r.get('my_datetime').decode('utf-8'))
数据类型转换:当你从 Redis 取出数据时,Redis 返回的是字节字符串,你需要根据存储的数据类型进行相应的转换:
这种方式虽然简单直接,但需要在应用层处理数据的序列化和反序列化。
我们可以根据需要选择不同的序列化格式(如 JSON、Protobuf 等)来存储更复杂的数据结构。