linux/docker/redis/nginx等
文章平均质量分 92
linux/docker/redis/nginx等技术的理解和笔记
miller.zc
记录和分享一些工作和学习中的笔记
展开
-
缓存穿透,缓存击穿,缓存雪崩原因+解决方案
一、缓存穿透缓存穿透就是redis没有该数据,数据库也没有该数据,外部不断的请求就会穿透redis,对底层数据库造成压力。解决的根本在与,判断出redis和数据库不可能有的数据,将这个数据拦截在请求redis之前。解决办法是利用布隆过滤器:1、在redis安装布隆过滤器模块2、在添加数据的时候,用springboot-redis的api,计算出值的hash值,将这些值对应的下标在布隆数组里面设置成1,这样就可以保证之后可以判断值是否必定不存在了。因为后面请求的值hash之后,如果计算出的下标里原创 2020-12-20 12:12:32 · 271 阅读 · 0 评论 -
布隆过滤器
一、数据结构布隆过滤器本质上就是一个bit数组,bit是只有0和1,数组有下标。二、哈希映射为什么布隆适合做大数据的筛选,快速并且不占用内存?因为工作原理是:1、一个值首先经过多次hash,会得到不同的下标,将这些bit数组的下标对应数据设置成1。2、如果这些下标上的值有一个为0,则代表这个值之前是不存在的。 如果这些下标上的值都为1,也不能代表这个值是存在的 (因为hash碰撞,也许其它值的几次hash后也是一样的下标的值)。 所以布隆过滤器可以判断一定不存在的值,判断不了原创 2020-12-18 15:50:39 · 162 阅读 · 2 评论 -
redis数据备份
一、RDB 详解RDB 是 Redis 默认的持久化方案。就是在配置文件里面设置多久时间之内,执行了多少次写操作,就生成一份数据快照dump.rdb文件,备份到指定是目录下。redis.conf 文件:以上就是900秒内写操作执行了1次 300秒/10次 60秒/10000次都会进行数据备份。触发RDB快照:1 在指定的时间间隔内,执行指定次数的写操作(根据配置文件中设置的来执行)2、执行save(阻塞, 只管保存快照,其他的等待) 或者是bgsave (异步)命令3、执行flush原创 2020-12-18 15:47:42 · 3457 阅读 · 2 评论 -
redis哨兵模式
一、原理哨兵模式就是在主从配置好的基础上,再添加几个哨兵来监控主节点,当主节点宕机之后,再自动推选出一个从节点来替代主节点。哨兵监控主节点和从节点,当一个哨兵监控到从节点宕机之后,就会将此从节点的状态改为失效。当监控到主节点宕机之后,还需要通知其它的哨兵进行投票,投票通过再将主节点改为失效。哨兵有两个作用:1、过发送命令,让Redis服务器返回监控其运行状态,包括主服务器和从服务器。2、当哨兵监测到master宕机,会自动将slave切换成master,然后通过发布订阅模式通知其他的从服务器,原创 2020-12-18 15:42:14 · 253 阅读 · 0 评论 -
redis分布式锁
一、分布式锁的核心概念分布式锁的实现有很多,比如基于数据库、memcached、Redis、系统文件、zookeeper等。核心思想都差不多,无非是做某些操作的时候,给某些资源设定一个标记,当前线程还没有执行完操作的时候,其他线程过来执行,就会读取到这个标记(表示已经被占用了),就会进行等待,等待占用的资源被释放(标记清除),然后新的线程再执行这个操作。这样就等保障数据的隔离性,一段时间内只能有一个线程做某些操作。为了确保分布式锁可用,我们至少要确保锁的实现同时满足以下四个条件:1、互斥性原创 2020-12-18 15:38:44 · 117 阅读 · 0 评论 -
关于Nginx(反向代理/负载均衡/动静分离)
一、Nginx是个什么东西?我理解为,其实就是个反向代理服务器,客户端请求这个服务器,这个Nginx服务器接收到请求,然后根据nginx.conf里面的配置文件,将请求均匀的转发到对应的多个tomcat服务器(也就是所谓的负载均衡,用来减少服务器压力)。二、什么是反向代理?反向代理可正向代理的区别是什么?看这两张图就知道了:我觉得区别就在于:正向代理是客户端的行为(在客户端发送...原创 2020-01-15 22:52:01 · 230 阅读 · 0 评论 -
关于Redis(操作备份\主从\哨兵模式的理解)
一、Redis的5种数据类型redis的数据都是以key/value值存储的,五大数据类型主要是指的value值。(1)、STRING类似于java中的String,是最基本的数据类型,可以包含任何数据,比如一个序列化对象或者一个jpg图片,字符串大小上限是512M。数据结构:set k1 v1(2)、LIST 类似于java中的LIST<String>,是一个简单的...原创 2020-01-15 21:28:16 · 401 阅读 · 0 评论 -
docker-compose的使用
一、为什么需要docker-compose。根据上篇博客,我们已经可以用Dockerfile的方式来构建镜像,然后通过docker run 镜像名(Id)的方式来构建并且运行容器。但是一个应用的启动,肯定不是只依赖于一个服务的。比如一个springBoot项目,至少需要redis\mysql\和项目jar,这个时候我们需要构建三次镜像和容器并启动,未免太麻烦了(可以多个服务放在一个容器里...原创 2020-01-06 09:12:01 · 145 阅读 · 0 评论 -
docker基础操作
1、为什么要用docker:(1)、解决"我机器上可以运行,为什么到你机器上就不行了"的问题将开发环境和应用打包成镜像,然后将镜像放到服务器上面去,那么开发环境和部署的环境都是这个容器里面的,就不存在什么因为环境问题导致的扯皮了。 (2)、更快速的交付和部署如果不用docker,要你安装一百台服务器的环境,然后部署相同到服务器上,估计你要发疯的。就算你说你把虚拟机打包成镜像安装,那安...原创 2020-01-02 18:48:36 · 149 阅读 · 0 评论 -
linux基础操作
****前言:本文章记录在linux系统下,如果创建、删除、解压、安装、复制、移动、权限等基本操作和我的一些理解。一、linux系统设置桥接网络(安装centos系统和vm就不说了,网上一搜一大堆)1、设置桥接网络:(1)、首先看下网络情况:ifconfig,可以看到网卡ens33没有ip地址(2)、修改网卡文件:命令:vi /etc/sysconfig/network-scrip...原创 2019-12-31 15:15:05 · 127 阅读 · 0 评论