4、Redis基础
redis性能
1、关于测试性能
官方自带的测试性能的工具
redis-benchmark          压力测试工具
	#进行压力测试。需求:测试:100个并发连接,100000个请求
	#redis-benchmark -h localhost -p 6379 -c 100 -n 1000000
	redis-benchmark -h 127.0.0.1 -p 6379 -c 100 -n 100000

2、redis简单介绍
1、趣事:
关于6379端口的来历:来源意大利的广告女郎(Alessia Merz),有兴趣的可以去搜一下!
2、Redis默认有16个数据库:
      默认16个数据库,类似数组下标从0开始,初始默认使用0号库
# Specify the syslog facility. Must be USER or between LOCAL0-LOCAL7.
# syslog-facility local0
# To disable the built in crash log, which will possibly produce cleaner core
# dumps when they are needed, uncomment the following:
#
# crash-log-enabled no
# To disable the fast memory check that's run as part of the crash log, which
# will possibly let redis terminate sooner, uncomment the following:
#
# crash-memcheck-enabled no
# Set the number of databases. The default database is DB 0, you can select
# a different one on a per-connection basis using SELECT <dbid> where
# dbid is a number between 0 and 'databases'-1
databases 16    #配置文件显示redis有16个数据库,默认从0开始
3、切换数据库
    select   <dbid>     <切换数据命令>    例如:select 8
127.0.0.1:6379> select 0     #切换到数据库0
OK
127.0.0.1:6379> select 8	 #切换到数据库8
OK
127.0.0.1:6379[8]> dbsize    #查看当前数据库的key的数量
(integer) 0
127.0.0.1:6379[8]>
3、flushdb清空当前库
127.0.0.1:6379[8]> select 0          #切换到0数据库
OK
127.0.0.1:6379> set name "123456"    #存值
OK
127.0.0.1:6379> get name             #获取当前值
"123456"
127.0.0.1:6379> select 8			 #切换到8号数据库
OK
127.0.0.1:6379[8]> set k1 v1         #进行设置值
OK
127.0.0.1:6379[8]> get k1			#获取值
"v1"
127.0.0.1:6379[8]> flushdb		    #清空当前库
OK
127.0.0.1:6379[8]> get k1			 #获取k1的值
(nil)
127.0.0.1:6379[8]> select 0		     #切换到0号数据库
OK
127.0.0.1:6379> get name			 #获取name,在0数据库存在
"123456"
127.0.0.1:6379>
4、flushall清空全部库
127.0.0.1:6379> select 0			#切换到0号数据库
OK
127.0.0.1:6379> keys *				#查看数据库的数据
(empty array)
127.0.0.1:6379> set k1 v1			#存值
OK
127.0.0.1:6379> get k1				#根据key获取值
"v1"
127.0.0.1:6379> select 8			#切换8数据库
OK
127.0.0.1:6379[8]> keys *
(empty array)
127.0.0.1:6379[8]> set k2 v2
OK
127.0.0.1:6379[8]> get k2
"v2"
127.0.0.1:6379[8]> keys *
1) "k2"
127.0.0.1:6379[8]> flushall		  #清空所有的数据库
OK
127.0.0.1:6379[8]> select 0
OK
127.0.0.1:6379> keys *
(empty array)
127.0.0.1:6379> select 8
OK
127.0.0.1:6379[8]> keys *
(empty array)
127.0.0.1:6379[8]>
5、Redis是单线程
Redis采用的是基于内存的采用的是单进程单线程模型的 KV 数据库,由C语言编写,官方提供的数据是可以达到100000+的QPS(每秒内查询次数)。这个数据不比采用单进程多线程的同样基于内存的 KV 数据库 Memcached 差。

      横轴是连接数,纵轴是QPS。此时,这张图反映了一个数量级,希望大家在面试的时候可以正确的描述出来,不要问你的时候,你回答的数量级相差甚远!
   6、Redis为什么这么快?
      1.完全基于内存,绝大部分请求是纯粹的内存操作,非常快速。数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1);
      2、数据结构简单,对数据操作也简单,Redis中的数据结构是专门进行设计的;
      3、采用单线程,避免了不必要的上下文切换和竞争条件,也不存在多进程或者多线程导致的切换而消耗 CPU,不用去考虑各种锁的问题,不存在加锁释放锁操作,没有因为可能出现死锁而导致的性能消耗;
      4、使用多路I/O复用模型,非阻塞IO;
      5、使用底层模型不同,它们之间底层实现方式以及与客户端之间通信的应用协议不一样,Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求;
   6、Redis基本概念
      1.Redis是一个开源的内存中的数据结构存储系统,它可以用作:数据库、缓存和消息中间件。
      2.数据库的工作模式按存储方式可分为:硬盘数据库和内存数据库。Redis 将数据储存在内存里面,读写数据的时候都不会受到硬盘 I/O 速度的限制,所以速度极快。
4、Redis基础的更多相关文章
- windows下使用redis,Redis入门使用,Redis基础命令
		
windows下使用redis,Redis入门使用,Redis基础命令 >>>>>>>>>>>>>>>> ...
 - [.net 面向对象程序设计深入](14)Redis——基础
		
[.net 面向对象程序设计深入](14)Redis——基础 很长一段时间没更新博客了,坚持做一件事,真不是件容易的事,后面我会继续尽可能的花时间更新完这个系列文章. 因这个系列的文章涉及的范围太大了 ...
 - linux redis基础应用 主从服务器配置
		
Redis基础应用 redis是一个开源的可基于内存可持久化的日志型,key-value数据库redis的存储分为内存存储,磁盘存储和log文件三部分配置文件中有三个参数对其进行配置 优势:和memc ...
 - [.net 面向对象程序设计深入](36)Redis——基础
		
[.net 面向对象程序设计深入](36)Redis——基础 很长一段时间没更新博客了,坚持做一件事,真不是件容易的事,后面我会继续尽可能的花时间更新完这个系列文章. 因这个系列的文章涉及的范围太大了 ...
 - mysql主从复制、redis基础、持久化和主从复制
		
一.mysql(mariadb)基础 1.基础命令(centos7操作系统下) 1.启动mysql systemctl start mariadb 2.linux客户端连接自己 mysql -uroo ...
 - Redis基础用法、高级特性与性能调优以及缓存穿透等分析
		
一.Redis介绍 Redis是一个开源的,基于内存的结构化数据存储媒介,可以作为数据库.缓存服务或消息服务使用.Redis支持多种数据结构,包括字符串.哈希表.链表.集合.有序集合.位图.Hype ...
 - Redis基础知识补充及持久化、备份介绍(二)--技术流ken
		
Redis知识补充 在上一篇博客<Redis基础认识及常用命令使用(一)--技术流ken>中已经介绍了redis的一些基础知识,以及常用命令的使用,本篇博客将补充一些基础知识以及redis ...
 - Spring-Boot之Redis基础
		
Spring-Boot之Redis基础 准备 Redis下载地址:github.com/MSOpenTech/redis/releases Redis数据库的默认端口号是 6379 开启Redis服务 ...
 - mongodb,Mysql,redis基础教程
		
数据库基础 1:mongodb基础教程 1:pymongo基础教程 2:Mysql基础教程 3:redis基础教程
 - Redis基础知识点面试手册
		
Redis基础知识点面试手册 基础 概述 数据类型 STRING LIST SET HASH ZSET(SORTEDSET) 数据结构 字典 跳跃表 使用场景 会话缓存 缓存 计数器 查找表 消息队列 ...
 
随机推荐
- 《Python语言程序设计》【第1周】Python基本语法元素
			
实例:温度转化 #TempConvert.py 单行注释 ''' TemConvert.py ''' # 多行注释 TempStr = input("请输入带有符号的温度值: ") ...
 - [cf1137F]Matches Are Not a Child's Pla
			
显然compare操作可以通过两次when操作实现,以下仅考虑前两种操作 为了方便,将优先级最高的节点作为根,显然根最后才会被删除 接下来,不断找到剩下的节点中(包括根)优先级最高的节点,将其到其所在 ...
 - [luogu1737]旷野大计算
 - Windows系统及硬件信息读取
			
Windows桌面端开发常常会需要读取系统信息或硬件信息作为用户标识,比如用于确认该设配是否已经激活程序.也可以使用随机生成的UUID来作为唯一标识,但是如果重装系统或重装软件都有可能导致标识丢失,因 ...
 - SpringCloud升级之路2020.0.x版-42.SpringCloudGateway 现有的可供分析的请求日志以及缺陷
			
本系列代码地址:https://github.com/JoJoTec/spring-cloud-parent 网关由于是所有外部用户请求的入口,记录这些请求中我们需要的元素,对于线上监控以及业务问题定 ...
 - 使用Shiro出现404的处理
			
在使用Shiro的@RequiresXXX的注解时,可能会导致页面访问出现404错误,解决方法为在ShiroConfig类中添加如下的配置: @Beanpublic DefaultAdvisorAut ...
 - 洛谷 P6071 『MdOI R1』Treequery(LCA+线段树+主席树)
			
题目链接 题意:给出一棵树,有边权,\(m\) 次询问,每次给出三个数 \(p,l,r\),求边集 \(\bigcap\limits_{i=l}^rE(p,i)\) 中所有边的权值和. 其中 \(E( ...
 - Atcoder Typical DP Contest S - マス目(状压 dp+剪枝)
			
洛谷题面传送门 介绍一个不太主流的.非常暴力的做法( 首先注意到 \(n\) 非常小,\(m\) 比较大,因此显然以列为阶段,对行的状态进行状压.因此我们可以非常自然地想到一个非常 trivial 的 ...
 - BZOJ3971 [WF2013]Матрёшка
			
*XXXIV. BZOJ3971 [WF2013]Матрёшка 摘自 DP 做题记录 II 例题 XXXIV. 仍然是神仙区间 DP. 直接设状态 \(f_{i,j}\) 表示区间 \([i,j] ...
 - Scrapy框架延迟请求之Splash的使用
			
Splash是什么,用来做什么 Splash, 就是一个Javascript渲染服务.它是一个实现了HTTP API的轻量级浏览器,Splash是用Python实现的,同时使用Twisted和QT.T ...