Redis 是一个开源(BSD许可)的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中
间件。 它支持多种类型的数据结构

缓存(Cache)的概念

缓存是存储在计算机上的一个原始数据复制集,以便于访问。

img-缓存的概念

缓存命中率的一些概念

img-cache

Redis的命令

  • 指定database select 0

操作Key

  • exists 查询key是否存在
  • keys 查询是否存在指定的key
  • type 查询key的数据类型
  • scan 扫描当前库中所有的key

操作String

  • set :添加一条String类型数据
  • get :获取一条String类型数据
  • mset :添加多条String类型数据
  • mget :获取多条String类型数据
  • incr :增加1
  • decr:减少1

操作hash

  • hset :添加一条hash类型数据
  • hget :获取一条hash类型数据
  • hmset :添加多条hash类型数据
  • hmget :获取多条hash类型数据
  • hgetAll :获取指定所有hash类型数据
  • hdel :删除指定hash类型数据(一条或多条)

操作list

  • lpush :左添加(头)list类型数据

  • rpush :右添加(尾)类型数据

  • lrange : 获取list类型数据start起始下标 end结束下标 包含关系

  • llen :获取条数

  • lrem :删除列表中几个指定list类型数据

    • lrem key count value
      count > 0 从前向后删除count个value
      count <0 从后向前删除 绝对值(count) 个value
      count = 0 删除所有的value
      

操作set

  • sadd :添加set类型数据
  • smembers :获取set类型数据
  • scard :获取条数
  • srem :删除数据

操作sorted set

sorted set是通过分数值来进行排序的,分数值越大,越靠后。

  • zadd :添加sorted set类型数据

    zadd需要将Float或者Double类型分数值参数,放置在值参数之前

  • zrange :获取sorted set类型数据

  • zcard :获取条数

  • zrem :删除数据

操作namespace

  • mset 添加数据 例 mset user:01 zhangsan

  • mget 获取数据 例 mget user:01

操作失效时间

  • EXPLRE 简写 EX ex <key> <ttl> 用于生成键的同时设置生存时间(秒)

    例 set code test EX 180

  • PEXPIRE <key> <ttl> 可以将 已有的键 key 的过期时间设置为 毫秒 不加 P 是秒

    例 pexpire code 1000

  • NX 是key不存在时才set,防止覆盖 XX 是key存在时才set,不创建新的key

    EX 是秒, PX 是毫秒 例 set code test nx ex 180

删除操作

  • del :用于删除数据(通用,适用于所有数据类型)
  • hdel :用于删除hash类型数据

Redis的事务机制

Redis事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程
中,不会被其他客户端发送来的命令请求所打断。

Redis事务的主要作用就是串联多个命令防止别的命令插队。

事务的操作命令

Multi、Exec、discard

输入Multi命令开始,输入的命令都会依次进入命令队列中,但不会执行。
输入Exec后,Redis会将之前的命令队列中的命令依次执行。
组队的过程中可以通过discard来放弃组队。

事务的错误处理

组队阶段某个命令出现了报告错误,执行时整个的所有队列会都会被取消。
执行阶段某个命令报出了错误,则只有报错的命令不会被执行,而其他的命令都会执行,不会回滚。

Redis的高可用

在Redis中,实现高可用的技术主要包括持久化、复制、哨兵和集群。

数据的持久化(数据落盘)

RDB(Redis DataBase)

会损失较长时间的数据(分钟级别)

AOF(Append Only File)

会损失1秒钟的数据