本文摘录自狂神说
公众号:狂神说
概述
Redis是什么?
Redis(Remote Dictionary Server),即远程字典服务!
是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。
免费和开源!是当下最热门的NoSQL技术之一!也被人们称之为结构化数据库!
Redis能干嘛?
1.内存存储、持久化,内存中是断电即失、所以说持久化很重要(rdb、aof)
2.效率高,可以用于高速缓存
3.发布订阅系统
4.地图信息分析
5.计时器、计数器(浏览量!)
特性
1.多样的数据类型
2.持久化
3.集群
4.事务
学习中需要用到的东西
1.狂神的公众号:狂神说
2.官网:https://redis.io/
3.中文网:http://www.redis.cn/
4.下载地址:通过官网下载即可!
注意:Wdinow在Github上下载(停更很久了!)
Redis推荐都是在Linux服务器上搭建的,我们是基于Linux学习!
Windows安装
1.下载安装包:https://github.com/dmajkic/redis/releases
2.下载完毕得到压缩包
3.解压到自己电脑上的环境目录下的就可以的!Redis十分的小,只有5M。
4. 开启Redis,双击运行服务即可!
5. 使用redis客户端来连接redis
记住一句话,Window下使用确实简单,但是Redis推荐我们使用Linux去开发使用!
Linux安装
1.下载安装包!(.tar.gz)
2.解压Redis的安装包!程序/opt
3.进入解压后的文件,可以看到我们redis的配置文件
4.基本的环境安装
yum install gcc-c++
make
make install
5.redis的默认安装路径:/usr/local/bin
6.将redis配置文件,复制到我们当前目录下
7.redis默认不是后台启动的,修改配置文件!
8.启动Redis服务!
9.使用redis-cli进行连接测试!
10.查看redis的进程是否开启!
11.如何关闭Redis服务呢?shutdown
12.再次查看进程是否存在
13.后面我们会使用单机多Redis启动集群测试!
测试性能
redis-benchmark是一个压力测试工具!
官方自带的性能测试工具!
redis-benchmark命令参数!
图片来自菜鸟教程:
我们来简单测试下:
# 测试:100个并发连接 100000请求
redis-benchmark -h localhost -p 6379 -c 100 -n 100000
如何查看这些分析呢?
基础的知识
redis默认有16个数据库
默认使用的是第0个
可以使用select进行切换数据库!
127.0.0.1:6379> select 3 #切换数据库
OK
127.0.0.1:6379[3]> DBSIZE #查看DB大小
(integer) 0
127.0.0.1:6379[3]> keys * #查看数据库所有的key
1) "name"
清除当前数据库:flushdb
清除全部数据库的内容:FLUSHALL
127.0.0.1:6379[3]> flushdb
OK
127.0.0.1:6379[3]> keys *
(empty list or set)
思考:为什么redis是6379!(了解一下即可!)
Redis是单线程的!
明白Redis是很快的,官方表示,Redis是基于内存操作,CPU不是Redis性能瓶颈,Redis的瓶颈是根据机器的内存和网络带宽,既然可以使用单线程来实现,就使用单线程了!所有就使用了单线程了!
Redis是C语言写的,官方提供的数据为100000+的QPS,完全不比同样是使用key-vale的Memecache差!
Redis为什么单线程还这么快?
- 误区1:高性能的服务器一定是多线程的?
- 误区2:多线程(CPU上下文会切换!)一定比单线程效率高!
先去CPU>内存>硬盘的速度要有所了解!
核心:redis是将所有的数据全部放在内存中的,所以说使用单线程去操作效率就是最高的,多线程(CPU上下文会切换:耗时的操作!!!),对于内存系统来说,如果没有上下文切换效率就是最高的!多次读写都是在一个CPU上的,在内存情况下,这个就是最佳的方案!