一、redis简介

  1、非关系型数据库

  2、数据全部是存在内存里面

  3、性能非常好,每秒支持30w次读写

  4、可以通过备份数据库,把数据存到磁盘上来实现数据的持久化

二、操作redis

1、string类型

  1. import redis
  2. r = redis.Redis(host='127.0.0.1',password='',db=1,port=6379) # 连接redis
  3. r.set('jack','狂') # 数据库里面新增了一个key
  4. r.set('jack','疯癫') # key存在用set就可以修改值
  5. r.delete('jack') # 删除指定的key
  6. r.setex('rose','漂亮',100) # 设置key的失效时间,单位是秒
  7. hwt = r.get('jack') # 获取key的值,返回的是二进制数据,如果key不存在则返回None
  8. print(hwt.decode()) # 把二进制(bytes)转成字符串
  9. print(r.keys()) # 获取所有key
  10. print(r.keys('niu*')) # 获取所有'niu'开头的key
  11. r.set('双鱼座:niuniu','浪') # 冒号前面就是加的目录名字
  12. print(r.get('user:luolei').decode()) # 获取key的值并将二进制(bytes)转化为字符串
  13. r.flushdb() # 清空redis
  14. # 删除所有的key
  15. for k in r.keys():
  16. r.delete(k)

2、hash类型:类似嵌套字典

  1. import redis
  2. r = redis.Redis(host='127.0.0.1',password='',db=1,port=6379) # 连接redis
  3. r.hset('stu_info','刘伟','1000万') # 新增一个key,大key是stu_info,小key是'刘伟'
  4. r.hset('stu_info','张流量','交作业0') # 新增一个key,大key是stu_info,小key是'张流量'
  5. r.hset('stu_info','董春光','发红包0') # 新增一个key,大key是stu_info,小key是'董春光'
  6. print(r.type('stu_info')) # 查看key是什么类型的
  7. print(r.hget('stu_info','张流量').decode()) # 指定大key和小key获取对应的value
  8. print(r.hgetall('stu_info')) # 获取里面所有的key和value,返回的是一个字典,里面的key和value都是二进制的
  9. r.hdel('stu_info','张流量') # 删除指定的key
  10. r.delete('stu_info') # 删除整个大key
  11. r.expire('jack',100) # 对一个key设置失效时间,string类型和hash类型都可以用
  12. # 把r.hgetall返回的字典里面的key和value转成字符串
  13. dic = {}
  14. for key,value in r.hgetall('stu_info').items():
  15. dic[key.decode()] = value.decode()
  16. print(dic)

三、练习

将MySQL表中的数据导入到redis数据库中 

  1、连接数据库,查到数据库里面所有的数据,游标类型要用pymysql.cursors.DictCursor

  2、查到所有的数据:[{"id":1,"passwd":"123","username":"Amy","is_admin":1},......]

  3、循环这个list,取到username,把username当做key

  4、再把小字典转成json,存成hash的value

  1. import pymysql,redis,json
  2. r = redis.Redis(host='127.0.0.1',password='',db=1,port=6379)
  3. conn = pymysql.connect(host='192.168.1.112',user='test',passwd='',port=3306,db='test',charset='utf8')
  4. sql = 'select * from my_user;'
  5. cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
  6. cur.execute(sql)
  7. all_data = cur.fetchall()
  8. for data in all_data:
  9. key = data.get('username')
  10. r.hset('stu_info_test',key,json.dumps(data))
  11. cur.close()
  12. conn.close()

Python学习之==>操作Redis的更多相关文章

  1. python学习之操作redis

    一.Redis安装网上很多可以查找 二.redis-py的安装,使用命令pip install redis. 安装过程中如果产生连接超时的错误,可以使用国内镜像参考如下 豆瓣:pip install ...

  2. java、python及jmeter操作redis(接口自动化必备)

    redis是nosql数据库之一,其存储结构简单,提供高性能服务,所以在架构中是很常用的. 在做接口自动化测试过程中,有时也会涉及到redis,比如:发送短信验证码,我们做接口自动化测试,如何模拟发送 ...

  3. 尚硅谷redis学习11-jedis操作redis

    前面学习了redis的知识后,下面学习一下如何在java中通过jedis操作redis. 所需jar包:commons-pool-xxxx.jar,jedis-xxx.jar 下面看一下常用操作: 1 ...

  4. Python学习-day11 RabbitMQ Redis

    这次文章包含两个内容: 1.RabbitMQ使用 2.Redis基础操作 代码部分为练习笔记和作业 概念部分转自Alex老师 RabbitMQ 安装 http://www.rabbitmq.com/i ...

  5. 10 python学习笔记-操作数据库(十)

    在功能.接口测试中,常常需要通过数据库的操作,来准备数据.检测环境及核对功能.接口的数据库操作是否正确. 在自动化测试中,就需要我们用代码连接数据库自动完成数据准备. 环境检查及数据库断言的功能.数据 ...

  6. Python学习-list操作

    Python列表(list)操作: 序列是Python中最基本的数据结构.序列中的每个元素都分配一个数字 - 它的位置,或索引,第一个索引是0,第二个索引是1,依此类推. Python有6个序列的内置 ...

  7. Python基础学习六 操作Redis

    import redis r = redis.Redis(host=',db=1) #set get delete setex 都是针对string类型的 k-v # r.set('louis_ses ...

  8. python学习之——操作浏览器

    使用selenium的webdriver框架,对浏览器的常规操作,如下~~ #coding=utf-8 from selenium import webdriver import time from ...

  9. python学习 文件操作

    一.python打开文件 #=====================python 文件打开方式 open()===================== # open(fileName,type) t ...

随机推荐

  1. java并发编程:线程同步和锁

    一.锁的原理 java中每个对象都有一个内置锁.当程序运行到非静态的synchronized同步方法上时,自动获得与正在执行代码类的当前实例(this)有关的锁.获得一个对象的锁也称为获取锁,当程序运 ...

  2. 页面中获取 iframe 中的值

    3.页面中获取 iframe 中的值 var obj=document.getElementsByClassName(".ke-edit-iframe").contentWindo ...

  3. AUC计算方法

    本质是ROC曲线下的面积,ROC曲线x轴是误判率/误报率(false positive rate),y轴是准确率/命中率(true positive rate). AUC是ROC曲线与横轴所围的面积. ...

  4. DP | Luogu P1466 集合 Subset Sums

    题面:P1466 集合 Subset Sums 题解: dpsum=N*(N+1)/2;模型转化为求选若干个数,填满sum/2的空间的方案数,就是背包啦显然如果sum%2!=0是没有答案的,就特判掉F ...

  5. HashMap的底层实现以及解决hash值冲突的方式

    class HashMap<K,V> extends AbstractMap<K,V> HashMap  put() HashMap  get() 1.put() HashMa ...

  6. html中checkbox自定义样式(css版本)

    <span class="choose"><input type="checkbox" class="input_check&quo ...

  7. Python---webserver

    一. # HTTP项目实战 - 深入理解HTTP协议 - 模拟后台服务程序基本流程和大致框架 - 每一个步骤一个文件夹 - 图解http协议,图解tcp/ip协议 # v01-验证技术 - 验证soc ...

  8. 【NOIP2016提高A组模拟9.24】总结

    第一题纯模拟,结果那个出题人脑子似乎进水了,空间限制开了1G!!! 导致我捉摸了半天为什么空间要开那么大,最后只能得出上面的结论. 第二题是个矩阵快速幂,比赛上我没把递推式求出来,但是根据各种乱搞,得 ...

  9. 19. ClustrixDB 执行计划解读

    EXPLAIN语句用于显示ClustrixDB查询优化器(也称为Sierra)如何执行INSERT.SELECT.UPDATE和DELETE语句.EXPLAIN的输出有三列: Operation - ...

  10. ASP.NET MVC 生成EML文件

    需求: 点发送邮件按钮的时候, 自动在客户端电脑打开默认邮件的窗口,并且把内容和附件都附加上去. 解决方案: 尝试使用过Microsoft.Office.Interop.Outlook 和 MPAI. ...