Redis

Redis介绍

  1. Redis 是开源的,免费的,高性能的 非关系形数据库。

  2. 数据存储在内存,以key-value形式存储,类似于我们学习的字典 {name: ‘jack’ }

  3. 可以设置过期时间,过期自动删除,也可以做持久化

**关系型数据库: MySQL

MySQL的缺陷:

1. 读取的时候相对较快, 但是写入数据是比较慢的, 读取速度是1w/s. 写入速度: 1000/s。
2. 读写时容易混淆,会读取出脏数据,需要对Mysql读写做限制.
3. 需要定义严格的表结构,插入数据需要满足完整性约束。
4. 数据存储在磁盘,相对于内存数据库,读写速度慢。

Redis通用命令

redis默认有16个 数据库(0-15) select 3 切换到数据库3

info 查看redis服务的信息 info replication查看主从复制的状况

keys * 查看所有的key, 生产环境中不使用 可能阻塞redis

查看key的数据类型 type key1

key 是否存在 exists key1

删除一个key del key1

重命名 rename key key1

清空数据库 flushdb/flushall

数据操作

设置key-value

>set name jack
>mset name jack age 23 addr China
>append key val  追加
import redis
r=redis.Redis(host="localhost",port=6379,db=0)
r.set("name","jack")
r.mset({"name":"jack","age":23,"hobby":"football"})

上图就是在python实现

获取key的值

get name
mget name age hobby

python实现

r.get("name")  #返回字节串
r.mget("name","age","hobby") #返回值列表

设置key时,设置过期时间

#10s后过期
set name jack ex 10
#不存在时,设置key
set name jack nx

python实现

r.set("name","jack",ex=10)
r.set("name","666",nx=True)

字符串的使用场景

  1. 作为缓存

  2. 并发计数,点赞、秒杀

  3. 带有效期的验证码,过期自动删除

练习:基于django实现验证码的生成与存储

  • 创建一个虚拟环境myenv,保证不会污染自己的默认环境

  • 创建一个django项目,命名test_sms_code

  • 配置项目的模板、静态文件等

  • 配置路由,编写视图

设置过期时间

#1 10s过期
set name jack ex 10
#2 
set name jack
expire name 10 -->10s
pexpire name 10 -->10ms

#查看多久过期
ttl name
-->返回-2 key不存在
-->返回-1 key存在,但没有过期时间
-->返回具体时间,剩余过期时间

#设置永不过期,此命令很少使用
persist name

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值