数据库 关系型数据 例如mysql,有表还有约束条件等
非关系型 k-v形式 memcache 存在内存中 redis 存在内存 mongodb 数据存在磁盘
import redis #string类型 #1.连接redis r=redis.Redis(host='200.149.208.16',port=6379,password='123456',db=1) #set 写数据 r.set('lsy_token','2018-hh')#set数据,写数据 #get获取数据 print(r.get('lsy_token').decode())#redis里取出的数据都是bytes类型,所以用decode转化成字符串 #delete删除数据 r.delete('lsy_token')#删除 #setex设置失效时间 r.setex('lsy_token','2018-hh',20)#指定key的失效时间,单位是秒 #set get delete setex 都是针对string类型的 k-v #hash类型 #hset新增数据 r.hset('lsy_session','zhangsan','1223') r.hset('lsy_session','lisi','1223') r.hset('lsy_session','wangwu','1223') r.hset('lsy_session','liuli','1223') #hget获取数据 print(r.hget('lsy_session','111').decode())#传两个值,获得数据 redis_data=r.hgetall('lsy_session') #获取hash类型里的所有数据 #字典没有decode类型,怎么办---迭代 all_data={} for k,v in redis_data.items():#把hash类型所有的数据转化成正常的字典 k=k.decode() v = v.decode() all_data[k]=v print(redis_data) print(all_data) #hash类型没有过期时间 #设置文件分层 r.set('szz:homeword:lsy','没交')#设置文件夹分类,层级, r.set('szz:homeword:张三','交了') r.set('李四','交了') print(r.keys())#打印所有的key print(r.keys('lsy*'))#获取以lsy开头的key print(r.type('lsy_session'))#获取key的类型
封装redis函数
import redis def op_redis(host,password,k,v=None,port=6379,db=0): r=redis.Redis(host=host,password=password,port=port,db=db) if v: r.set(k,v)#有传key就说明是set操作 res='ok' else: res=r.get(k) if res:#判断有没有get到数据 res=res.decode()#没有传key就说明是get操作,如果传的key不存在返回None,None没有decode else: res=None return res