最近的项目需要用到Redis数据库和MySQL,恶补学习。

Redis的使用手册可以看:

https://redis.io/

https://www.runoob.com/redis/redis-tutorial.html

http://www.redis.cn/

Redis(Remote Dictionary Server ),即远程字典服务,其名字的来由也是这几个单词的首字母相加。是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。

Redis数据库是非关系型数据库的代表之一,即NoSQL,NoSQL并不是 no SQL,而是not only SQL,不仅仅是SQL的意思。

Redis数据库的运行速度非常惊人,在官方的测试中,读的速度是110000次/s,写的速度是81000次/s 。

为什么Redis的运行速度这么快,原因在于:

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

  而在这样的速度下,Redis却是单线程运行达到的。很多人会认为多线程的速度一定大于单线程,其实这是一个误区,单线程和多线程谁更快实际上是要看具体情况进行分析。

多线程的运行需要CPU进行上下文的切换,而上下文切换是需要时间的,当线程很多的时候,进行上下文切换反而会成为消耗时间比较多的操作。而Redis是大部分操作是基于内存的,CPU并不是Redis的瓶颈,Redis的瓶颈是机器的内存或者网络带宽,所以避免上下文切换浪费不必要的时间,直到今天也是采用的单线程的方案。

  注意:redis 单线程指的是网络请求模块使用了一个线程,即一个线程处理所有网络请求,其他模块仍用了多个线程。

这里还有一则轶事,是Redis默认端口号的来由。

我们都知道Redis的默认端口号是6379,其来由是Merz在九宫格手机上的数字顺序(去知乎偷了图片,原问题链接为:https://www.zhihu.com/question/20084750

6-M 3-e 7-r 9-z

Alessia Merz是一位意大利舞女、女演员。 Redis 作者 Antirez 早年看电视节目,觉得 Merz 在节目中的一些话愚蠢可笑,Antirez 喜欢造“梗”用于平时和朋友们交流,于是造了一个词 "MERZ",形容愚蠢,与 "stupid" 含义相同。

后来 Antirez 重新定义了 "MERZ" ,形容”具有很高的技术价值,包含技艺、耐心和劳动,但仍然保持简单本质“。

到了给 Redis 选择一个数字作为默认端口号时,Antirez 没有多想,把 "MERZ" 在手机键盘上对应的数字 6379 拿来用了。

或许大佬选东西就是这么随意:)

 
总之现在默认就是使用6379作为redis的端口号啦,可以在redis.conf文件中进行修改。
 
redis可以在windows和Linux下进行安装,但是windows下的模块很久都没有更新了,Redis的维护者们也不支持人们在Windows上面安装Redis,如果实在要安装,就去github上面找windows-redis的包吧,这里我就不给出了hhh。
讲redis在Linux下的安装步骤,我这里用的是Ubuntu。
 
使用Ubuntu 下的 apt命令进行安装
首先对Ubuntu的apt进行更新
$ sudo apt update

  然后一键安装

$ sudo apt install redis-server

  稍等一会就可以安装好了,redis的安装包很小

安装好之后我们启动redis

$ sudo service redis start

  

可以看到输入了之后回车好像没有什么反应,那怎么看是否启动了呢,可以使用

$ ps -ef | grep "redis"

  看到显示redis进程正在运行当中

也可以这样检查redis运行状态:

$ sudo systemctl status redis

  可以看到绿色的running,代表其正在运行

redis的重启使用命令:

$ sudo service redis restart

  

redis的停止使用命令:

$ sudo service redis stop

  这个时候再查看redis是否运行,可以看到已经没有运行了

接着我们在redis运行的时候,同时运行客户端进行连接

$ redis-cli

  

可以看到本地连接成功

使用PING-PONG进行测试与服务器的连接是否仍然生效,或者用于测量延迟值,如果服务器运作正常的话,会返回一个 PONG 。

可以看到我们的服务器是运行正常的

断开客户端使用命令

shutdown

  

最后退出,使用命令

exit

  

有空再写Redis里的五种基本类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

Redis数据库简介的更多相关文章

  1. 超强、超详细Redis数据库入门教程

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下 [本教程目录] 1.redis是什么2.redis的作者何许人也3.谁在使用red ...

  2. Redis数据库入门教程

    [使用redis客户端] 我们直接看一个例子: 复制代码 代码如下: //这样来启动redis客户端了 $ ./redis-cli //用set指令来设置key.value 127.0.0.1:637 ...

  3. Redis数据库的使用与介绍

    本周11-15号开始用Redis数据库在现有的平台基础上开发一个独立模块,这是一个边学习.边记录.边交流.边开发.边总结的过程.大部分随笔都是个人的“工作日志”,旨在记录自己学习过程中收集的一些资料, ...

  4. 超强、超详细Redis数据库入门教程(转载)

    这篇文章主要介绍了超强.超详细Redis入门教程,本文详细介绍了Redis数据库各个方面的知识,需要的朋友可以参考下   [本教程目录] 1.redis是什么 2.redis的作者何许人也 3.谁在使 ...

  5. linux下redis数据库的简单使用

    一.redis简介 Redis是一个key-value存储系统.和 Memcached类似,但是解决了断电后数据完全丢失的情况,而且她支持更多无化的value类型,除了和string外,还支持list ...

  6. Redis详解(一)------ redis的简介与安装

    工作中一直在用 Redis,但是一直没有进行系统的总结,这个系列的博客将整体的介绍 Redis 的用法. 1.Redis 的简介 Redis:REmote DIctionary Server(远程字典 ...

  7. Redis数据库 01概述| 五大数据类型

    1.NoSQL数据库简介 解决应用服务器的CPU和内存压力:解决数据库服务的IO压力: ----->>> ① session存在缓存数据库(完全在内存里),速度快且数据结构简单: 打 ...

  8. linux --mariadb/redis数据库篇

    mariadb ---磁盘型数据库 基础安装 配置好yum源后,软件就可以通过配置的yum源进行安装,按理来讲安装mysql直接通过   yum install mariadb  -y  便可安装,但 ...

  9. Redis系列(一):Redis的简介与安装

    原文链接(转载请注明出处):Redis系列(一):Redis的简介与安装 什么是 Redis Redis 是一个使用ANSI C 编写的开源.支持网络协议.基于内存.可选持久性的键值对数据库,它是一个 ...

随机推荐

  1. jquery实现回车键执行ajax

    $('#txtKey').bind('keypress',function(event){ if(event.keyCode == "13") { alert(1) }});

  2. 二级Parser应用教程

    01 应用背景 Ubidots是一个物联网云平台,通过设备友好的API(可通过HTTP / MQTT / TCP / UDP协议访问)简单安全地将硬件和数字输入连接到Ubidots Cloud. 它可 ...

  3. 数字取证autopsy——性能优化(二)

    介绍: 在开始使用autopsy之前,我们先对autopsy进行性能优化.如果还没有安装autopsy,请点击连接https://github.com/sleuthkit/autopsy/releas ...

  4. mysql 定时任务执行

    SET GLOBAL event_scheduler = ON; show variables like 'event_scheduler'; event_scheduler ON 创建event: ...

  5. EDI在服装行业的应用

    EDI发展迅速,从最初应用于汽车.物流.零售等行业开始,应用范围不断扩大.当下金融行业.服装行业也加入到使用EDI进行数据传输的队伍中.本文主要介绍服装行业通过EDI系统实现业务数据收发,本次EDI项 ...

  6. C# 简易的串口监视上位机实现

    实现上位机和下位机之间的通信,通常使用的是串口通信,接下来实现一个通过上位机和串口调试助手来完成串口通信测试. 首先创建一个WInfrom窗体应用工程文件,创建过程可参考https://www.cnb ...

  7. 面试阿里,字节跳动,华为必须知道的Java创建对象的5种方式

    Java创建对象的5种方式 1.直接new,调用了构造器2.通过clone(),没有调用构造器3.通过反射,调用了构造器4.通过反序列化,没有调用构造器5.通过Unsafe类的allocateInst ...

  8. 关于GoldWave为Vegas制作音频交叉淡化特效的教程分享

    在Vegas里对音频交叉淡化的处理,是通过将两段音频交叠.调整交叠部分的音量.选取交叉淡化类型这三步来实现的,许多步骤是在音频轨道拖动音量线来实现的,操作上不够灵敏精细.其实,单就音频的交叉淡化处理, ...

  9. Guitar Pro指弹入门——特殊拍号

    在吉他演奏技术不断提高的同时,我们经常会遇到一些奇怪的曲谱.他们的拍号不是正常的4/4拍或者3/4拍,而是5/4或者5/8等等我们不太了解的拍号,致使我们在演奏和练习之中陷入纷乱的节奏. 那么本期文章 ...

  10. E. Number of Simple Paths 题解(思维)

    题目链接 题目大意 给你n个点(\(\sum n<=2e5\)),n条边,求有多少条路径 题目思路 要明白任意两点的路径只能是1条或者2条 先topo找环(双向边也是可以找的) 然后把环上的每个 ...