FastDFS存储系统
FastDFS存储系统背景FastDFS 是一个分布式文件存储系统,利用文件服务器集群提供文件上传下载等服务。其分成两部分:Tracker Server和Storage Server
Tracker Server:负责负载和调度,文件上传/下载的时候,需要先将上传的请求发送给Tracker Server,Tracker与Storage Server联系沟通,确定好文件对应的ID(文件存储的网络地址信息),然后将该文件ID返回给客户端,该文件ID用于日后访问该文件的索引信息。当文件下载的时候,则需要由客户端(程序端)将文件的ID上传到Track Server,Track Server根据文件ID获取文件所在的Storage Server的IP和端口,然后将其返回给客户端。
Storage Server:负责文件存储,服务端上传的文件都存放在Storage Server中,它是利用操作系统的文件管理来实现
Track Server和Storage Server都可以实现集群,且在各自的集群中每个节点的地位都是相等的,类似于redis中的集群。
文件上传的时候,会返回对应的文件索引信息( ...
Mysql存储
Mysql 存储过程存储过程创建123456789101112131415-- DELIMITER是定义sql语句中,让mysql执行语句的的判断符号,-- 只有当遇到定义的符号后,mysql解释器才会执行符号之前的所有语句,默认为;,但是在存储过程中;与此相冲突,所以得自定义DELIMITER // -- 输出类型分为in、out、inout:输入型、输出型、可输入也可输出CREATE PROCEDURE sp_name (输出类型 变量名 变量类型, .... )-- 存储体一般用BEGIN ... END包裹BEGIN -- 声明变量 DECLARE 变量名 变量类型 default 默认值; -- 设置变量值 SET 变量名 = 变量值; 执行得存储内部语句END//DELIMITER; -- 将mysql解释器得执行判定符号修改回;
存储的参数:
输入型参数:只允许调用存储的时候传递给存储,并不会返回,用于接受参数
输出型参数:只允许调用存储的时候返回,并不会接受传递进去的该位置的参数,用 ...
Django实现异步邮件发送
Django实现异步邮件发送邮件发送背景
使用模块:django自带的send_mail()方法
使用
项目的setting中添加配置文件
1234567# 配置django自带的邮件发送系统EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'EMAIL_HOST = 'smtp.163.com'EMAIL_PORT = 465EMAIL_HOST_USER = '88888888@163.com'EMAIL_HOST_PASSWORD = '88888888'EMAIL_FROM = '888<8888888@163.com>'
使用send_mail方法
123456789101112# 给用户发送邮件subject = '用户激活邮件'# 如果只是发送文字类邮件,则直接填在message中message = ''sender = '888<8 ...
Django生成静态文件
Django静态页面自动生成背景
解决问题
有些页面的更新频率并不高,虽然也依赖于数据库的数据,但是该数据更新的周期长、用户的访问频率高,针对这样的页面没有必要每次访问的时候都要去查询数据库,这样只会增加数据库的负载,因此想到一个办法是直接生成静态的页面提供给用户进行访问,只有当后台管理员更新数据的时候,这个时候才重新生成静态文件。
使用模块
django-celery
使用
创建celery任务
1234567891011121314151617181920212223242526272829303132333435363738from goods.models import GoodsType, IndexTypeGoodsType, IndexPromotionBanner, IndexGoodsBannerfrom django.template import loaderfrom django.conf import settings@app.taskdef static_index(): '''生成静态页面''& ...
Django配合Redis实现数据缓存
Django配合Redis实现数据缓存django-redis缓存背景
解决问题:
django默认将缓存存放在django-session数据表中,但是这样每次进行用户状态查询的时候都会导致数据库的反复查询,效率不好,因此决定采用redis作为缓存服务器
用户的浏览记录很多时候也需要保存下来,但是我们不能放在数据库中,最好是缓存在redis中
使用模块
django-redis
参考文档:
https://django-redis-chs.readthedocs.io/zh_CN/latest/
使用
安装包
1pip install django-redis
修改项目中的settings.py配置文件,添加如下配置项
12345678910111213141516# 本质就是告诉django,将session的缓存服务器切换到redis# 配置Redis作为缓存服务器CACHES = { "default": { "BACKEND": "django_redis.cache.Re ...
Django添加富文本插件
Django添加富文本编辑器背景有些内容部分不仅仅只展示文字,有时候还要展示图片和各种样式标题等,针对于此,故引入了富文本编辑器–tinymce
使用
安装环境
1pip install django-tinymce
在项目的settings.py文件中添加配置内容
123456789101112# 配置tinymce的功能TINYMCE_DEFAULT_CONFIG = { 'theme': 'advanced', # 标识添加的功能,此处最大化 'width': 600, 'height': 400,}# 需要将tinymce项目注册进app中INSTALLED_APPS = ( ... 'tinymce',)
在项目的urls.py文件中配置路由
1234urlpatterns = [ ... path(r'tinymce/', include('tinymce.urls') ...
Redis主从与集群
Redis主从与集群Redis搭建主从服务
配置主服务器,然后利用该配置文件启动主服务器
12# 修改redis的配置文件中的bind绑定地址为服务器所在的地址bind 192.168.85.129
配置从服务器,然后利用该配置文件启动从服务器
1234# 修改从服务器的配置文件slave.conf文件bind 192.168.85.128slaveof 192.168.85.129 6379port 6379
查看主从关系
1redis-cli -h 192.168.85.129 -p 6379 info Republication
Redis集群搭建背景集群:是多台设备通过高速网路连接,并以同一的方式进行管理,共同对外提供服务。redis集群可以在一台机器上部署,也可以在多台机器上进行部署
Redis集群特点:
Redis去中心化,每个节点都是平等的,每个节点都保存了各自数据和整个集群的状态,并且各个节点之间保持活跃,这样就保证只要连接到其中任意一个节点,都能够获取到所有节点的数据
Redis集群中的数据存储通过CRC16算法来计算数据存放的位置。Redis集群中将存储 ...
Redis与Python交互
Redis与Python交互Redis与数据库交互
安装拓展包
12# 虚拟环境下执行pip install redis
使用
1234567891011121314# 导入模块from redis import *# 通过创建StrictRedis对象调用redis中的数据操作方法# host是redis的服务器IP,port是redis服务端口,db标识连接的数据库sr = StrictRedis(host='localhost', port=6379, db=0)# 对象的方法与redis中的数据操作方法名一毛一样,除了delete# 当对数据进行修改时,其返回的结果是操作redis的结果是否成功,True标识成功,反之为False# 当对数据进行查询时,其返回的是查询结果result = sr.set('key', 'value')# 删除数据中对应的键sr.delete('key1', 'key2')
Redis存储session信息
安装包
1pip install ...