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