博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python 连接redis day6
阅读量:5065 次
发布时间:2019-06-12

本文共 2861 字,大约阅读时间需要 9 分钟。

一、redis简单介绍:

  redis是一个数据库,存在内存里面,每秒钟支持10w此的读写,速度很快,性能好

  数据库分为:关系型数据库(sql,里面有表、字段)和非关系型数据库NoSQL(,redis,memcache) 

  非关系型数据库没有sql,没有表,格式是key-value形式,对参数数据类型不限制

  redis里的key不能重复,当程序需要缓存时会考虑放在redis中

二、redis的type

增加redis时,可选择redis的类型,一共有五种类型,常用的为string和hash

1、string类型,为key-value格式,如图:

图中:string对应的为key;

   value中为值;

   TTL代表失效时间,为-1则永久不会失效,除非redis重启;

   Reload Value可刷新加载数据

2、hash类型,为大key-小key-value格式,如图:

hash对应的为大key,下面则为小key 和value值

三、连接redis,及redis的操作

1、string类型的redis及其方法

import  redis#db一共有16个数据库0-15# decode_responses=True 此参数会将二进制转为字符串r = redis.Redis(host='ip.ip.ip.ip',password='password123',db=3,decode_responses=True)r.set('name','哈哈哈')#向redis里存入数据,若key存在,则会覆盖,若不想覆盖,则不要重复key;传入的需要为字符串print(r.get('name').decode())#需要加decode(),否则默认获取的是bytes类型的结果;获取数据r.set('name','xixixi')#修改数据r.delete('name')#删除某个keyr.set('cnz_user:candy','123456',60)#添加文件夹,第三个参数指定失效时间为60秒r.set('cnz_user:name:candy','123456')#添加二级文件夹r.flushall()#清除所有数据库里所有的keyr.flushdb()#清除当前连接的db库里所有的keyprint(r.keys())#获取当前数据库中所有的keyprint(r.keys('xx*'))#以xx开头的key,过滤功能print(r.exists('hhh'))#判断key是否存在,存在返回1,不存在返回0

举个例子:

1、存username,password密码要存密文 2、要校验用户,如果用户不存在的话,才可以注册
import hashlibdef reg():    username = input('username:').strip()    password = input('password:').strip()    if r.get(username):        print('用户已存在')    else:        m = hashlib.md5(password.encode())        new_password = m.hexdigest()        r.set(username,new_password)        print('注册成功')reg()def login():    username = input('username:').strip()    password = input('password:').strip()    p=r.get(username)    if p:        m = hashlib.md5(password.encode())        new_password = m.hexdigest()        # p为bytes类型,需要decode()转一下,在连接redis时加上decode_responses=True即可不需要写decode        if p == new_password:            print('登录成功')        else:            print('密码错误')    else:        print('账号不存在')login()

2、hash类型的redis及其方法

r.hset('cnz_user','xiaohong','123457')#增加数据,大key,小key,valuer.hset('cnz_user','xiaohong','35235')#修改数据r.hdel('cnz_user','xiaolu')#删除里面的小keyr.delete('cnz_user')#删除外面的大keyprint(r.hget('cnz_user','xiaohong'))#获取指定keyprint(r.hgetall('cnz_user'))#取到hash中key里面所有的key和valuer.hmset('cnz_user',{
'xiaohai':'123434','xiaohong':'4365365'})#批量往数据库里加数据,批量set进去print(r.type('cnz_user'))#key类型r.expire('cnz_user',60)#设置失效时间

举个例子,迁移redis

#把redis a里的数据 ,复制到redis b里#1、连上两个redis a和b#2、从a redis里获取所有的key#3、从a 里面取到key的value,set到b里面#4、判断key类型,string类型则set hash类型则hsetimport  redisa = redis.Redis(host='ip.ip.ip.ip',password='password123',db=15,decode_responses=True)b = redis.Redis(host='ip.ip.ip.ip',password='password123',db=2,decode_responses=True)for k in a.keys():    if a.type(k)=='string':        value = a.get(k)        b.set(k,value)    elif a.type(k) == 'hash':        all_data=a.hgetall(k)        b.hmset(k,all_data)    else:        print("其他类型不支持")

 

 

转载于:https://www.cnblogs.com/candysalty/p/11144031.html

你可能感兴趣的文章
【贪心+DFS】D. Field expansion
查看>>
C# Async与Await的使用
查看>>
Mysql性能调优
查看>>
iOS基础-UIKit框架-多控制器管理-实例:qq界面框架
查看>>
自定义tabbar(纯代码)
查看>>
小程序底部导航栏
查看>>
ibatis学习笔记
查看>>
18-ES6(1)
查看>>
poj1611 简单并查集
查看>>
Ubuntu 14.04下安装CUDA8.0
查看>>
跨平台开发 -- C# 使用 C/C++ 生成的动态链接库
查看>>
C# BS消息推送 SignalR介绍(一)
查看>>
WPF星空效果
查看>>
WPF Layout 系统概述——Arrange
查看>>
PIGOSS
查看>>
几款Http小服务器
查看>>
iOS 数组排序
查看>>
第三节
查看>>
PHP结合MYSQL记录结果分页呈现(比较实用)
查看>>
Mysql支持的数据类型
查看>>