DEV Community

drake
drake

Posted on

不同版本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
Enter fullscreen mode Exit fullscreen mode
  • 现在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


Enter fullscreen mode Exit fullscreen mode

Top comments (0)