【Redis】数据库相关操作

一、前提

  在 cmd 中已执行 pip install redis  安装完成 数据库(redis)模块

二、数据库相关

  1. 数据库分为关系型数据库、非关系型数据库

    关系型数据库:mysql、oracle、sql server、sqlite
    非关系型数据库(Nosql),以键值对存储(key-value):mongdb、redis

  2. Redis操作

 1 import redis
 2 
 3 r = redis.Redis(host="*.*.*.*",
 4                 password="**",
 5                 port=6379,
 6                 db=0,
 7                 decode_responses=True)# 解决获取的值类型是bytes字节问题,自动转换为字符串    
 8 
 9 #str
10 r.expire("tqz_stu",100) #对key设置过期时间
11 r.set("CHJ_Test","852c951d",100) #新增和修改
12 print(r.get("CHJ_Test")) #获取数据
13 r.delete("CHJ_Test") #删除数据
14 
15 #二进制,字节型
16 result = r.get("CHJ_Test")
17 result.decode()#若连接redis时已自动转换字符串则不需要执行.decode(),否则需要执行.decode() 转换为字符串
18 r.exists("CHJ_Test") #它返回的是0和1,0代表不存在,1代表存在
19 r.type("CHJ_Test") #查key的类型
20 
21 #hash 哈希类型 k - v
22 
23 r.hset("tqz_stu","wsc",'{"id":1,"username":"xxx"}') #新增和修改
24 r.hset("tqz_stu","chj",'{"id":2,"username":"chj"}')#新增和修改
25 r.hset("tqz_stu","yhl",'{"id":3,"username":"yhl"}')#新增和修改
26 r.set("tqz:wsc","abc")
27 r.set("tqz:chj","abc1")
28 print(r.hget("tqz_stu","wsc"))
29 d = {}
30 for k,v in r.hgetall("tqz_stu").items():
31     k = k.decode()
32     v = v.decode()
33     d[k] = v
34 print(d)
35 print(r.keys()) #获取当前数据库里面的所有key
36 print(r.keys("*stu*"))
37 r.hdel("tqz_stu","wsc")#删除一个或多个哈希表字段
38 r.delete("tqz_stu")
39 r.flushdb() #只清空当前数据库的数据
40 r.flushall() #清空所有数据库里面的所有数据

  3. redis迁移

 1 import redis
 2 r = redis.Redis(host="*.*.*.*",
 3                 password="*",
 4                 port=6379,
 5                 db=0,
 6                 decode_responses=True)#0-15
 7 
 8 r2 = redis.Redis(host="*",
 9                 password="*",
10                 port=6379,
11                  db=2,
12                 decode_responses=True)#0-15
13 
14 #1、获取所有的key
15 #2、判断key的类型
16 #3、根据key的类型来使用set或者hset
17 
18 for key in r.keys():
19     if r.type(key) == "string":
20         value = r.get(key)
21         r2.set(key,value)
22     elif r.type(key) == "hash":
23         hash_all = r.hgetall(key)
24         for k,v in hash_all.items(): #循环hash类型里面所有的k-v
25             r2.hset(key,k,v)
原文地址:https://www.cnblogs.com/huajie-chj/p/14326018.html