- 博客(58)
- 收藏
- 关注
原创 Redis——性能的优化
尽管Redis是一个非常快速的内存数据存储媒介,也并不代表Redis不会产生性能问题。Redis采用单线程模型,所有的命令都是由一个线程串行执行的,所以当某个命令执行耗时较长时,会拖慢其后的所有命令,这使得Redis对每个任务的执行效率更加敏感。针对Redis的性能优化,主要从下面几个层面入手:最初的也是最重要的,确保没有让Redis执行耗时长的命令使用pipelining将连续执行的命令组合执行操作系统的Transparent huge pages功能必须关闭:echo never>/
2020-05-23 11:47:23
240
原创 Redis——解决超卖问题
redis事务redis事务介绍:redis事务可以一次执行多个命令,本质是一组命令的集合。一个事务中的所有命令都会序列化,按顺序串行化的执行而不会被其他命令插入作用:一个队列中,一次性、顺序性、排他性的执行一系列命令multi指令的使用下面指令演示了一个完整的事物过程,所有指令在exec前不执行,而是缓存在服务器的一个事物队列中服务器一旦收到exec指令才开始执行事物队列,执行完毕后一次性返回所有结果因为redis是单线程的,所以不必担心自己在执行队列是被打断,可以保证这样的“原子性
2020-05-23 11:02:07
3265
原创 Redis——内存管理与数据淘汰机制
最大内存设置默认情况下,在32位OS中,Redis最大使用3GB的内存,在64位OS中则没有限制。在使用Redis时,应该对数据占用的最大空间有一个基本准确的预估,并为Redis设定最大使用的内存。否则在64位OS中Redis会无限制地占用内存(当物理内存被占满后会使用swap空间),容易引发各种各样的问题。通过如下配置控制Redis使用的最大内存:maxmemory 100mb在内存占用达到了maxmemory后,再向Redis写入数据时,Redis会:根据配置的数据淘汰策略尝试淘汰数据,释
2020-05-23 10:29:46
149
原创 详解Redis中两种持久化机制RDB和AOF
redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失。幸好Redis还为我们提供了持久化的机制,分别是RDB(Redis DataBase)和AOF(Append Only File)。下面针对这两种方式来介绍一下。由浅入深。一、持久化流程既然redis的数据可以保存在磁盘上,那么这个流程是什么样的呢?要有下面五个过程:(1)客户端向服务端发送写操作(数据在客户端的内存中)。(2)数据库服务端接收到写请求的数据(数据在服务端的内存中)。(3)服务端
2020-05-23 10:12:33
156
原创 Redis——雪崩、击穿、穿透介绍
redis穿透什么是redis穿透?1、查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存2、这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义3、在流量大时,可能DB就挂掉了,要是有人利用不存在的key频繁攻击我们的应用,这就是漏洞。发生场景:对于系统A,假设一秒 5000 个请求,结果其中 4000 个请求是黑客发出的恶意攻击。黑客发出的那 4000 个攻击,缓存中查不到,每次你去数据库里查,也查不到。举个栗子。数
2020-05-23 09:43:14
146
原创 scentos7安装redis,以及redis的主从配置
redis主从复制原理一、复制过程1、从节点执行 slaveof 命令2、从节点只是保存了 slaveof 命令中主节点的信息,并没有立即发起复制3、从节点内部的定时任务发现有主节点的信息,开始使用 socket 连接主节点4、连接建立成功后,发送 ping 命令,希望得到 pong 命令响应,否则会进行重连5、如果主节点设置了权限,那么就需要进行权限验证;如果验证失败,复制终止。6、权限验证通过后,进行数据同步,这是耗时最长的操作,主节点将把所有的数据全部发送给从节点。7、当主节点把当前的
2020-05-23 09:28:04
170
原创 sentinel哨兵模式详细介绍
sentinel哨兵模式介绍Sentinel(哨兵)是用于监控redis集群中Master状态的工具,是Redis 的高可用性解决方案,sentinel哨兵模式已经被集成在redis2.4之后的版本中。sentinel是redis高可用的解决方案,sentinel系统可以监视一个或者多个redis master服务,以及这些master服务的所有从服务;当某个master服务下线时,自动将该master下的某个从服务升级为master服务替代已下线的master服务继续处理请求。sentinel可以让r
2020-05-23 09:21:42
6289
原创 vue+ElementUI——表格分页(前端实现方法)
话不多说,直接上代码!!!!<template> <div class="list"> <div class="tab"> <el-table :data="tableData" border style="width: 100%"> <el-table-column type="index" label="序号" align='center' sortable
2020-05-21 22:56:12
580
原创 在阿里云Centos7.6上面配置Mysql主从数据库(master/slave),实现读写分离
今天总结一下利用MySQL主从配置,实现读写分离,减轻数据库压力。明确目的,部署mysql集群,采用一主一从的策略,写入操作使用主库,从库实时同步主库的数据,从库负责读取的业务,从而完成读写分离的目的。mysql主从同步的原理很简单,从库生成两个线程,一个I/O线程,一个SQL线程;i/o线程去请求主库 的binlog(二进制日志),并将得到的binlog日志写到relay log(中继日志) 文件中;主库会生成一个 log dump 线程,用来给从库 i/o线程传binlog;SQL 线程,会读取r
2020-05-13 10:30:25
303
2
转载 使用Python3.7+Django2.0.4配合vue.js2.0的组件递归来实现无限级分类(递归层级结构)
所谓的无限极分类是啥?其实简单点说就是一个人类可以繁衍出多个后代,然后一个后代又可以分另外多个后代这样无限繁衍下去(可以想象神奇动物在哪里2里面莱斯特兰奇的家族族谱),就好象linux系统你可以新建一个文件夹,然后在这个文件夹里又可以建一些个文件夹,在文件夹底下还可以建一些文件夹一样,随后使用tree命令就可以查看文件夹目录层级。那么这种层级结构也成为树结构在日常的开发需求里也是很常见的,比如美多商城系统的商品分类,课程的目录章节,以及以及论坛里的帖子回复等等,本次我们后台利用Django来写一个能够返回
2020-05-12 23:03:21
267
原创 基于Django实现推荐算法,完成推荐功能
推荐算法: 推荐算法是计算机专业中的一种算法,通过一些数学算法,推测出用户可能喜欢的东西,目前应用推荐算法比较好的地方主要是网络,其中淘宝做的比较好。发展背景: 推荐算法的研究起源于20世纪90年代,由美国明尼苏达大学 GroupLens研究小组最先开始研究,他们想要制作一个名为 Movielens的电影推荐系统,从而实现对用户进行电影的个性化推荐。首先研究小组让用户对自己看过的电影进行评分,然后小组对用户评价的结果进行分析,并预测出用户对并未看过的电影的兴趣度,从而向他们推荐从未看过并可能感
2020-05-12 22:36:24
3677
1
原创 vue项目部署到阿里云上详解(一次详细的部署)
首先,买一台云服务器是必要的,我使用的是阿里云服务器CentOS 7.4 64位操作系统。在整个vue-cli项目上线过程中,我遇到了很多问题。不过,最终圆满解决了,因此在这里记录一下。遇到的问题:云服务器连接vue项目打包上线nginx安装配置本地json数据无法访问vue路由页面无法访问一、使用Xshell连接云服务器1、百度下载一个Xshell+Xftp6并安装。2、打开Xshell,建立与远程服务器的连接注意:上图的主机就是阿里云上创建的实例的公网ip3、配置好主机后点
2020-05-12 22:24:37
8341
9
原创 Redis——五大数据类型实现原理
redis的五大数据类型实现原理1. 字符串(string)2. list(列表)3. hash(字典)4. set ( 集合对象 )5. Sorted set (有序集合对象)redis中所有数据结构都以唯一的key字符串作为名称,然后通过这个唯一的key来获取对应的value不同的数据类型数据结构差异就在于value的结构不一样1. 字符串(string)value的数据结构(数组)...
2020-05-04 10:39:08
214
原创 进程、协程、线程
进程、线程、协程进程进程的定义进程定义拓展内容:多道编程概念:进程通信:进程间互相访问数据的四种方法:进程池有了进程为什么还要线程?线程线程的定义线程定义拓展内容进程和线程的区别for循环同时启动多个线程:t.join(): 实现所有线程都执行结束后再执行主线程:setDaemon(): 守护线程,主线程退出时,需要子线程随主线程退出:GIL全局解释器锁:保证同一时间仅有一个线程对资源有操作权限:...
2020-05-04 10:13:57
168
原创 I/O 多路复用之 select、poll、epoll
I/O 多路复用可以在单线程的情况下,同时监听多个描述符 fd,一旦某个描述符就绪 (一般是读就绪或者写就绪),能够通知程序进行相应的读写操作。但是 select、poll、epoll 本质上都是同步 I/O,因为它们都需要在读写事件就绪后自己负责进行读写,也就是说这个读写过程是阻塞的,相对于异步 I/O 则无需自己负责进行读写,异步 I/O 的实现会负责把数据从内核拷贝到用户空间。1、sel...
2020-05-01 17:07:14
104
原创 MySQL中的锁
1、为什么需要锁到淘宝上买一件商品,商品只有一件库存,这个时候如果还有另一个人买,那么如何解决是你买到还是另一个人买到的问题?2、锁的概念1、锁是计算机协调多个进程或线程并发访问某一资源的机制。2、在数据库中,数据也是一种供许多用户共享的资源。如何保证数据并发访问的一致性、有效性是所有数据库必须解决的一个问题,锁冲突也是影响数据库并发访问性能的一个重要因素。3、 锁对数据库而言显得...
2020-05-01 15:42:46
145
原创 MySQL事务
InnoDB事务原理事务(Transaction)是数据库区别于文件系统的重要特性之一,事务会把数据库从一种一致性状态转换为另一种一致性状态。在数据库提交时,可以确保要么所有修改都已保存,要么所有修改都不保存。django中使用事务from django.db import transactiondef post(self,request) #申明事务开始 wi...
2020-05-01 15:00:29
224
原创 JWT的理解
什么是JWTJson web token (JWT), 是为了在网络应用环境间传递声明而执行的一种基于JSON的开放标准((RFC7519).该token被设计为紧凑且安全的,特别适用于分布式站点的单点登录(SSO)场景。JWT的声明一般被用来在身份提供者和服务提供者间传递被认证的用户身份信息,以便于从资源服务器获取资源,也可以增加一些额外的其它业务逻辑所必须的声明信息,该token也可直接...
2020-04-26 22:57:05
560
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅