• Python学习之==>操作Redis


    一、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='111111',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()
  • 相关阅读:
    【树状数组套权值线段树】bzoj1901 Zju2112 Dynamic Rankings
    【权值线段树】bzoj3224 Tyvj 1728 普通平衡树
    【转载】【树形DP】【数学期望】Codeforces Round #362 (Div. 2) D.Puzzles
    ReStart
    Good-Bye
    【分块打表】bzoj1662 [Usaco2006 Nov]Round Numbers 圆环数
    【分块打表】bzoj1026 [SCOI2009]windy数
    【分块打表】bzoj3798 特殊的质数
    【分块打表】bzoj3758 数数
    【线段树】bzoj3995 [SDOI2015]道路修建
  • 原文地址:https://www.cnblogs.com/L-Test/p/9201023.html
Copyright © 2020-2023  润新知