潇洒郎:python redis 传输持久化对象:pickle模块的使用

潇洒郎:python redis 传输持久化对象:pickle模块的使用,第1张

pickle持久化:
import pickle
import redis

db = redis.Redis(host='localhost', port=6379, password='123456')


class Eg:
    def __init__(self, userId:str, username:str):
        self.userId= userId
        self.username= username
    def foo(self):
        return f'userId: {self.userId}, username: {self.username}'

def set(key, value):
    db.set(key, value)

def get(key):
    return db.get(key)


db.set('a', pickle.dumps(Eg('12345', 'xxs')))
db.set('b', pickle.dumps(Eg('54321', 'lhc')))

ad= get('a')
bd= get('b')


obj1 = pickle.loads(ad)
obj2 = pickle.loads(bd)

print(obj1.userId)     # 12345
print(obj1.username)   # xxs
print(obj1.foo())
print(obj2.userId)
print(obj2.username)
print(obj2.foo())

shelve持久化:
import shelve

'持久化会生成3个文件:*.bak, *.dat *.dir'

## 定义类
class  Student:
    def  __init__(self, name, age):
        self.name = name
        self.age = age

    def  __str__(self):
        return  self.name

# 储存
def  write_shelve():
    s = Student('Tom', 20) #构造类型的实例
    db = shelve.open('User') #构造打开数据文件
    db['s'] = s
    db.close() # 关闭数据文件

# 读取
def  read_shelve():
    db = shelve.open('User') #打开数据文件
    st = db['s']
    print(st)
    print(st.name)
    print(st.age)
    db.close()

if  __name__  ==  '__main__':
    write_shelve()
    read_shelve()

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/langs/569978.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-04-09
下一篇 2022-04-09

发表评论

登录后才能评论

评论列表(0条)

保存