Flask usa la base de datos redis, la forma de usar el grupo de conexiones, el conjunto puede almacenar datos en qué formato

¿Cómo almacenar formatos de datos comunes como diccionarios y listas en la base de datos redis?

Esto está en la base de datos redis, que tiene una sintaxis especial.

Para el conjunto en redis, el valor pasado solo puede ser una cadena y no se aceptan otros formatos de datos.

Podemos usar json.dumps(value) para convertir el valor en una cadena json y luego almacenarlo.

Al obtener, json.loads() se ejecuta en el resultado de get, de modo que se pueda realizar el formato de los datos almacenados en el conjunto, y get pueda recuperar el formato de datos original.

1. apps/config.py almacena los parámetros necesarios para conectarse a redis

REDIS_DB_URL={ 
    'host':'127.0.0.1', 
    'puerto':6379, 
    'db':0, 
    'max_connections':100 
}

2, aplicaciones/util/redis.py operación redis

import redis
from apps.config import REDIS_DB_URL
import json
class OwerRedis:
    __POOL=redis.ConnectionPool(**REDIS_DB_URL)
    @property
    def __connect(self):
        r = redis.Redis(connection_pool=self.__POOL,decode_responses=True)
        return r
    def set(self,key,value,ex=None):
        '''
        :param key:  存进redis中的键
        :param value:  存近redis中的值
            1、通过json将value转成json字符串,这样value就可以是字典、列表等数据格式了
            2、在get的时候,把json字符串转回数据格式,就可以直接使用
            3、这样就可以不用去弄列表或字典的存和取的方法了
        :param ex: 设置过期时间,单位秒,例子:7*24*60*60
        :return:
        '''
        try:
            #使用json将传递进来的value序列化成json字符串,这样就可以存字典和列表等
            value = json.dumps(value)
            if ex:
                ret=self.__connect.set(key,value,ex=ex)
            else:
                ret=self.__connect.set(key,value)
            return ret
        except Exception as e:
            return str(e)
    def get(self,key):
        '''
        :param key: 要取值的键
            1、因为在存值前,将值转成json字符串存进redis
            2、所以取值后,将值转回原来的数据格式
        :return:
        '''
        try:
            ret = self.__connect.get(key)
            if ret == None:
                #当取的key不存在时,return None,json.loads必须传递字符串
                return ret
            ret = json.loads(ret)
            return ret
        except Exception as e:
            return str(e)

3. Uso

from apps.util.redis import OwerRedis

r = OwerRedis()
r.set('lhz',{'name':'lhz','age':12,'sex':'男'})
dic = r.get('lhz')
print(type(dic))
print(dic.get('name'))
print(dic.get('age'))
print(dic.get('sex'))

Imprimir resultado:

<clase 'dict'>
lhz
12

Supongo que te gusta

Origin blog.csdn.net/weixin_46371752/article/details/127587013
Recomendado
Clasificación