概述

Redis 是什么?

Redis(Remote Dictionary Server ),即远程字典服务!是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
image.png
redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了
master-slave(主从)同步。
免费和开源!是当下最热门的 NoSQL 技术之一!也被人们称之为结构化数据库!

Redis 能干嘛?

  1. 内存存储、持久化,内存中是断电即失、所以说持久化很重要(rdb、aof)
  2. 效率高,可以用于高速缓存
  3. 发布订阅系统
  4. 地图信息分析
  5. 计时器、计数器(浏览量!)
  6. ……..

学习途径

  1. 狂神的公众号:狂神说
  2. 官网:https://redis.io/

image.png

  1. 中文网:http://www.redis.cn/
  2. 下载地址:通过官网下载即可!

注意:Wdinow在 Github上下载(停更很久了!)
Redis推荐都是在Linux服务器上搭建的,我们是基于Linux学习!

Linux安装

官网下载最新的安装包。
redis v6.0+的安装方式参考:https://jingyan.baidu.com/article/d5c4b52b3c253b9b560dc5e3.html

  • 一般情况下将安装包放在/opt目录下
  • redis的默认安装路径 /usr/local/bin
  • 将redis配置文件复制到启动目录下

    测试性能

    redis-benchmark 是一个压力测试工具,官方自带的。

    1. ## 100 个并发连接 100000 请求
    2. redis-benchmark -h localhost -p 6379 -c 100 -n 100000

    基础知识

  • redis默认有 16 个数据库,默认使用的是第 0 个,可以使用 select 进行切换数据库!

  • 清除当前数据库 flushdb
  • 清除全部数据库的内容 FLUSHALL

    1. 127 .0.0.1:6379> select 3 # 切换数据库
    2. OK
    3. 127 .0.0.1:6379[3]> DBSIZE # 查看DB大小!
    4. (integer) 0
    5. 127 .0.0.1:6379[3]> keys * # 查看数据库所有的key
    6. 1 ) "name"
  • Redis 是单线程的!

明白Redis是很快的,官方表示,Redis是基于内存操作,CPU不是Redis性能瓶颈,Redis的瓶颈是根据
机器的内存和网络带宽,既然可以使用单线程来实现,就使用单线程了!所有就使用了单线程了!
Redis 是C 语言写的,官方提供的数据为 100000+ 的QPS,完全不比同样是使用 key-vale的
Memecache差!

  • Redis 为什么单线程还这么快?
  1. 误区 1 :高性能的服务器一定是多线程的?
  2. 误区 2 :多线程(CPU上下文会切换!)一定比单线程效率高!

CPU>内存>硬盘的速度要有所了解!
核心:redis 是将所有的数据全部放在内存中的,所以说使用单线程去操作效率就是最高的,多线程
(CPU上下文会切换:耗时的操作!!!),对于内存系统来说,如果没有上下文切换效率就是最高
的!多次读写都是在一个CPU上的,在内存情况下,这个就是最佳的方案!

五大数据类型

三种特殊数据类型

事务

Redis 事务本质:一组命令的集合! 一个事务中的所有命令都会被序列化,在事务执行过程的中,会按
照顺序执行!一次性、顺序性、排他性!执行一些列的命令!
Redis事务没有隔离级别的概念!
所有的命令在事务中,并没有直接被执行!只有发起执行命令Exec的时候才会执行!
Redis单条命令式保存原子性的,但是事务不保证原子性!

  • redis的事务:

    1. 开启事务(multi
    2. 命令入队(......)
    3. 执行事务(exec
  • 正常执行事务

乐观锁