Redis 为什么这么快?除了基于内存操作还有其他原因吗?
一、Redis为什么这么快?Redis是一个单线程应用,所说的单线程指的是Redis使用单个线程处理客户端的请求。虽然Redis是单线程的应用,但是即便不通过部署多个Redis实例和集群的方式提升系统吞吐, 从官网给出的数据可以看出,Redis处理速度非常快。
Redis性能非常高的原因主要有以下几点:
内存存储:Redis是使用内存(in-memeroy)存储,没有磁盘IO上的开销
单线程实现:Redis使用单个线程处理请求,避免了多个线程之间线程切换和锁资源争用的开销
非阻塞IO:Redis使用多路复用IO技术,在poll,epool,kqueue选择最优IO实现
优化的数据结构:Redis有诸多可以直接应用的优化数据结构的实现,应用层可以直接使用原生的数据结构提升性能
二、什么是IO多路复用技术首先说一下,什么是IO多路复用技术。
比如,现在我们模拟一个tcp服务器处理30个客户的socket,如何快速的处理掉这30个请求呢?
在不了解原理的情况下,我们类比一个实例:在课堂上让全班30个人同时做作业,做完后老师检查,30个学生的作业都检查完成才能下课。如何在有限的资源下,以最 ...
mysql索引
1 索引MySQL中的索引由MySQL来维护,不需要人为维护,MySQL中的索引分成5类:主键索引、唯一索引、普通索引、全文索引和组合索引。
主键索引:主键是一种唯一索引,但它必须被指定为primary key,每个表只能有一个主键(主键并代表只有一列数据,因为主键也可以有联合主键,即多个列的唯一即可)
唯一索引:索引列的所有值都只能出现一次,即必须唯一,但是值也可以为空,空可以出现多次
普通索引:基本的索引,值可以为空,没有唯一性的限制
组合索引:表中的多个列组成一个索引,专门用于组合搜索
全文索引:全文索引的索引类型为FULLEXT,全文索引可以在varchar、char、text类型的列上创建。
2 MySQL存储引擎MySQL有两种存储引擎,分别是InnoDB和MyISAM,他们的区别如下:
MyISAN
InnoDB
索引类型
非聚簇索引
聚簇索引
支持事务
否
是
支持表锁
是
是
支持行锁
否
是
支持外键
否
是
支持全文索引
是
是(5.6以后支持)
适合操作类型
大量select
大量insert、delete、update ...
修改xshell的配色方案
1 自己配色参考这篇博客->自己配色方案教程
自己配色方案下载
2 其他人的配色方案使用方式:
2.1 https://github.com/netsarang/Xshell-ColorScheme1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681 ...
使用Java代码操作redis
在Java项目中操作redis需要相应的jedis-jar包支持,可以从https://mvnrepository.com/下载相应的包,或者创建maven项目,在pom.xml中指定相应的依赖,依赖如下:
123456<!-- https://mvnrepository.com/artifact/redis.clients/jedis --><dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>3.6.3</version></dependency>
然后创建测试类:
12345678910111213import redis.clients.jedis.Jedis;public class RedisTest { public static void main(String[] args) { //连 ...
nsq入门,Java项目中使用nsq消息队列
1 windows命令行使用nsq到nsq官网选择GitHub下载相应的发行版本,选择Windows发行版下载。
下载完成之后,解压并进入到bin目录,可以看到有如下的文件:
然后按照nsq官网的quick start快速启动nsq,首先进入到bin目录:
开启一个cmd窗口,开启nsqlookupd
1nsqlookupd
再开启一个cmd窗口,开启nsqd
1nsqd --lookupd-tcp-address=127.0.0.1:4160
再开启一个窗口,开启nsqadmin
1nsqadmin --lookupd-http-address=127.0.0.1:4161
此时,执行完上面的命令之后,你就可以到浏览器输入以下地址进入管理页面:http://127.0.0.1:4171/
123456789101112Topic:主题名称 empty Queue:清空队列 Delete Topic : 删除主题 Pause Topic : 暂停主题 Memory+Disk : 内存和磁盘 Messages : 表示消息总数 channels : 消息通道 ...
windows环境下curl报错:Protocol "http" not supported or disabled in libcurl
windows环境下curl报错:Protocol “‘http” not supported or disabled in libcurl原因:window命令行不支持单括号引用解决方案:将单括号删除
例如:curl ‘http://localhost:9200/?pretty’在window命令行应改为:curl http://localhost:9200/?pretty
原始解决方案来源:https://stackoverflow.com/questions/6684235/perl-curl-1-protocol-http-not-supported-or-disabled-in-libcurl
curl在windows上使用的注意事项:curl -XPOST http://localhost:9200/video/md/1 -d “{“tvId\”:\”1001\”,\”name\”:\”test\”,\”order\”:1}” -d 内的参数需要用双引号包起来,数据中的双引号需要转义
在学习操作elasticSearch时在windows用curl,参考:http://ww ...
php数组教程
1 数组php数组能够在单个变量中存储多个值:
123<?php $cars=array("Volvo","BMW","Toyota"); echo "I like " . $cars[0] . ", " . $cars[1] . " and " . $cars[2] . ".";
1I like Volvo, BMW and Toyota.
1.1 创建数组在php中创建数组的方式有以下几种,由于php是一种弱类型的语言,所以不需要特别指明数组中存放的数据类型,一般php数组就相当于一个百宝箱,什么都可以放。
123456789<?php $arr = array(); //1 $arr2 = []; //2 $arr3 = [1, 2, '23', $arr]; //3 $arr4 = array(1, 2, '23', $arr3); //以上 ...
Notice: Undefined index: ZZZZZZWTF? [duplicate]
1 Notice: Undefined index: ZZZZZZWTF? [duplicate]再运行PHP脚本的时候,明明脚本语法什么的都没有问题,但是却有如下的提示信息:
123456Notice: Undefined index: submit in C:\xampp\htdocs\globalautoparts\register.php on line 36Notice: Undefined index: fullname in C:\xampp\htdocs\globalautoparts\register.php on line 40Notice: Undefined index: username in C:\xampp\htdocs\globalautoparts\register.php on line 41Notice: Undefined index: password in C:\xampp\htdocs\globalautoparts\register.php on line 42Notice: Undefined index: repeatpassword ...
composer使用教程以及curl error 7 while downloading https://repo.packagist.org/xxx: Failed to connect to 127.0.0.1 port 8888: Connection refused问题解决
1 何为composerA Dependency Manager for PHP这是composer的官网给自己的定义。composer是PHP语言中的一个包管理器,类似Java中的maven。
2 安装2.1 Windows安装
下载安装包自动安装
点击Composer-Setup.exe下载windows下的二进制安装包。下载完成之后,直接下一步安装即可。
手动安装
翻页到composer官网的下半部分,选择manual download:
下载的是一个文件,文件名为:composer.phar,将这个文件放到自己的composer的文件夹中,然后将PHP的二进制可执行文件添加到Windows的环境变量中。
然后手动创建一个文件,文件名为:composer.bat,在该文件中写入以下内容:
12@ECHO OFFphp "%~dp0composer.phar" %*
保存之后,双击这个文件运行,然后就可以在命令行中使用composer命令测试是否安装成功。
3 composer关闭127.0.0.0:8888代理安装composer的时候, ...
clone with ssh和clone with https有什么区别
1 区别clone with ssh方式的链接形式形式如下:
1git clone https://github.com/project/repo.git
clone with https方式的链接形式如下:
1git clone git@github.com:project/repo.git
区别就是所用的协议不同:
https用443端口,可以对repo根据权限进行读写,只要有账号密码就可进行操作。
ssh则用的是22端口,也可以对repo根据权限进行读写,但是需要SSH Keys授权,这个key是通过ssh key生成器生成的,然后放在github上,作为授权的证据,这样的话就不需要用户名和密码进行授权了。
Reference
https://stackoverflow.com/questions/11041729/why-does-github-recommend-https-over-ssh
https://blog.csdn.net/sinat_36246371/article/details/79885261
写在最后欢迎大家关注鄙人的公众号【麦田里的守望者zh ...