Python服务器运维笔记:第四章web性能优化 - 4.1.3.redis数据库

本文详细介绍了Redis数据库的特点、安装配置、数据类型及其在Python开发中的应用,包括字符串、字典、列表、集合和有序集合的使用,以及如何利用Redis实现缓存和消息队列。同时,讨论了Redis作为存储工具的优势,如高性能和适合集群环境。
摘要由CSDN通过智能技术生成

前言:本文是学习网易微专业的《python全栈工程师》 中的《服务器运维开发工程师》专题的课程笔记,欢迎学习交流。同时感谢老师们的精彩传授!

一、课程目标
  • redis特点与安装配置
  • redis数据类型
  • redisweb开发中的运用
二、详情解读
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 - 设为Truename不存在时才能set xx - 设为Truename存在时才能 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.2redishash类型

可以理解为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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值