redis操作
数据库有:
1)关系型数据库(mysql,sqlserver等存贮表信息)
2)非关系型数据库(没有表结构没有限制,存储形式key-value,速度快)------->memcache(数据存在内存上),redis(数据存在内存里),mongodb(数据存在磁盘上)
3)安装redis模块,pip install redis import redis运行没有报错则安装成功
redis存储session信息
===================================================================
import redis
a=redis.Redis(host='211.149.218.16',port=6379,passwd='123456',db=1)
1)a.set('sas','sadasd') 添加
2)print(a.get('sas').decode()) 获取数据 redis取出来的数据都是二进制类型的,所以要转成字符串
3)a.setex('key1','values1',10) 指定key的失效时间,以秒为单位
4)a.delete('sas') 删除
=====================================================================
import redis
a=redis.Redis(host='211.149.218.16',port=6379,passwd='123456',db=1)
1)a.hset('session','lyj','12345')
a.hset('session','lij','12345')
a.hset('session','lpo','12345') 添加
2)print(a.hget('session','lyj')) 运行结果:b'12345' 字符串 .decode() 获取
3)print(a.hgetall('session')) 获取全部
运行结果(字典):
{b'lij': b'12345', b'hedy': b'123456', b'lyj': b'12345', b'lpo': b'12345', b'ylx': b'111111'}
循环每一项的值,把字典中的二进制数据变成正常的字典
all=a.hgetall('session')
all_new={}
for k,v in all.items():
k=k.decode()
v=v.decode()
all_new[k]=v
print(all_new)
运行结果:{'ylx': '111111', 'lyj': '12345', 'lpo': '12345', 'hedy': '123456', 'lij': '12345'}
4)hash类型没有过期时间
5)a.set('sa:as:as:asas','sgdjsgd') 存在几个:号就在几个文件夹下,有层级关系
6)print(a.keys('x*'))获取以x开头的key值
7)print(a.type('session')) hash类型
print(a.type('lyj')) string类型
8)数据迁移操作 db2 迁移到db8
1、建立两个redis链接
2、获取到所有的key
3、hash string类型判断,使用set或者hset添加
import redis
a=redis.Redis(host='211.149.218.16',port=6379,password='123456',db=2)
b=redis.Redis(host='211.149.218.16',port=6379,password='123456',db=6)
for k in a.keys():
# print(a.type(k)) #运行结果是:b'hash',b'string'
if a.type(k) == b'string':
v1 = a.get(k) #通过key的值取值value
b.set(k,v1)
else:
all_hash_data = a.hgetall(k)
print(all_hash_data) #获取到的是一个字典{b'long': b'ying', b'age': b'20'}
for k1,v2 in all_hash_data.items():
b.hset(k,k1,v2)
==================================================================================
def r(host,passsword,port=6397,db,k,v=None): #port必须是int类型的,value的值可以是空的 ,db不写默认是0
a=redis.Redis(host=host,password=password,port=port,db=db)#连接redis
if v:
a.set(k,v)
res='ok'
else:
res=a.get(k)
if res:
res=res.decode()
else:
print('没有这个值')
a=redis.Redis(host='211.149.218.16',port=6379,password='123456',db=3,k='AS')
================================================================================