雪崩的时候没有一片雪花是无辜的 开源都是王道

技术没有高低之分,看你如何使用 敬畏之心,敬畏生命,敬畏自然;敬畏使人进步 追求幸福(帮助他人),探索未知!

image.png
image.png
image.png
image.png
image.png

NoSQL的四大分类

KV键值对

文档型数据库

列式存储

图形存储

image.png

image.png

Redis入门

Remote Dictionary Server 远程字典服务
是一个开源的ANSI C语言编写,支持网络

image.png
image.png

性能测试

基础知识

  • 默认有16个数据库
  • 默认使用的是第0个
  • 切换数据库:select num
  • 查看数据库大小(默认是0):DBSIZE
  • 设置key值:set name xx
  • 获取key值:get name
  • 查看数据库中所有的key:key *
  • 清除当前数据库:flushdb
  • 清除全部数据库的:EXISTS key
  • 设置过期时间:EXPIRE key 10(单位是秒) —场景:热点事件
    • tll key
  • 移除key:remove key
  • 判断key是什么类型:type key

  • Redis是单线程

    基于内存操作,CPU不是redis的性能瓶颈。其瓶颈是机器的内存和网络带宽
    Redis是C语言写的,官方提供的数据为100000+QPS,完全不比使用key-value的Memcache差

Redis 为什么快

image.png

五大基本数据类型

String

  • 常见场景
    • 计数器
    • 统计多单位数量
    • 粉丝数
    • 对象缓存存储
  • 动态追加字符串:append key ”xx“
    • if key不存在,那就相当于setkey
  • 查看字符串的长度:STRLEN key
  • 数量 +1/-1 —场景:浏览量
    • incr key
    • decr key
  • 设置增加的步长:INCRBY views(key) num
  • 获取字符串范围:
    • 指定长度:GETRANGE key 0 3([0,3])
    • 全部长度:GETRANGE key 0 -1
  • 替换(设置)指定位置开始的字符串
    • SETRANGE key 1 xx
  • 当前存在 setex(set with expire)
    • case:设置过期时间
    • eg:setex key 10 “xxx”
  • 当前不存在 setnx (set if not exist)
    • case:不存在的设置(在分布式锁中常常使用)
    • eg:setnx key “xx”
      • 重修改成功返回 1,反之 0
  • 同时设置多个值(原子性的:同时成功或失败)
    • format:mset
    • mset
  • 同时获取多个值
    • format:gset
  • 设置databases
    • getset db redis
    • get db

列表(List)

场景

  • 队列
  • 阻塞队列

命令行(所有的命令都是以 ‘ L’ 开头的)

  • 插入
    • 左插入:lpush
    • 右插入:rpush
  • 移除
    • 左移除:lpop
  • 通过下标获取某一个值
    • lindex list num
  • 返回列表长度
    • llen list
  • 移除指定值
    • Lrem list 1 2 three ## 移除两个three

    1. 127.0.0.1:6379> lpush list one
    2. (integer) 1
    3. 127.0.0.1:6379> lpush list two
    4. (integer) 2
    5. 127.0.0.1:6379> lpush list three
    6. (integer) 3
    7. 127.0.0.1:6379> lrange list 0 2
    8. 1) "three"
    9. 2) "two"
    10. 3) "one"
    11. 127.0.0.1:6379> rpush list right
    12. (integer) 4
    13. 127.0.0.1:6379> lrange list 0 -1
    14. 1) "three"
    15. 2) "two"
    16. 3) "one"
    17. 4) "right"
    18. 127.0.0.1:6379>

Redis key

Redis 进阶 - 图11