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基础的更多相关文章

  1. windows下使用redis,Redis入门使用,Redis基础命令

    windows下使用redis,Redis入门使用,Redis基础命令 >>>>>>>>>>>>>>>> ...

  2. [.net 面向对象程序设计深入](14)Redis——基础

    [.net 面向对象程序设计深入](14)Redis——基础 很长一段时间没更新博客了,坚持做一件事,真不是件容易的事,后面我会继续尽可能的花时间更新完这个系列文章. 因这个系列的文章涉及的范围太大了 ...

  3. linux redis基础应用 主从服务器配置

    Redis基础应用 redis是一个开源的可基于内存可持久化的日志型,key-value数据库redis的存储分为内存存储,磁盘存储和log文件三部分配置文件中有三个参数对其进行配置 优势:和memc ...

  4. [.net 面向对象程序设计深入](36)Redis——基础

    [.net 面向对象程序设计深入](36)Redis——基础 很长一段时间没更新博客了,坚持做一件事,真不是件容易的事,后面我会继续尽可能的花时间更新完这个系列文章. 因这个系列的文章涉及的范围太大了 ...

  5. mysql主从复制、redis基础、持久化和主从复制

    一.mysql(mariadb)基础 1.基础命令(centos7操作系统下) 1.启动mysql systemctl start mariadb 2.linux客户端连接自己 mysql -uroo ...

  6. Redis基础用法、高级特性与性能调优以及缓存穿透等分析

     一.Redis介绍 Redis是一个开源的,基于内存的结构化数据存储媒介,可以作为数据库.缓存服务或消息服务使用.Redis支持多种数据结构,包括字符串.哈希表.链表.集合.有序集合.位图.Hype ...

  7. Redis基础知识补充及持久化、备份介绍(二)--技术流ken

    Redis知识补充 在上一篇博客<Redis基础认识及常用命令使用(一)--技术流ken>中已经介绍了redis的一些基础知识,以及常用命令的使用,本篇博客将补充一些基础知识以及redis ...

  8. Spring-Boot之Redis基础

    Spring-Boot之Redis基础 准备 Redis下载地址:github.com/MSOpenTech/redis/releases Redis数据库的默认端口号是 6379 开启Redis服务 ...

  9. mongodb,Mysql,redis基础教程

    数据库基础 1:mongodb基础教程 1:pymongo基础教程  2:Mysql基础教程 3:redis基础教程

  10. Redis基础知识点面试手册

    Redis基础知识点面试手册 基础 概述 数据类型 STRING LIST SET HASH ZSET(SORTEDSET) 数据结构 字典 跳跃表 使用场景 会话缓存 缓存 计数器 查找表 消息队列 ...

随机推荐

  1. 001.AD域控简介及使用

    一 AD概述 1.1 AD简介 域(Domain)是Windows网络中独立运行的单位,域之间相互访问则需要建立信任关系. 当一个域与其他域建立了信任关系后,2个域之间不但可以按需要相互进行管理,还可 ...

  2. HTTP 缓存终极指南

    TL;DR 错误的缓存策略是如何抵消你所做的性能优化工作的. 缓存存在于客户端并且通过chrome或者其他抓包工具查看其状态信息. 客户端通过header中的各个字段做缓存的过期判断. 代理服务器上也 ...

  3. ABP Framework 5.0 RC.1 新特性和变更说明

    .Net 6.0 发布之后,ABP Framework 也在第一时间进行了升级,并在一个多星期后(2021-11-16)发布了 5.0 RC.1 ,新功能和重要变更基本已经确定. 5.0版本新特性 新 ...

  4. R数据分析:纵向数据如何做中介,交叉滞后中介模型介绍

    看似小小的中介,废了我好多脑细胞,这个东西真的不简单,从7月份有人问我,我多重中介,到现在的纵向数据中介,从一般的回归做法,到结构方程框架下的路径分析法,到反事实框架做法,从中介变量和因变量到是连续变 ...

  5. littlevgl架构浅析

    一.   littlevgl有几个线程,作用是什么? 三个,主线程一个,和在主线程的hal_init函数中创建的另两个sdl线程. 主线程完成一系列初始化工作后,循环每10ms调用在lv_init函数 ...

  6. 微信小程序的优点(水一篇)

    - 快速的加载 - 更强大的能力 - 原生的体验 - 易用且安全的微信数据开放 - 高效和简单的开发 摘自微信官方文档 https://developers.weixin.qq.com/minipro ...

  7. Object类的toString和Equals方法,以及Objects类的Equals方法

    Object类 toString()方法 public class Person { private String name; private int age; public Person() { } ...

  8. Go IF 条件语句

    条件语句需要开发者通过指定一个或多个条件,并通过测试条件是否为 true 来决定是否执行指定语句,并在条件为 false 的情况在执行另外的语句. 以下是在大多数编程语言中发现的典型条件语句的一般形式 ...

  9. DTOJ 3999: 游戏

    题目描述这个游戏是这样的,你有一个初始序列S ,你每次可以选择一段任意长度的连续区间,把他们+1 再膜k,给定目标序列,你需要尝试用尽量少的操作次数将初始序列变为目标序列.作为一名优秀的OIer,您认 ...

  10. MYSQL5.8-----4

    cc