命令模式

Redis集群模式2-集群模式

牧云@^-^@ 提交于 2020-01-29 17:06:06
redis高可用的集群模式 使用集群,只需要将每个数据库节点的cluster-enable配置打开即可。每个集群中至少需要三个主数据库才能正常运行。即使使用哨兵,redis每个实例也是全量存储,每个redis存储的内容都是完整的数据,浪费内存且有木桶效应。为了最大化利用内存,可以采用集群,就是分布式存储。即每台redis存储不同的内容。集群至少需要3主3从,且每个实例使用不同的配置文件,主从不用配置,集群会自己选。 修改每个实例的配置文件: 集群的运行: 节点的握手方式:在A节点上执行cluster <ip> <port>命令(IP,port是B节点的地址),通过ping-pong方式来确定两个节点的握手。 集群的每个数据库都被分为16384个槽,通过cluster addslots命令可以将一个或多个槽分配给节点。只有所有16384个槽被分配完了,当前集群才是上线状态,只要有一个槽没有被分配,集群就是下线状态。 每个节点都有自己的slots数组(clusterNode.slots)来决定自己处理哪些槽,同时节点也会将自己的slots数组告知其他节点,这样每个节点处理的槽的分配在整个集群都是透明的。 clusterState结构中的slots数组(clusterState.slots)记录了集群中所有16384个槽的指派信息,slots数组包含16383个项

Redis事务

[亡魂溺海] 提交于 2020-01-29 17:04:31
事务命令: multi 开启事务,此时输入的命令会入队FIFO。 exec 依次执行队列中的命令,即使遇到执行错误的命令,也不会影响其他命令,redis没有事务回滚机制。 discard 放弃事务 watch CAS乐观锁,用法是在multi命令之前执行,监控某个key值,如果在命令输入完成后执行exec命令的过程中,此key被其他客户端改变,则事务拒绝执行。(REDIS_DIRTY_CAS标示被打开,exec执行前会判断此标示,如果被打开则拒绝执行) 事务的ACID性质: 原子性(Atomicity):当前事务的所有命令都会被执行,即使是其中一个出现报错,剩余命令也会继续执行完,要么执行完,要么不执行,所以具有原子性,redis事务不具有回滚性,因为作者觉得出现单个命令出现问题是编码水平的问题,所以没必要为redis设计回滚机制。 一致性(Consistency): 一致指的是数据符合数据库本身的定义和要求,没有包含非法或者无效的错误数据。 入队错误:redis就会拒绝执行,所以不会对一致性有影响。 执行错误:执行错误,redis在执行过程中会识别异常,数据不会被修改,所以不会影响一致性。 服务器停机:redis重启后会自动去寻找可用的RDB或者AOF来恢复数据,此时数据肯定是一致的,否则就会恢复一个空数据库,所以数据库始终是一致的。 隔离性(Isolation):

vim编辑器

我只是一个虾纸丫 提交于 2020-01-29 11:40:28
vim编辑器 vim(vimsual)是Linux/UNIX系列OS中通用的全屏编辑器。 1 vim简介 1.1 vim的模式 vim分为三种模式:普通(命令)模式,编辑状态和视觉模式。在命令模式下,所键入的字符系统均作命令来处理,如:q代表退出,而编辑状态则是用来编辑文本资料的。当你进入vim时,会首先进入命令模式。 左下角有INSERT字样就是编辑模式,有VISUAL的字样就是视觉模式,否则就是命令模式 从命令模式切换到编辑模式,有如下一些常用命令: a 从光标后面开始添加文本(表示新增 append) A 从光标所在行的末尾开始添加文本 i 从光标前面开始插入文本(表示插入 insert) I 从光标所在行的开始处插入文本 从编辑模式切换到命令模式,按下ESC按键 2 vim内常用的命令操作 2.1 删除与修改 x 删除光标处的字符 dd 删除光标所在的整行 3dd 删除光标所在行以及下面的两行(删除3行) D或d$ 删除光标到行尾的文本,常用语删除注释语句 (等价于d$) d^ 删除光标到行首的文本 dw 删除一个字 d3w 删除三个字 yy 复制光标所在的整行 [n]yy 从光标开始往下复制n行,[n]表示一个整数 p 将复制后的文本粘贴到光标处 u 撤销上次操作 2.2 光标移动 ^ 光标移动到行首 $ 光标移动到行尾 ctrl+d 向下翻半页(down) ctrl+f

linux命令:cp

坚强是说给别人听的谎言 提交于 2020-01-29 09:07:53
1、命令介绍: cp用来复制文件或目录,全称是copy 2、命令格式: cp [选项] [-T] 源 目的 或cp [选项] 源 目录 或cp [选项] -t 目录 源 3、命令参数: -a, --archive 等于-dR --preserve=all --backup[=CONTROL 为每个已存在的目标文件创建备份 -b 类似--backup 但不接受参数 --copy-contents 在递归处理是复制特殊文件内容 -d 等于--no-dereference --preserve=links -f, --force 如果目标文件无法打开则将其移除并重试(当 -n 选项 存在时则不需再选此项) -i, --interactive 覆盖前询问(使前面的 -n 选项失效) -H 跟随源文件中的命令行符号链接 -l, --link 链接文件而不复制 -L, --dereference 总是跟随符号链接 -n, --no-clobber 不要覆盖已存在的文件(使前面的 -i 选项失效) -P, --no-dereference 不跟随源文件中的符号链接 -p 等于--preserve=模式,所有权,时间戳 --preserve[=属性列表 保持指定的属性(默认:模式,所有权,时间戳),如果 可能保持附加属性:环境、链接、xattr 等 -R, -r, --recursive

linux服务器性能查看

谁说胖子不能爱 提交于 2020-01-29 09:00:45
1.1 cpu性能查看 1、查看物理cpu个数: cat /proc/cpuinfo |grep "physical id"|sort|uniq|wc -l 2、查看每个物理cpu中的core个数: cat /proc/cpuinfo |grep "cpu cores"|wc -l 3、逻辑cpu的个数: cat /proc/cpuinfo |grep "processor"|wc -l 物理cpu个数*核数=逻辑cpu个数(不支持超线程技术的情况下) 1.2 内存查看 1、查看内存使用情况: #free -m total used free shared buffers cachedMem: 3949 2519 1430 0 189 1619-/+ buffers/cache: 710 3239Swap: 3576 0 3576total:内存总数 used:已经使用的内存数 free:空闲内存数 shared:多个进程共享的内存总额 - buffers/cache:(已用)的内存数,即used-buffers-cached + buffers/cache:(可用)的内存数,即free+buffers+cached Buffer Cache用于针对磁盘块的读写; Page Cache用于针对文件inode的读写,这些Cache能有效地缩短I/O系统调用的时间。

Docker容器化部署Python应用

纵饮孤独 提交于 2020-01-29 04:59:10
1. 简介 Docker 是目前主流IT公司广泛接受和使用的,用于构建、管理和保护它们应用程序的工具。 容器,例如Docker允许开发人员在单个操作系统上隔离和运行多个应用程序,而不是为服务器上的每个应用程序专用一个虚拟机。使用容器更轻量级,可以降低成本、更好地使用资源和发挥更高的性能。 本文将使用Flask开发一个简单的Python web应用程序,并为“容器化”做好准备。然后创建一个Docker映像,并将其部署到测试和生产环境中。 注意: 请确保机器上已安装Docker,如果没有请参考 Docker官方安装教程 。 2. Docker介绍 Docker是一种工具,它使开发人员能够交付他们的应用程序(以及库或其他依赖项),确保他们可以使用正确的配置运行,而不受部署环境影响。 这是通过将应用程序隔离在单独的容器中来实现的,这些应用程序虽然被容器分隔开,但是却可以共享操作系统和其他资源。 Docker包含两部分: Docker Engine — 应用打包工具,用于封装应用程序。 Docker Hub — 用于管理云上容器应用程序的工具。 3.为何选择容器 了解容器的重要性和实用性非常重要,虽然它和直接将应用部署到服务器没有多大区别,但是当涉及到比较复杂的且相当吃资源的应用,尤其是多个应用部署在同一台服务器,或是同一应用要部署到多台服务器时。容器就变得非常有用。 在容器之前,这是通过

linux命令t---tcpdump

本秂侑毒 提交于 2020-01-29 03:29:29
文章目录 原理介绍 输出结果分析 参数含义 参数模式 常用技巧 expression 表达式 原语组合方式 原理介绍 输出结果分析 参数含义 -c count 抓取指定数练数据包后直接退出 -D 显示网卡名称列表 -e:输出数据链路层头部信息,包含mac地址 -i:指定具体网卡,抓取指定网卡流量。如果不指定的话,会默认抓取最小网口流量名称 例如eth0 -n:不转化ip和端口名称,使用ip和端口号数字显示 -nn:除了-n的作用外,还把端口显示为数值,否则显示端口服务名 -P:指定要抓取的包是流入还是流出的包。可以给定的值为"in"、"out"和"inout",默认为"inout"。 tcpdump host 172.16.1.1 -n -Q inout(in|out|inout )可以监听流入流出,或仅流入,或仅流出 默认是流入流出 -q:获取简洁信息,直观观察 -r + 文件名称:读取数据包 -s len:设置tcpdump的数据包抓取长度为len,如果不设置默认将会是65535字节。对于要抓取的数据包较大时,长度设置不够可能会产生包截断,若出现包截断, :输出行中会出现"[|proto]"的标志(proto实际会显示为协议名)。但是抓取len越长,包的处理时间越长,并且会减少tcpdump可缓存的数据包的数量, :从而会导致数据包的丢失,所以在能抓取我们想要的包的前提下

redis压测工具的使用

可紊 提交于 2020-01-29 00:32:57
使用本文之前 比如集群在某个机器上7001端口有redis节点 记得使用ip 端口 比如如下 redis-benchmark -h 10.166.15.36 -p 7001 -n 100000 -q script load "redis.call('set','foo','一二三四五六七八九十')" ./redis-benchmark -h 10.166.15.36 -p 7001 -q -n 100000 还有如何压测多大数据量的数据 -d <size> Data size of SET/GET value in bytes ( default 2 ) 参数 对get也有用!!! 666 下面命令是对3000字节的数据进行get set的操作 redis-benchmark -h 10.166.15.36 -p 7001 -t set,get -n 100000 -q -d 3000 参考 Redis-benchmark是官方自带的Redis性能测试工具,可以有效的测试Redis服务的性能。 使用说明如下: Usage: redis-benchmark [-h <host>] [-p <port>] [-c <clients>] [-n <requests]> [-k <boolean> ] -h <hostname> Server hostname ( default 127

Linux后门入侵检测工具,附bash漏洞解决方法

☆樱花仙子☆ 提交于 2020-01-29 00:32:00
一、rootkit简介 rootkit是Linux平台下最常见的一种木马后门工具,它主要通过替换系统文件来达到入侵和和隐蔽的目的,这种木马比普通木马后门更加危险和隐蔽,普通的检测工具和检查手段很难发现这种木马。rootkit攻击能力极强,对系统的危害很大,它通过一套工具来建立后门和隐藏行迹,从而让攻击者保住权限,以使它在任何时候都可以使用root权限登录到系统。 rootkit主要有两种类型:文件级别和内核级别,下面分别进行简单介绍。 1、文件级别rootkit 文件级别的rootkit一般是通过程序漏洞或者系统漏洞进入系统后,通过修改系统的重要文件来达到隐藏自己的目的。在系统遭受rootkit攻击后,合法的文件被木马程序替代,变成了外壳程序,而其内部是隐藏着的后门程序。通常容易被rootkit替换的系统程序有login、ls、ps、ifconfig、du、find、netstat等,其中login程序是最经常被替换的,因为当访问Linux时,无论是通过本地登录还是远程登录,/bin/login程序都会运行,系统将通过/bin/login来收集并核对用户的账号和密码,而rootkit就是利用这个程序的特点,使用一个带有根权限后门密码的/bin/login来替换系统的/bin/login,这样攻击者通过输入设定好的密码就能轻松进入系统。此时

except实现跳板机穿透登陆远程服务器

泪湿孤枕 提交于 2020-01-28 17:44:03
前言 公司有多台服务器,必须先登录跳板机,再从跳板机登录服务器,频繁的输入命令很繁琐,有没有更好的方式去实现。 expect 可以完美的帮助你 涉及概念 Tcl : (Tool command language)一种很强大的脚本语言 expect : 基于Tcl开发的语言包,请自行安装 except核心命令 send :命令向进程发送字符串。 expect :命令等待进程的某些字符串。expect支持正规表达式并能同时等待多个字符串,并对每一个 字符串执行不同的操作。expect还能理解一些特殊情况,如超时和遇到文件尾。 spawn :激活一个Unix程序来进行交互式的运行。 interact :允许用户交互 send命令用法 send "hello god.wei" 输出 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-C0BZ7A7K-1580201367165)(/img/bVbk79E)] send命令会直接将字符串发送到进程 那如果我要运行命令呢,可以这样 send "pwd\r" expect命令 用于接受进程的输出,然后我们可以通过判断输出结果来执行不同的操作 expect patlist1 action1 patlist2 action2… 该命令一直等到当前进程的输出和以上的某一个模式相匹配,或者等到时间超过一个特定的时间长度