1. 基础知识
命令 | 含义 |
---|---|
select n | 切换数据库 |
DBSIZE | 查看数据库大小 |
keys * | 查看数据库所有的key |
flushdb | 清空当前数据库 |
flushall | 清空所有数据库 |
exists key | 判断当前key是否存在 |
del key | 删除指定key |
rename key newkey | 为key改名 |
persist key | 时效转为永久 |
move 键名 数据库id | 移动键值对到对应数据库 |
get 键名 | 得到对应的value |
type 键名 | 得到当前key的类型 |
expire key seconds | 设置过期时间(单位为秒) |
ddl 键名 | 查看key的过期时间 |
2. 五种数据类型
redis存储的都是键值对形式的数据,这里的数据类型指的是value的类型,而不是key的类型。
key的命名格式:表名:主键名:主键值:字段名。
2.1 string
操作代码 | 代码含义 |
---|---|
set key value | 添加或修改数据 |
get key | 获取数据 |
del key | 删除数据 |
mset key1 value1 key2 value2 | 添加或修改多个数据 |
mget key1 key2 | 获取多个数据 |
incr key | 对key进行自增 |
decr key | 对key进行1单位的自减 |
incrby key num | 对key进行num单位的自增 |
setex key seconds value | 设置key的value和生命周期 |
2.2 hash
方便存储对象信息。
代码 | 含义 |
---|---|
hset key field value | 添加或修改数据 |
hget key field | 获取数据 |
hgetall key | 获取数据 |
hdel key field | 删除数据 |
hmset key field1 value1 field2 value2 | 添加修改多个数据 |
hmgeet key field1 field2 | 获取多个数据 |
hexists key field | 查看是否存在 |
hkeys key | 获取所有的field |
hvals key | 获取所有的value |
在存取对象时,存时用string(整体),拿时用hash(分开)。
2.3 list
代码 | 操作 |
---|---|
lpush(rpush) key value | 添加修改数据 |
lrange key start stop | 查数据 |
lindex | key index |
llen key | 查数据量 |
lpop(rpop) key | 获取并移除数据 |
lrem key count value | 移除指定数据 |
2.4 set
代码 | 操作 |
---|---|
sadd key member1 | 添加数据 |
smembers key | 获取全部数据 |
srem key member1 | 删除数据 |
scard key | 集合数据长度 |
2.5 sorted_set
代码 | 操作 |
---|---|
zadd key score1 member1 | 添加数据 |
zrange key start stop [with scores] | 获取数据 |
zrevrange key start stop [with scores] | 反向获取数据 |
zrem key member | 删除数据 |
zrangebysocre key min max | 范围间获取数据 |
zrevrangebyscore key min max | 反向查询 |
zcard key | 数据总量 |
zcount key min max | 按条件查数据总量 |
3. Redis持久化
3.1 RDB
save指令执行会阻塞Redis服务器,直到RDB完成,可能会造成长时间堵塞,线上环境不建议使用。
解决方法1
解决方法2
在配置文件中进行配置。
两种方案对比
RDB优缺点
3.2 AOF
其中第二种为默认配置。
3.3 RDB与AOF对比
4. 事务
5. 过期数据
上面两种方案都过于极端,下面(定期删除)为折中策略。
定期删除
对Redis的每个数据库进行轮询,随机抽取数据,如果发现随机抽取时,过期的数据超过随机抽取数据量的25%,继续进行删除;如果发现小于等于25%,到下个数据库进行删除,直到16个数据库删除完毕。
6. Redis集群
6.1 主从复制
6.2 工作流程
详细过程:
心跳机制
主从复制完整工作流程
6.3 哨兵模式
7. 企业级解决方案
7.1 缓存预热
7.2 缓存雪崩
7.3 缓存击穿
7.4 缓存穿透