python--操作redis

一、操作redis

redis也是一个数据库
关系型数据库
  mysql、oracle、sql server、db2、sqlite通过sql语句来执行的
  数据存在磁盘上
非关系型数据库
  没有表
  不需要sql语句来查询数据
  查询是get('k'),插入数据set('xx')
  速度比关系型数据库快
redis的数据全都是存在内存里
  redis本身性能是非常好的,每秒支持30w次的读写

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())#获取到所有的key
12 print(r.keys('y*'))#获取到开头的key
13 print(r.keys('*m*'))#获取包含t的key
14 print(r.get('呵呵'))#获获取不存在的key时返回None
15 r.set('天蝎座:ytt','呵呵')#key中有冒号,则冒号前面的是文件夹的名字
16 print(r.get('天蝎座:ytt'))

循环删除所有key

1 for key in r.keys():#删除所有的key
2     r.delete(key)

2.以下所有操作是针对哈希类型

1 r = redis.Redis(host='118.24.3.40',password='HK139bc&*',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来获取对应数据,获取其中某一个小key
7 print(r.hgetall('ytt_info'))#获取里面所有的key和value,放到一个字典里
8 ytt_info = r.hgetall('zx_info')
1 r.hdel('ytt_info','yfc')#删除指定小key
2 r.delete('ytt_info')#删除整个大key
3 print(r.ttl('ytt_info'))#获取失效时间
4 r.expire('ytt_info',100)#对一个key设置失效时间

将字典里的元素都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 s='呵呵'
2 s.encode() #把字符串转成二进制
3 hwt = b'sdfsdfsdf'
4 hwt.decode()  #把bytes类型即二进制转成字符串

小练习需求:

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()

猜你喜欢

转载自www.cnblogs.com/yttbk/p/9020860.html