1、python要操作redis 首先需要安装redis模块,然后导入才能使用

安装:pip install redis

导入:import redis

2、连接redis

r = redis.Redis(host='192.168.21.129',password='123456',db=1,port=6379)

password在配置文件redis.conf中查看,port一般是6379,db可根据需要操作的数据库进行选择

3、redis的增删改查

redis中key所存储的值类型有多种,主要说明string类型和hash类型。用命令   redis 127.0.0.1:6379> TYPE KEY_NAME可查看值的存储类型。

以下是针对string类型的操作
r.set('user3','e10adc3949ba59abbe56e057f20f883e')#数据库里面新增一个值,修改也是set
r.setex('user1','e10adc3949ba59abbe56e057f20f883e',)#数据库里新增一个值,并且设置key的失效时间,最后这个参数是秒
r.set('session:user1',{"seessionid":"a5dfcb047721e02a6f8bff779c856165","login_time":""})#新增值,值都在一个session文件夹里面存储
print(r.get('user1'))#获取对应key的值,返回的类型是byte类型,需要解码
print(r.get('user1').decode())#获取到的value值解码
print(r.get('session:user1').decode())
print(r.keys())#获取所有的key,存在一个list里面,元素是byte类型,如:[b'user3', b'user1', b'session:user1']
#获取所有的key,并且解码输出
list = [k.decode() for k in r.keys()]
print(list) #输出如:['user3', 'user1', 'session:user1']
r.delete('user3')#删除指定的key
#删除所有的key需要循环
for k in r.keys():
r.delete(k)
以下是哈希类型  hash操作,嵌套字典
r.hset('info','张三','北京,本科,测试工程师')#hash类型存储方式会有两个key,大key(info)和小key(张三),但无法设置小key的失效时间
r.hset('info','李四','湖北,博士,Boss')
r.hset('info','王五','江西,博士,CEO')
r.hset('login_mll','test1','{"seessionid":a5dfcb047721e02a6f8bff779c815165,"login_time":201805051820}')
print(r.hget('info','张三').decode()) #指定大key和小key获取对应的数据
print(r.hgetall('info')) #获取里面所有的k和-v,所有的K,V存储在字典里,但是是byte类型 # 获取里面所有的k和-v,所有的K,V存储在字典里,并且解码输出
info = r.hgetall('info')
new_info = {}
for k,v in info.items():
new_info[k.decode()] = v.decode()
print(new_info) r.hdel('info','张三') #删除指定key
r.delete('info') #删除整个key
r.expire('info',) #第一个key设置失效时间,无法设置小key的失效时间
print(r.ttl('info'))#获取key的失效时间
print(r.type('info')) #查看key是什么类型的

小练习:将数据库中某个表的数据导入到redis中

分析:1、连数据库,查到数据库里面所有的数据,游标类型要用pymysql.curosrs.DictCour

           2、查到所有数据 [ {"id":1,"passwd":"49487dd4f94008a6110275e48ad09448","username":"test","is_admin":1}]
          3、循环这个list,取到usernamer,把username当做key
          4、再把这个小字典转成json,存进去就ok。

import pymysql,json,redis
r = redis.Redis(host='192.168.21.129',password='HK139bc&*',db=,port=)
conn = pymysql.connect(host='192.168.21.129',user='jxz',passwd='',db='jxz',charset='utf8')
cur = conn.cursor(cursor=pymysql.cursors.DictCursor)
cur.execute('select * from my_user;')
all_data = cur.fetchall() #数据库某表里面所有数据,输出为list形式,list中每个元素为表中的每行数据,每行数据为字典形式
#如:[{'username': 'niuniu', 'is_admin': , 'id': , 'passwd': 'niuniu'}, {'username': 'xiaohei1234', 'is_admin': , 'id': , 'passwd': 'aA123456'}, {'username': 'gyx', 'is_admin': , 'id': , 'passwd': ''}

for data in all_data: #data为表中每行数据,是字典
k = data.get('username') #将username的值获取,作为小key
r.hset('stu_info_mkk',k,json.dumps(data)) #将data字典转为json字符串,新增到redis中
cur.close()
conn.close()

最新文章

  1. 关于 js 一些基本的东西
  2. MVC中的成员资格,授权,安全性
  3. 浅析MySQL数据碎片的产生(data free)
  4. 理解浏览器的重绘与回流(repaint&&reflow)
  5. JPA学习---第六节:大数据字段映射与字段延迟加载
  6. 2-Highcharts曲线图之折线图
  7. BZOJ2212: [Poi2011]Tree Rotations
  8. 【MySQL】Linux下MySQL 5.5、5.6和5.7的RPM、二进制和源码安装
  9. 在ZABBIX平台上通过SNMP协议监控网络设备
  10. 前端学习笔记之CSS选择器
  11. vue 常用语法糖
  12. 转://Oracle 事务探索与实例(一)
  13. 拓扑排序-有向无环图(DAG, Directed Acyclic Graph)
  14. git仓库
  15. Memcached set 命令
  16. java基础之JDBC二:原生代码基础应用
  17. Glib之GObject宏介绍
  18. hbase java API跟新数据,创建表
  19. 前端多媒体(4)—— video标签全面分析
  20. 广播监听USB插入与拔出

热门文章

  1. qtcreator 中文乱码
  2. PHP导入导出excel表格图片的代码和方法大全
  3. Ubuntu下Eclipse无法添加Tomcat7解决方法
  4. CStringArray序列化处理
  5. Matplotlib植入PyQt5 + QT5的UI呈现
  6. 剑指 offer set 27 赋值运算符函数
  7. vue+webpack2实现路由的懒加载
  8. Socket通信编程实例(SIB和SS'SOB)
  9. Eclipse 安装更多版本SDK
  10. 【BZOJ2287】【POJ Challenge】消失之物 背包动规