Redis配置哨兵
Redis sentinel(哨兵)主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。
哨兵概论与运行机制哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运行。其原理是哨兵通过发送命令,等待Redis服务器响应,从而监控运行的多个Redis实例。
Redis Sentinel的主要功能Sentinel的主要功能包括主节点存活检测、主从运行情况检测、自动故障转移(failover)、主从切换。Redis的Sentinel最小配置是一主一从。 Redis的Sentinel系统可以用来管理多个Redis服务器,该系统可以执行以下四个任务:
监控
Sentinel会不断的检查主服务器和从服务器是否正常运行。
通知
当被监控的某个Redis服务器出现问题,Sentinel通过API脚本向管理员或者其他的应用程序发送通知。
自动故障转移
当主节点不能正常工作时,Sentinel会开始一次自动的故障转移 ...
Redis主从配置
本教程环境基于 Ubuntu 8.3.0 版本 linux 系统配置 Redis 主从主从概念
⼀个 master 可以拥有多个 slave,⼀个 slave ⼜可以拥有多个 slave,如此下去,形成了强⼤的多级服务器集群架构
master 用来写数据,slave 用来读数据,经统计:网站的读写比率是 10:1
通过主从配置可以实现读写分离
主从配置查看当前主机 IP 地址(记住你的 ip 地址)
若没有联网可以前往我的另一篇文章配置网络
删除 redis 默认执行的 ip 端口
若不删除的话 默认会执行 彻底清除完毕再开启主从配置
查看当前 redis 所有进程
1ps -aux|grep redis
除了后缀为 grep --color=auto redis 其余全都删除
123# kill 删除命令 -9 强制 23131端口号# 端口为你要删除的进程的第二个字段(名称后面的数字)sudo kill -9 23131
配置主
进入 /etc/redis 文件目录修改 redis.conf (主)文件
1234# 进入目录cd /etc/redis# ...
Redis基本操作
基本命令服务器端
启动服务端
1redis-server
查看帮助手册
1redis-server --help
查看redis服务器进程
1ps -aux|grep redis
杀死redis服务器
12# sudo kell 删除 -9 强制 指定服务器 (强制删除命令)sudo kell -9 pid
使用指定的配置文件开启redis服务
12# sudo redis-server 源路径sudo redis-server /etc/redis/redis.conf
客户端
启动客户端
1redis-cli
查看帮助手册
1redis-cli --help
运行测试命令
12# 客户端中ping
切换数据库
12# select [0-15] 默认使用第一个,共有16个数据库select 7
Redis安装
官网英文:https://redis.io/中文:http://www.redis.cn/参考:[菜鸟Redis](https://www.runoob.com/redis/redis-install.html)
安装方式一
使用apt,注意提前检查下apt的源,如果不对 就修改镜像源
安装前 sudo apt-get update
安装redis命令如下:
1sudo apt-get install redis-server
注意:安装完后关闭终端重新开启,才能使用
安装完后检查 执行程序都在 usr/bin/下
默认安装后会启动,命令如下
123sudo service redis-server start # 启动sudo service redis-server stop # 停止sudo service redis-server restart # 重启
查看进程
1ps -aux|grep redis
如果出现 *redis-server :6379 默认端口 6379 ,说明redis正在运行
进入操作环境
现在我们输入 redis-cli 命令 ...
Redis数据操作
数据结构Redis 数据类型分为:字符串类型、散列类型、列表类型、集合类型、有序集合类型。
Redis 这么火,它运行有多块?一台普通的笔记本电脑,可以在 1 秒钟内完成十万次的读写操作。
Redis 是 key-value 的数据结构,每条数据都是⼀个键值对键的类型是字符串,键的类型是字符串
原子操作:最小的操作单位,不能继续拆分。即最小的执行单位,不会被其他命令插入。高并发下不存在竞态条件。
KEY 的命名:一个良好的建议是 article:1:title 来存储 ID 为 1 的文章的标题。
注意:键不能重复
keys 基本命令
Keys *
该命令用于查看所有键。
Keys 'xx'
该命令用于查看名称中包含 xx 的键
type key
该命令用于查看键对应的 value 的类型
del key 该命令用于在 key 存在时删除 key。
dump key 序列化给定 key ,并返回被序列化的值。
exists key 检查给定 key 是否存在。
expire key seconds 为给定 key 设置过期时间,以秒计 ...
Django状态保持
状态保持
浏览器请求服务器是无状态的。
无状态:指一次用户请求时,浏览器、服务器无法知道之前这个用户做过什么,每次请求都是一次新的请求。
无状态原因:浏览器与服务器是使用Socket套接字进行通信的,服务器将请求结果返回给浏览器之后,会关闭当前的Socket连接,而且服务器也会在处理页面完毕之后销毁页面对象。
有时需要保持下来用户浏览的状态,比如用户是否登录过,浏览过哪些商品等
实现状态保持主要有两种方式:
在客户端存储信息使用Cookie
在服务器端存储信息使用Session
CookieCookie的工作原理由于HTTP是一种无状态的协议,服务器单从网络连接上无从知道客户身份。怎么办呢?
就给客户端们颁发一个通行证吧,每人一个,无论谁访问都必须携带自己通行证。这样服务器就能从通行证上确认客户身份了。
Cookie的特点
Cookie是由服务器生成,存储在浏览器端的一小段文本信息,以键值对方式进行存储。
通过浏览器访问一个网站时,会将本地存储的跟网站相关的所有cookie信息发送给该网站的服务器。
Cookie是基于域名安全的。
Cookie是有过期时间的,如果不指定,默认关 ...
Django视图
视图定义
一个视图函数,简称视图,就是应用中views.py文件中的函数,它接受 Web 请求并且返回 Web 响应。
视图必须返回一个HttpResponse对象或子对象(JsonResponse HttpResponseRedirect)作为响应
视图负责接受Web请求HttpRequest,进行逻辑处理,返回Web响应HttpResponse给请求者
视图层中有两个重要的对象:**请求对象(request)**与 **响应对象(HttpResponse)**。
处理过程:
视图使用
在项目的urls.py文件定位应用的urls.py
12345678from django.contrib import admin # 默认配置from django.urls import path, include # 导入includeurlpatterns = [ path('admin/', admin.site.urls), # 默认配置 path('', include('book.urls')) ...
Django数据库开发
使用Django进行数据库开发的提示 :
MVT设计模式中的Model, 专门负责和数据库交互.对应(models.py)
由于Model中内嵌了ORM框架, 所以不需要直接面向数据库编程.
而是定义模型类, 通过模型类和对象完成数据库表的增删改查.
ORM框架就是把数据库表的行与相应的对象建立关联, 互相转换.使得数据库的操作面向对象.
mysql配置1. 在mysql中创建一个项目要使用的数据库
1create database bookdb charset=utf8;
2. setting里修改为mysql配置
12345678910DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'HOST': '127.0.0.1', # 数据库主机(默认) 'PORT': 3306, # 数据库端口 ...
sql必知必会挑战题答案
挑战题答案第 1 课 没有挑战题第 2 课 检索数据1. 编写SQL语句,从Customers表中检索所有的ID(cust_id)。12SELECT cust_idFROM Customers;
2. OrderItems表包含了所有已订购的产品(有些已被订购多次)。编写SQL语句,检索并列出已订购产品(prod_id)的清单(不用列每个订单,只列出不同产品的清单)。提示:最终应该显示 7 行。12SELECT DISTINCT prod_idFROM OrderItems;
3. 编写SQL语句,检索Customers表中所有的列,再编写另外的SELECT语句,仅检索顾客的ID。使用注释,注释掉一条SELECT语句,以便运行另一条SELECT语句。(当然,要测试这两个语句。)SELECT *12# SELECT cust_idFROM Customers;
第 3 课 排序检索数据1. 编写SQL语句,从Customers中检索所有的顾客名称(cust_names),并按从Z到A的顺序显示结果。123SELECT cust_nameFROM CustomersORDER BY cus ...
Django模型
定义模型类1) 数据库表名
模型类如果未指明表名,Django默认以小写app应用名_小写模型类名为数据库表名。
可通过db_table指明数据库表名。
2) 关于主键
django会为表创建自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后django不会再创建自动增长的主键列。
默认创建的主键列属性为id,可以使用pk代替,pk全拼为primary key。
3) 属性命名限制
不能是python的保留关键字。
不允许使用连续的下划线,这是由django的查询方式决定的。
定义属性时需要指定字段类型,通过字段类型的参数指定选项,语法如下:
1属性=models.字段类型(选项)
4)字段类型
类型
说明
AutoField
自动增长的IntegerField,通常不用指定,不指定时Django会自动创建属性名为id的自动增长属性
BooleanField
布尔字段,值为True或False
NullBooleanField
支持Null、True、False三种值
CharField
字符串,参数max_length表示最 ...