前言:本文是学习网易微专业的《python全栈工程师》 中的《服务器运维开发工程师》专题的课程笔记,欢迎学习交流。同时感谢老师们的精彩传授!
一、课程目标
redis
特点与安装配置redis
数据类型redis
在web
开发中的运用
二、详情解读
2.1.redis
特点与安装配置
redis
是一款应用非常广泛的NoSQL
数据库,redis
的值可以支持多种数据类型,而且可以将内存中的数据保存到硬盘,另外redis
以单线程方式运行,可以避免多线程带来的问题。redis
除了基本的数据存取之外,还提供发布-订阅模式、GEO等功能。
redis
应用场景(频繁读取写入):
1.缓存
2.排行榜
3.计数器
4.session
5.购物车
6.消息队列
2.1.1.linux
下安装redis
下载:
redis
官方网站:https://redis.io
redis
下载页:https://redis.io/download
安装:
1.解压缩安装包,并进入该目录
2.执行make
编译指令
3.执行make install
安装指令
4.在/usr/local/bin
目录下会生成redis-benchmark、redis-check-aof、redis-check-rdb、redis-cli、redis-sentinel、redis-server
几个程序文件。
2.1.2.redis
配置
将redis.conf
拷贝到/etc/redis/conf/redis.conf
配置内容:
1.bind
- ip
,如果绑定为127.0.0.1
,只能被本机访问,改成0.0.0.0
可以被其他机器访问
2.port
- 端口,默认为 6379
3.daemonize
- 是否以后台守护进程方式运行,默认为no
4.pidfile
- pid
文件
5.logfile
- 日志文件
6.save 900 1
- 每隔900
秒,如果发生一次更新,就保存到磁盘
7.dir
- 工作目录
通过配置文件启动:
redis-server /etc/redis/conf/redis.conf
2.1.3.redis
客户端
运行redis-cli
进入redis
客户端:
2.2.redis
模块
2.2.1.redis
模块安装
pip install redis
from redis import StricRedis
redis = StrictRedis(host="192.168.3.111")
redis
对象的方法名与redis_cli
命令名是一样的
2.2.1.1 redis
的字符串类型
设置一个键 - set(name, value, ex=None, px=None, nx=False, xx=False)
ex
- 设定过期时间,单位 秒
px
- 设定过期时间,单位 微秒
nx
- 设为True
,name
不存在时才能set xx
- 设为True
, name
存在时才能 set
代码示例:
# -*- coding=utf-8 -*-
from redis import StrictRedis
redis = StrictRedis(host="192.168.3.40")
'''
redis.set("username", "python-xp.com")
'''
# 获取一个键 - get(name)
# 返回类型为bytes类型
'''
username = redis.get("username")
#字节类型转换为字符串
username = username.decode()
'''
# 数值加减
# incr, decr
'''
redis.set("number", 10)
redis.incr("number", 5)
print(redis.get("number"))
redis.decr("number", 3)
print(redis.get("number"))
'''
Flask
中如何使用redis
:
# -*- coding=utf-8 -*-
from hashlib import md5
from flask import Flask,request
from redis import StrictRedis
app = Flask(__name__)
redis = StrictRedis(host="192.168.3.40")
# 向redis写入数据
@app.route("/page/<int:page>")
def get_page(page):
keyname = md5(request.full_path.encode()).hexdigest()
content = redis.get(keyname)
if not content:
# 从数据库获取数据
pass
content = "第{page}页".format(page=page)
redis.set(keyname, content, ex=3)
content += "--来自数据库"
else:
content = content.decode()+"--来自redis"
return content
if __name__ == "__main__":
app.run(debug=True)
2.2.1.2redis
的hash
类型
可以理解为python
字典类型{"key1":val, "key2":val}
设置一个键 - hset(name, key, value)
name
- 变量名
key
- 添加的key
value
- 添加的key
对应的值
给userinfo
添加了一个username
,值为luxp
from redis import StrictRedis
redis = StrictRedis(host="192.168.3.40")
redis.hset("u