基本知识

磁盘

  1. 寻址:ms
  2. 带宽:G/m

    内存

  3. 寻址:ns

  4. 带宽:很大

秒>毫秒>微秒>纳秒 磁盘比内存在寻址上慢了10w倍

I/O Buffer:成本问题

磁盘与磁道,扇区,一扇区512Byte带来一个成本变大:索引
操作系统每次读取4k

数据库:表很大,性能下降?

如果表有索引:增删改慢
查询速度:

  1. 1个或少量查询快
  2. 并发大的时候受磁盘带宽速度

    IO发展历程(BIO->NIO->AIO)

    BIO(Blocking IO)

    image.png

    NIO(NonBlocking IO)

    IO.jpg

    AIO(Asynchronous IO)

    redis操作

    怎么查看: help tab | help | help @

基本操作

string

set

设置单个值

mset

设置多个值

setex

当key存在时才能设置(更新)value

setnx

当key不存在时才能设置key:value

setrange

更新value的字串

get

获取key的value

mget

getrange

strlen

  1. 127.0.0.1:6666> set k1 v1
  2. OK
  3. 127.0.0.1:6666> append k1 " a"
  4. (integer) 4
  5. 127.0.0.1:6666> get k1
  6. "v1 a"
  7. 127.0.0.1:6666> getrange k1 -4 -1
  8. "v1 a"
  9. 127.0.0.1:6666> getrange k1 -2 -1
  10. " a"
  11. 127.0.0.1:6666> getset k1 v1_2
  12. "v1 a"
  13. 127.0.0.1:6666> get k1
  14. "v1_2"
  15. 127.0.0.1:6666> mset k2 v2 k3 v3
  16. OK
  17. 127.0.0.1:6666> mget k1 k2 k3
  18. 1) "v1_2"
  19. 2) "v2"
  20. 3) "v3"
  21. 127.0.0.1:6666> setnx k1 v111
  22. (integer) 0
  23. 127.0.0.1:6666> get k1
  24. "v1_2"
  25. 127.0.0.1:6666> setnx k4 v4
  26. (integer) 1
  27. 127.0.0.1:6666> get k4
  28. "v4"
  29. 127.0.0.1:6666> setrange k1 3 '2'
  30. (integer) 4
  31. 127.0.0.1:6666> get k1
  32. "v1_2"
  33. 127.0.0.1:6666> strlen k1
  34. (integer) 4