# redis也是一个数据库
# 关系型数据库mysq.....
# sql语句
#
# 非关系型数据库nosqlredis......
# 没有sql语句,基本都是 key-value 存储
# redis--数据全部存到内存里面 10w/s 适合做缓存


import redis

redis_info ={
"host": "110.40.129.50",
"password": "REDIS_123456!",
"port": 6380, # 默认6379
"db": 14 # 默认取0的数据库
}
r=redis.Redis(**redis_info) #连接方法1
#conn=redis.Redis(host="110.40.129.50",password="REDIS_123456!",
# port="6380",db="14") #连接方法2

数据类型:
#第一种 string #key,value 看类型,每个不类型不同
r.set("error_count.18612532945",5) #set插入数据 k-v
r.get("error_count.18612532945")#get获取数据
print(r.get("error_count.18612532945")) #结果b'5' 字节类型
print(r.get("error_count.18612532945").decode()) #结果'5' 变成字符串
print(r.ttl("error_count.18612532945"))#查看失效时间,不针对某个类型都可以,通用

r.set("token.18612532945","sdjfjergre",20)#第三个参数可以指定一个key的失效时间,是多少秒,到时间了自动就没了

# r.delete("error_count.18612532945") 删除
print(r.type("error_count.18612532945")) #查看key类型
print("exists",r.exists("error_count.18612532945"))#查看key是否存在,存在返回1 不存在返回0

#第二种 hash类型 是个大字典,嵌套
#hash类型 只能对外面的大key指定失效时间,里面的小key不可以
# {
# "class1":{
# "xiaohong":1,
# "xiaohong2":2
# },
# "clsaa2":{
# "xiaobai":1,
# "xiaobai2":3
# }
# }

插入:
r.hset("clsaa1","xiaohong",{"id":1,"age":18}) #k 里面是小k 存的数据
r.hset("clsaa1","xiaohei",{"id":2,"age":28})
r.hset("clsaa1","zhoujielun",{"id":3,"age":38})

r.hset("clsaa2","zhoujielun1",{"id":4,"age":48})
r.hset("clsaa2","zhoujielun2",{"id":5,"age":58})

d={"lxp02":"{'id':'2','name':'lxp2','sex':'女'}","lxp03":"{'id':'3','name':'lxp3','sex':'女'}"}
r.hmset("students",d) # 直接插入多条数据
取值:
print(r.hget("clsaa1","xiaohei"))#取出指定的
print(r.hgetall("clsaa1"))#取出所有的

删除:
r.hdel("clsaa1","xiaohei")#删除指定的key
r.delete("clsaa1") #删除大类

r.expire("clsaa1",500)#对指定的key设置失效时间
r.hexists("clsaa1","xiaohei") #指定的小key是否存在,判断小key是否存在:hexists
r.hvals("clsaa1")#获取所有value
r.hkeys("clsaa1")#获取所有小key

stus={"zhangqi":"asfewf","zhulixiang":"sdafef"}
# r.hmset("clsaa1",stus)#