python 操作redis

无人久伴 提交于 2020-03-24 18:43:43

redis是一个非关系型数据库。

数据库包括非关系型数据库和关系型数据库。
1、关系型数据库:mysql/oracle/sql server/db2/sqlite 数据是存在磁盘上的


2、非关系型数据库:
mongodb/redis 没有表结构,没有sql语句,没什么字段。速度比关系型数据库快,redis数据是存在内存上的,redis本身性能非常,每秒支持30万次读写。缺点是没有办法持久化(重启redis可以备份数据到磁盘里面,启动的时候再次读取磁盘的数据到内存,这种方法可以实现持久化)

以下是python操作redis的一些基本方法

import redis

r=redis.Redis(host='xx.xx.xx.xx',password='HK139bc&*',db=1,port=6379) #默认端口号如果不修改就是6379,db指定用哪个数据库
#增删改查,这些操作都是针对string类型的
r.set('niuh','帅') #数据库里面新增一个值,修改也是set
r.set('niuh','niuniuniu') #修改niuh的value为niuniuniu
r.delete('niuhany') #删除
r.setex('python_123','哈哈哈',20)#设置key的失效时间,最后的参数是秒
hwt=r.get('niuh')
print(hwt.decode())  #\xe5\xb8\x85  二进制转为字符串decode,字符串转二进制encode
s='哈哈'
print(s.encode())  #字符串转二进制encode
print(r.keys('*xxx*'))#获取到所有的key
print(r.get('sdf'))
r.set('天蝎座:mpp','呵呵呵') #key有冒号,冒号前面的就是文件夹名称
r.get('天蝎座:mpp')
#以下操作是针对哈希类型  ,hash类型即是嵌套字典
for k in r.keys():  #删除所有的key
    r.delete(k)

r.hset('stu_info','刘伟','1m8 100w存款')
r.hset('stu_info','张流量','浪,为了不交作业,故意让狗咬他')
r.hset('stu_info','董春光','为了不交作业,找了一条狗咬张流量,然后陪张流量去医院')
print(r.type('stu_info'))  #查看key类型
print(r.hget('stu_info','张流量').decode())#指定大key和小key获取对应的数据
print(r.hgetall('stu_info'))#获取里面所有的k和v,打印出来的是二进制

stu_info=r.hgetall('stu_info') #获取所有的k,v并且一个个打印出来
new_stu_info={}
for k,v in stu_info.items():
    new_stu_info[k.decode()]=v.decode()
print(new_stu_info)


r.expire('aa',100)
r.hdel('stu_info','gyz') #删除指定key
r.delete(('stu_info'))  #删除整个key

#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。

import pymysql,json,redis
r = redis.Redis(host='xx.xx.xx.xx',password='HK139bc&*',db=3,port=6379)
coon = pymysql.connect(host='xx.xx.x.x',user='jxz',passwd='123456',db='jxz',charset='utf8')
cur = coon.cursor(cursor=pymysql.cursors.DictCursor)  #指定返回字典
cur.execute('select * from my_user;')
all_data = cur.fetchall() #获取数据库查询所有的返回结果
for data in all_data:
    k = data.get('username') 
    # print(k)
    # print(json.dumps(data))
    r.hset('stu_info_cfj',k,json.dumps(data))  #字典转成json串再传入hash
cur.close()  
coon.close()

 

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!