数据库分为关系型数据库和非关系型数据库

关系型数据库:mysql,sqlserver,oralce等,是通过sql 语句操作数据的,数据存在磁盘上

非关系型数据库:nosql,mongodb(数据存在磁盘上),redis,memcache等,数据存在内存里面,不需要sql语句来查语句,以key-value的形式存在

redis分两种类型,一种是string类型,一种是hash类型,两种不同的类型,取数据不一样

import  redis

ip='xxxx'

password='xxx'

port=6379

#连接redis,db一共是15个,连接时,可以选择任意一个你想要选择的,decode_reponse=True,返回的结果是字符串类型的

r=redis.Redis(host=ip,password=password,port=6379,db=3,decode_reponse=True)

#string类型的处理

#新增

r.set(‘zyq’,'tetst',20) #20代表20秒后就删除掉该key,不加的话,就代表永久不删除

r.set('zyq_info','{"name":"zyq","password":"123456"}')   #value可以是json串

 

#查询

res=r.get('zyq')  #传的参数是key值

print(res) #打印结果:tetst

print(r.keys())#获取到所有的key

print(r.keys('*session')) #获取到所有session的key,模糊匹配

#删除

r.delete('zyq')

r.delete('323') #删除不存在的key,不会报错

r.flushdb() #只清空当前数据库里面的数据

r.flushall() #清空数据库里面所有的数据

 

#指定key的过期时间

r.expire('zyq_info',30)

 

 

#哈希类型

如以下的形式:

{

'stu_info':{

'nhy':{'password':123,'money':2323},

'zyq':{'password':123,'money':2323}

}

}

#新增,第一个参数是大key,第二个参数是小key,第三个是value

r.hset(‘stu_info’,'zyq','{'password':123,'money':2323}') 

#需要单独设置过期时间

r.expire('stu_info',20)

 

 

#查询

res=r.hget('stu_info','zyq') #先填写大key,再填写小key

print(r.hgetall('stu_info')) #获取这个key里面所有的内容,以字典的形式返回{‘32’:‘23’}

 

#删除

r.hdel('stu_info','zyq' ) #删除指定的key

r.delete('stu_info')  #删除所有的key

 

#获取key的类型

print(r.type('stu_info'))  #hashl类型或者string类型

 

 

实例说明:

'''
把现在这个redis数据库里面的数据全部整到另外一个redis里面,迁移redis
a 有数据
b 空
连上2个Redis
先从aRedis里面获取到所有的key
然后判断key是什么 类型,根据类型判断使用什么方法
从a redis里面获取到数据,set写入到b redis中
'''

import redis
ip='xxx'
password='22323'
ra=redis.Redis(host=ip,password=password,port=6379,db=10,decode_responses=True)#连接redis
rb=redis.Redis(host=ip,password=password,port=6378,db=10,decode_responses=True)#连接redis

#从a redis中获取所有的key
ra_keys=ra.keys()
# print(ra_keys)
for i in ra_keys:
if ra.type(i)=='string':
rb_values=ra.get(i)
rb.set(i,rb_values)
elif ra.type(i)=='hash':
rb_values=ra.hgetall(i) #获取key里面所有的内容{'aa':as}
for k,v in rb_values:
rb.hset(i,k,v)