不同版本redis get 获取String类型的数据结构,拿到的值类型不同!

以前从redis中直接get到的数据类型是bytes,即使你存进去的是string secret = self.redis_cli.get(self.redis_key_secret) if secret: logger.info(f'get secret from redis {self.account}') # logger.info(f'secret: {secret}') if isinstance(secret, bytes): secret = secret.decode() return secret 现在redis获取到的对象直接就是string了 当然可能也和redis创建client的方式有关 创建Client的时候多了一行参数decode_responses=True,可能就带来了自动Decode的结果 import redis from config import config import os env = os.environ.get('env') def redis_cli(): redis_conn = redis.StrictRedis( host=config.REDIS_HOST, port=config.REDIS_PORT, db=config.REDIS_DB, username=config.REDIS_USERNAME, password=config.REDIS_PASSWORD, decode_responses=True, ssl=True ) return redis_conn

Jan 15, 2025 - 03:28
不同版本redis get 获取String类型的数据结构,拿到的值类型不同!
  • 以前从redis中直接get到的数据类型是bytes,即使你存进去的是string
        secret = self.redis_cli.get(self.redis_key_secret)
        if secret:
            logger.info(f'get secret from redis {self.account}')
            # logger.info(f'secret: {secret}')
            if isinstance(secret, bytes):
                secret = secret.decode()
            return secret
  • 现在redis获取到的对象直接就是string了
  • 当然可能也和redis创建client的方式有关

创建Client的时候多了一行参数decode_responses=True,可能就带来了自动Decode的结果

import redis
from config import config
import os

env = os.environ.get('env')

def redis_cli():
    redis_conn = redis.StrictRedis(
        host=config.REDIS_HOST,
        port=config.REDIS_PORT,
        db=config.REDIS_DB,
        username=config.REDIS_USERNAME,
        password=config.REDIS_PASSWORD,
        decode_responses=True,
        ssl=True
    )
    return redis_conn