Python学习笔记(十九)—redis的操作
Redis是一个非关系型数据库,它没有数据表、没有SQL语句;数据值的存储是以K-V的形式来存储的。我们可以使用redis图形化工具来操作redis也可以使用Python来对其进行操作。
一、使用工具操作redis
1、安装RedisDesktopManager这个软件
软件的安装不在介绍,直接傻瓜式安装即可
2、安装完成后打开后如下图界面,点击connect
3、配置完成后再左边框,你可以看到自己配置的数据库连接,点击进入数据库,显示该下面可以操作的库,默认在db0库里面
4、选择db1库右击,给出坦克,选择Add new key 可以添加一个数据
5、添加内容的删除
注意:上图右上角的TTL值代表的是这个数据在内存中存在的时间,如果等于-1表示永久生效,如果为其它则表示在固定的时间内生效(单位秒)
6、添加内容的修改,也是如上图,在value上直接修改,修改完成后点击保存即可。
7、在创建的Test_Redis上右击,选择console进入DOS页面也可以直接操作
Test_Redis:0>select 1 切换当前的库
Test_Redis:1>set age 19 给当前的库添加数据
Test_Redis:1>get age 获取当前key为age的value值
Test_Redis:1>set python:test 123 在当前库里面添加一个名为Python的文件,文件下边有名称为:Python:test,value值为123的一条数据
二、使用Python操作redis
针对string类型的数据的操作
1、添加、修改数据
import redis #导入模块 ip = '1.1.1.1' password = 'abcdef' r = redis.Redis(host=ip,password=password,port=6379,db=1) #连接redis,默认值port=6379 r.set('sex','男') #添加数据
r.set('sec','女') #修改数据
r.set('name','这是一个测试!',60) #新增和修改数据k-v-失效时间,默认-1,永远生效;60代表一分钟内生效;
2、读取数据
import redis #导入模块 ip = '1.1.1.1' password = 'abcdef' r = redis.Redis(host=ip,password=password,db=1) #连接redis,,默认值port=6379 res = r.get('sex').decode() #获取key=sex的value值;且获取的结果是一个二进制类型的数据,所以需要decode转成字符串类型的数据 print(res)
import redis #导入模块 ip = '1.1.1.1' password = 'abcdef' r = redis.Redis(host=ip,password=password,db=1,decode_responses=True) #连接redis,,默认值port=6379 res = r.get('sex') #获取key=sex的value值;且获取的结果是一个二进制类型的数据,所以需要decode转成字符串类型的数据 print(res)
注意:如果连接数据库的时候加入了参数decode_responses=True,那么在读取数据的时候就不需要在进行转码操作
3、删除数据
import redis #导入模块 ip = '1.1.1.1' password = 'abcdef' r = redis.Redis(host=ip,password=password,port=6379,db=1) #连接redis,默认值port=6379 r.delete('sex1') #删除key=sex1的value值
4、删除所有的数据
import redis #导入模块 ip = '1.1.1.1' password = 'abcdef' r = redis.Redis(host=ip,password=password,port=6379,db=1) #连接redis,默认值port=6379 r.flushdb() #删除这个数据库里所有的key
5、其它操作
import redis #导入模块 ip = '1.1.1.1' password = 'abcdef' r = redis.Redis(host=ip,password=password,port=6379,db=1) #连接redis,默认值port=6379 r.set('java:test','JAVA-language') #在数据库中添加了一个名词为JAVA的文件夹,文件夹下有数据key:java:test,value:JAVA-language print(r.keys()) #获取所有key print(r.keys('*a*')) #获取所有key中包括a字母的key
import redis #导入模块 ip = '1.1.1.1' password = 'abcdef' r = redis.Redis(host=ip,password=password,port=6379,db=1) #连接redis,默认值port=6379 #读取所有数据库中key的值 key_list = [] for i in r.keys(): key_list.append(r.get(i)) print('key:%s,value:%s'%(i,r.get(i))) print(key_list)
针对哈希类型的数据的操作
hash类型的数据实际上就是一个二层嵌套的字典,如下:
session = { "name":{'sex':18,'age':19}, "add":{'sex':20,'age':21} }
1、增加、修改数据
import redis #导入模块 ip = '1.1.1.1' password = 'abcde' r = redis.Redis(host=ip,password=password,db=1,decode_responses=True) #连接redis,,默认值port=6379 r.hset('syz_stus','test','21345') #存储hash类型的数据的是格式:K-k-v,如上面的格式 ,添加hash类型数据 r.hset('syz_stus','test','哈哈哈') #数据hash类型数据值
2、读取数据
import redis #导入模块 ip = '1.1.1.1' password = 'abcde' r = redis.Redis(host=ip,password=password,db=1,decode_responses=True) #连接redis,,默认值port=6379 res = r.hget('syz_stus','test') #获取某一个小key的值 res1 = r.hgetall('syz_stus') #以字典的格式获取到大K里面所有的数据,格式是二进制类型 print(res,res1)
3、删除数据
import redis #导入模块 ip = '1.1.1.1' password = 'abcde' r = redis.Redis(host=ip,password=password,db=1,decode_responses=True) #连接redis,,默认值port=6379 r.hdel('syz_stus','test') #删除指定的小K的数据 r.delete('syz_stus') #删除整个大K的所有数据
4、循环操作获取所有hash类型数据的值
import redis #导入模块 ip = '1.1.1.1' password = 'abcde' r = redis.Redis(host=ip,password=password,db=1,decode_responses=True) #连接redis,,默认值port=6379 res = r.hgetall('syz_stus') #以字典的格式获取到大K里面所有的数据,格式是二进制类型 print(res) new = {} for k,v in res.items(): new[k] = v print('============') print(new)