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') 

================================================================================

posted @ 2018-01-29 11:22  liyajing  阅读(100)  评论(0编辑  收藏  举报