python--操作redis,python--redis,一、操作redisr
python--操作redis,python--redis,一、操作redisr
一、操作redis
redis也是一个数据库
关系型数据库
mysql、oracle、sql server、db2、sqlite通过sql语句来执行的
数据存在磁盘上
非关系型数据库
没有表
不需要sql语句来查询数据
查询是get(‘k‘),插入数据set(‘xx‘)
速度比关系型数据库快
redis的数据全都是存在内存里
redis本身性能是非常好的,每秒支持30w次的读写
1.1 以下操作都是针对strin类型
1 import pymysql,json,redis 2 r = redis.Redis(host=‘0.0.0.0‘,password=‘******‘,db=8,port=6379) 3 # 增删改查 4 r.set(‘ytt‘,‘hello!‘)#数据库里面新增一个值 5 #修改也是set 6 r.delete(‘天蝎座:ytt‘)#删除指定key 7 r.setex(‘ytt‘,‘hello‘,10)#设置key的失效时间,最后这个参数是秒,10秒钟后session失效,删除掉 8 ytt= r.get(‘ytt‘) 9 print(ytt)10 ytt.decode()#把二进制转成字符串11 print(r.keys())#获取到所有的key12 print(r.keys(‘y*‘))#获取到开头的key13 print(r.keys(‘*m*‘))#获取包含t的key14 print(r.get(‘呵呵‘))#获获取不存在的key时返回None15 r.set(‘天蝎座:ytt‘,‘呵呵‘)#key中有冒号,则冒号前面的是文件夹的名字16 print(r.get(‘天蝎座:ytt‘))
循环删除所有key
1 for key in r.keys():#删除所有的key2 r.delete(key)
1.2 以下所有操作是针对哈希类型
1 r = redis.Redis(host=‘0.0.0.0‘,password=‘密码&*‘,db=8,port=6379)2 r.hset(‘zx_info‘,‘ytt‘,‘女 18‘)3 r.hset(‘zx_info‘,‘yfc‘,‘男 16‘)4 print(r.type(‘ytt_info‘))#查看key是什么类型的5 print(r.type(‘ytt‘))6 print(r.hget(‘ytt_info‘,‘ytt‘).decode())#指定大key和小key来获取对应数据,获取其中某一个小key7 print(r.hgetall(‘ytt_info‘))#获取里面所有的key和value,放到一个字典里8 ytt_info = r.hgetall(‘zx_info‘)
1 r.hdel(‘ytt_info‘,‘yfc‘)#删除指定小key2 r.delete(‘ytt_info‘)#删除整个大key3 print(r.ttl(‘ytt_info‘))#获取失效时间4 r.expire(‘ytt_info‘,100)#对一个key设置失效时间
1.3 将字典里的元素都decode下,变成能看到的文字
1 new_ytt_info = {}#将字典里的key和valuedecode下,变成能看懂的2 for k,v in ytt_info.items():3 new_ytt_info[k.decode()] = v.decode()4 print(new_ytt_info)
1.4 字符串与二进制之间的转换
1 s=‘呵呵‘2 s.encode() #把字符串转成二进制3 hwt = b‘sdfsdfsdf‘4 hwt.decode() #把bytes类型即二进制转成字符串
1.5 小练习需求:
pymysql、json、redis
1、连数据库,查到数据库里面所有的数据,游标类型要用pymysql.curosrs.DictCour
2、查到所有数据 [ {"id":1,"passwd":"49487dd4f94008a6110275e48ad09448","username":"niuhayang","is_admin":1}]
3、循环这个list,取到usernamer,把username当做key
4、再把这个小字典转成json,存进去就ok。
1 import pymysql,json,redis 2 r = redis.Redis(host=‘ip‘,password=‘密码&*‘,db=1,port=6379) 3 conn = pymysql.connect(host=‘ip‘,user=‘用户名‘,passwd=‘密码‘,db=‘库名‘,charset=‘utf8‘) 4 cur = conn.cursor(cursor=pymysql.cursors.DictCursor) 5 cur.execute(‘select * from my_user;‘) 6 all_data = cur.fetchall() 7 for data in all_data: 8 k = data.get(‘username‘) 9 r.hset(‘stu_info_nhy‘,k,json.dumps(data))10 cur.close()11 conn.close()
下面将操作redis的各种方法封装成一个类
1 import redis 2 class MyRedis(): 3 def __init__(self,ip,password,port=6379,db=8): 4 #构造函数 5 try: 6 self.r=redis.Redis(host=ip,port=port,password=password,db=db) 7 except Exception as e: 8 print(‘redis链接失败,错误信息%s‘%e) 9 def str_get(self,k):10 res = self.r.get(k)11 if res:12 return res.decode()13 14 def str_set(self,k,v,time=None):15 self.r.set(k,v,time)16 17 def str_delete(self,k):18 tag = self.r.exists(k)#判断k是否存在19 if tag:20 self.r.delete(k)21 print(‘删除成功‘)22 else:23 print(‘这个key不存在‘)24 25 def hash_get(self,name,k):26 res=self.r.hget(name,k)27 if res:28 return res.decode()29 30 def hash_set(self,name,k,v):31 self.r.hset(name,k,v)32 33 def hash_getall(self,name):34 data={}35 res = self.r.hgetall(name)36 if res:37 for k,v in res.items():38 data[k.decode()]=v.decode()39 return data40 41 def hash_del(self,name,k):42 res = self.r.hdel(name,k)43 if res:44 print(‘删除成功‘)45 return 146 else:47 print(‘删除失败,该key不存在‘)48 return 049 @property#属性方法50 def clean_redis(self):51 self.r.flushdb()#清空redis52 print(‘清空redis成功!‘)53 return 054 my=MyRedis(‘118.24.3.40‘,‘HK139bc&*‘)55 my.clean_redis
python--操作redis
相关内容
- Python 爬虫实例(7)—— 爬取 新浪军事新闻,python新浪
- python利用mongodb上传图片数据 : GridFS 与 bson两种方式,
- [OpenCV-Python] OpenCV 中的图像处理 部分 IV (六),,部分 I
- 使用python编写微信跳一跳的自动脚本,python编写脚本
- python数据分析实战-第9章-数据分析实例气象数据,pyt
- python3-开发面试题(python)6.23基础篇(2),python3-6.2
- Python 文件 truncate() 方法,pythontruncate,概述Python 文
- [OpenCV-Python] OpenCV 中摄像机标定和 3D 重构 部分 VII,,部
- python pymsql的用法 180903,pymsql180903,一.1.pymysq
- python错误 invalid command 'bdist_wheel' &
评论关闭