一、Redis介绍
非关系型数据库:mongodb、redis
redis数据全部是存在内存里面的。
redis本身每秒支持30w次的读写,本身性能非常好,
redis重启后,数据会消失,持久性不好,但是可以设置重启前将redis里面的数据存到磁盘,重启后再取过来。
二、Redis用法
String类型的用法:
1 import redis 2 r = redis.Redis(host='xxx.xxx.xx.xxx',password='123456',db=0) #端口号默认6379, redis默认有16个库,为1-15 3 #增,key有唯一性 4 r.set('6j','帅!') #数据库里新增一个值 5 r.set('nhy','帅!') #数据库里新增一个值 6 #修改也是set 7 r.set('nhy','牛!') #数据库里新增一个值 8 #删: 9 r.delete('nhy') #删除 10 11 r.setex('6j','哈哈哈',20) #定时,设置key的失效时间20s,单位是秒 12 13 print(r.get('6j')) #运行结果是byte格式,二进制格式,变回字符串用decode 14 print(r.get('6j')) #获取不存在的key,返回None 15 lj= r.get('6j') #打印出来的结果格式不正确,是byte格式,需要decode一下 16 print(lj.decode()) 17 print(r.get('6j').decode()) 18 s = '呵呵' 19 s.encode() #把字符串转成二进制 20 nhy = b'sdfserewf' 21 nhy.decode() #把bytes类型转成字符串 22 23 24 print(r.keys()) #获取所有的key 25 print(r.keys('n*')) #获取所有n开头的key 26 27 设置文件夹: 28 r.set('天蝎座:lj','hehehe') #生成天蝎座文件夹,key为lj,value为hehehe 29 r.set('session:6j','1毛钱') #生成session文件夹,key为6j,value为1毛钱 30 31 #删除所有key 32 for k in r.keys(): 33 r.delete(k)
hash类型的用法:
除了string类型,还有哈希类型 hash,就和嵌套字典是一样的
# # {{zhangsan:xxx},{lisi:yyy}}
1 r.hset('stu_info',6j,'1m6 100w存款') #增 2 r.hset('stu_info','zhangsan','lang for homework') #增 3 r.hset('stu_info','lisi','find a dog to kit zhangsan') #增 4 5 print(r.hget('stu_info','zhangsan').decode())#指定大key和小key获取对应的数据 6 print(r.hgetall('stu_info')) #获取里面所有的k和v,不能用decode,因为字典没有decode方法 7 #要获取正常的字典,可以如下所示: 8 stu_info = r.hgetall('stu_info') 9 new_stu_info = {} 10 # print(stu_info.items()) 11 for k,v in stu_info.items(): 12 new_stu_info[k.decode()] = v.decode() 13 # print(k.decode) 14 # print(v.decode) 15 print(new_stu_info) 16 17 r.hdel('stu_info','zhangsan') #删除指定key 18 r.delete('stu_info') #删除整个key 19 20 #查看key的类型: 21 print(r.type('stu_info')) 22 print(r.type('6j')) 23 24 print(r.ttl('stu_info')) #获取失效时间,None为永久,在redis可视化界面工具中展示为-1 25 # r.expire('aaa',100) #第一个key设置失效时间,对string、hash均生效