最近的项目需要用到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. Excel字符串函数

    Excel字符串函数(用到的记录一下)"a1"代表a1单元格 mid(a1,start_num,nums)  a1格从第start_num取nums个,从1开始. len(a1) ...

  2. 手把手教你使用Vuex(二)

    在上一篇文章Vuex(一)中我们已经把Vuex需要用到的属性的单独页面引入到了store/index.js里面,所以我们接下来直接在这些js文件中写自己需要的代码就好. 1.Getter 了解:Get ...

  3. 154. Find Minimum in Rotated Sorted Array II(循环数组查找)

    Suppose an array sorted in ascending order is rotated at some pivot unknown to you beforehand. (i.e. ...

  4. mysql中数据类型DECIMAL(M,D)的说明

    本文转载自Boblim的文章http://www.cnblogs.com/fnlingnzb-learner/p/8108119.html 在MySQL数据类型中,例如INT,FLOAT,DOUBLE ...

  5. 12.java设计模式之代理模式

    基本介绍: 代理模式(Proxy)为一个对象提供一个替身,以控制对这个对象的访问.即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩展目标对象的功能,想在 ...

  6. Mac 安装并破解热部署插件JRebel详细教程

    热部署插件 JRebel 非常高效的解决了在IDEA中对 Java 代码修改重启Tomcat的效率问题,这样大大降低了项目开发的时间,不用重启即可重新编译修改过的Java代码! (1)IDEA中安装热 ...

  7. laravel 验证器使用

    1.前后端不分离 (form表单提交) 控制器定义验证规则 <?php namespace App\Http\Controllers\Admin; use Illuminate\Http\Req ...

  8. .Net orm 开源项目 FreeSql 2.0.0(满意的答卷)

    写在开头 2018年11月头脑发热到今天,一晃已经两年,当初从舒服区走向一个巨大的坑,回头一看后背一凉. 两年时间从无到有,经历数不清的日夜奋斗(有人问花了多长时间投入,答案:全职x2 + 两年无休息 ...

  9. 如何在Vegas中安装激活Continuum插件

    视频剪辑插件Boris FX Continuum安装程序包含了多达250种插件.而视频剪辑软件Vegas Pro 18 Suite中提供了Boris FX Continuum Film Style U ...

  10. ABBYY FineReader 15 PDF文档查看功能

    PDF文档查看功能是ABBYY FineReader 15(Windows系统)OCR文字识别软件中PDF编辑器的一项基础功能,可供用户查看,搜索PDF文档,无需进入编辑模式,也可复制其中的文本,图片 ...