1.数据库分为关系型数据库、非关系型数据库
关系型数据库:mysql、oracle、sql server、sqlite
非关系型数据库(Nosql),以键值对存储(key-value):mongdb、redis
2.redis操作
import redis r = redis.Redis(host="*.*.*.*", password="**", port=6379, db=0, decode_responses=True)# 解决获取的值类型是bytes字节问题,自动转换为字符串 #str r.expire("tqz_stu",100) #对key设置过期时间 r.set("huahua_cookie","352v235235t",100) #新增和修改 print(r.get("huahuat_cookie")) #获取数据 r.delete("huahua_cookie") #删除数据 #二进制,字节型 result = r.get("huahua_cookie") result.decode()#若连接redis时已自动转换字符串则不需要执行.decode(),否则需要执行.decode() 转换为字符串 r.exists("huahua_cookie") #它返回的是0和1,0代表不存在,1代表存在 r.type("huahua_cookie") #查key的类型 #hash 哈希类型 k - v r.hset("tqz_stu","wsc",'{"id":1,"username":"xxx"}') #新增和修改 r.hset("tqz_stu","chj",'{"id":2,"username":"chj"}')#新增和修改 r.hset("tqz_stu","yhl",'{"id":3,"username":"yhl"}')#新增和修改 r.set("tqz:wsc","abc") r.set("tqz:chj","abc1") print(r.hget("tqz_stu","wsc")) d = {} for k,v in r.hgetall("tqz_stu").items(): k = k.decode() v = v.decode() d[k] = v print(d) print(r.keys()) #获取当前数据库里面的所有key print(r.keys("*stu*")) r.hdel("tqz_stu","wsc")#删除一个或多个哈希表字段 r.delete("tqz_stu") r.flushdb() #只清空当前数据库的数据 r.flushall() #清空所有数据库里面的所有数据
3.迁移redis
import redis r = redis.Redis(host="*.*.*.*", password="*", port=6379, db=0, decode_responses=True)#0-15 r2 = redis.Redis(host="*", password="*", port=6379, db=2, decode_responses=True)#0-15 #1、获取所有的key #2、判断key的类型 #3、根据key的类型来使用set或者hset for key in r.keys(): if r.type(key) == "string": value = r.get(key) r2.set(key,value) elif r.type(key) == "hash": hash_all = r.hgetall(key) for k,v in hash_all.items(): #循环hash类型里面所有的k-v r2.hset(key,k,v)