redis相关

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)

 

上一篇:java中传参中有%导致模糊查询查所有的问题


下一篇:json_encode()与json_decode()的区别