Redis初步学习整理——第一节Redis安装及基础命令使用

前言

Redis是Nosql数据库,Nosql数据库是什么?Not only sql(不仅仅是sql),它可以存储很多东西,这里我直接引用比较严谨的解释了

随手记:
大数据时代的3V指:海量Volume,多样Variety,实时Velocity。
互联网需求的3高:高并发,高可扩,高性能。

Redis中文网站
Redis官网
什么是Nosql,Nosql的演变
Redis是什么?
Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。从2010年3月15日起,Redis的开发工作由VMware主持。从2013年5月开始,Redis的开发由Pivotal赞助。
读的速度是110000/1s,写的速度是81000/1s

Redis可以做什么

  1. 内存存储、持久化
  2. 效率高,可以用于高速缓存
  3. 发布订阅系统
  4. 地图信息分析
  5. 计时器,计数器(浏览量)

一、Redis的安装

1. windows安装

这个就不讲解了,看传送门

2. Linux安装

这个我没装过,自己搞起来,下面看教程
装了两次,一次是在虚拟机上,一次是在阿里云的服务器上,这次介绍一下阿里云服务器上安装的过程,其实就是多了个打开防火墙端口的过程
(1)下载linux Redis
Redis官网中有最新版的安装包,我这边是6.0.9版本
(2)上传至服务器
通过xftp上传至服务器,当然也可以直接在服务器中下载
(3)解压

tar zxvf redis-6.0.9.tar.gz

我这边修改了一下解压后的文件名,修改成了6.0.9

 mv redis-6.0.9 6.0.9

(4)配置环境
首先我感觉需要java环境,这个不讲了,可以看一下这个博客
因为redis是C++写的,所以还是很有必要安装一下C++的环境的,这个看下图

yum install gcc-c++

在make一下加载一下配置,最后make install将redis加载到
/usr/local/bin中,这样就可以在任何地方直接使用redis客户端了

make
make intall

当使用make 命令时,提示-bash: make: command not found,这个就需要安装一下make命令了

yum -y install gcc automake autoconf libtool make

这个命令执行需要几分钟,耐心等待一下

(5)修改redis.conf配置文件
这里需要修改一下配置文件redis.conf,主要是修改开放其他ip访问本地redis以及将redis设置为后台启动

将bind 127.0.0.1 修改为 bind *
将protected-mode yes 修改为protected-mode no
将daemonize no 修改为 daemonize yes

这些参数所对应的含义如下
Redis初步学习整理——第一节Redis安装及基础命令使用_第1张图片
这样就基本完成了,可以启动一下
启动命令

redis-server ./redis.conf

这个是以配置文件redis.conf的参数来启动的

可以用客户端去连接一下,如下,就是启动成功了
Redis初步学习整理——第一节Redis安装及基础命令使用_第2张图片
当然,如果想在本地电脑直接连接阿里云服务器中的redis的话,那么还需要开放对应的防火墙
Redis初步学习整理——第一节Redis安装及基础命令使用_第3张图片
这样就打开了6379的端口,我们就可以在本地通过客户端管理工具去连接了,如下
Redis初步学习整理——第一节Redis安装及基础命令使用_第4张图片
这个Redis管理工具就是RedisDesktopManager,有需要的可以去下载

以上内容部分参考长沙大鹏

随手记
mysql三大范式
第一范式:数据表每一列都要保证他的原子性,也就是说列不可以被分割
第二范式:属性必须完成依赖于主键
第三范式:所有非主属性不依赖与其他非主属性
参考自:https://www.cnblogs.com/gongcheng-/p/10901824.html

闲聊一句,等我把redis、rabbitmq这些基础使用搞定了,一定要研究各个组件的原理,真是任重而道远啊

mysql主从分离

二、Redis-benchmark 性能测试

先看一下benchmark,redis自带的性能测试,这个一图就可以看到所有的参数配置了
Redis初步学习整理——第一节Redis安装及基础命令使用_第5张图片
这里边如果不设置参数的话,默认的配置也可以测试的,测试的时候因为会循环测试多个命令,所以需要多等待一段时间

我的测试命令是

redis-benchmark -h 127.0.0.1 -p 6379 -c 50 -n 100000

Redis初步学习整理——第一节Redis安装及基础命令使用_第6张图片
这个简单的解释了测试的参数,我参考了其他博客,大概是这个意思

三、Redis基础知识

切换数据库命令

slect n

查看所在数据库大小

dbsize

清空当前数据库

flushdb

清空所有数据库

flushall

查看当前数据库所有的key

keys *
直接以代码方式介绍一下下面命令吧

127.0.0.1:6379> dbsize  # 当前数据库大小
(integer) 0
127.0.0.1:6379> set age 12 # 赋值
OK
127.0.0.1:6379> get age
"12"
127.0.0.1:6379> set name cainiao
OK
127.0.0.1:6379> keys * # 查看当前数据库所有key
1) "age"
2) "name"
127.0.0.1:6379> exists name # 查看name是否存在
(integer) 1
127.0.0.1:6379> move name 1  # 移除name, 1代表当前数据库
(integer) 1
127.0.0.1:6379> keys *
1) "age"
127.0.0.1:6379> set name cainiao
OK
127.0.0.1:6379> exists name age
(integer) 2
127.0.0.1:6379> expire name 10 # 设置name的过期时间,单位秒
(integer) 1
127.0.0.1:6379> ttl name # 查看当前name剩余过期时间
(integer) 1
127.0.0.1:6379> ttl name
(integer) -2
127.0.0.1:6379> get name
(nil)
127.0.0.1:6379> set name cainiao
OK
127.0.0.1:6379> ttl name
(integer) -1
127.0.0.1:6379> type name # 查看当前name的类型
string
127.0.0.1:6379> type age
string

可以在官网查询相关命令的使用方法
Redis初步学习整理——第一节Redis安装及基础命令使用_第7张图片

看下图

Redis初步学习整理——第一节Redis安装及基础命令使用_第8张图片

  1. Redis数据库数量是16个,默认数据库是第0个
  2. Redis是单线程的,它的性能瓶颈并不是CPU,而是内存和网络带宽带来的
  3. Redis是单线程的,为什么还这么快?(我看到网上有太多这样的追问了,我也记录一下)
  • 完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);
  • 数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的;
  • 采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗;
  • 使用多路I/O复用模型,非阻塞IO;
  • 使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求;

这里有几点需要着重记录的

  • 这里我们一直在强调的单线程,只是在处理我们的网络请求的时候只有一个线程来处理,一个正式的Redis Server运行的时候肯定是不止一个线程的,这里需要大家明确的注意一下!例如Redis进行持久化的时候会以子进程或者子线程的方式执行
  • 从Redis 4.0版本开始会支持多线程的方式,但是,只是在某一些操作上进行多线程的操作!
    关于单线程为什么这么快问题,整理自徐刘根

四、下节预告

下节将讲解Redis的五个常用类型的基础知识,望讨论指点

你可能感兴趣的:(数据库,redis)