本文主要整理一些在以往开发中用到过及可能用到的功能,没有涉及的功能暂不作整理。
注意:redis
- 尽可能使用MGET而不是GET,减小网络请求时间。
- 存在与数据库同步时,避免在直接在Redis计算。
注意:数据库
- List是有序字符串集合,实际开发可用于排行榜之类功能,也可用于消息队列。
- List中能够出现重复数据。
注意:网络
- Set是无需集合
- 集合成员是惟一的,不会出现重复数据
注意:
用于构造一个有序、但数据不重复的集合
注意:app
- Redis客户端能够订阅任意数量的频道。
- 客户端只能消费订阅以后发布的消息,一个消息能够被多个订阅者消费
注意:
Redis的事务不具有一致性,EXEC执行后,若事务中断,已经执行的部分不会回滚。
注意:操作系统
- 慢查询时间不包括命令队列时间
- 经常使用在请求超时,可经过慢查询日志看是否有级联阻塞
注意:
Pipeline只能在单节点上执行
注意:线程
- 可用于摇一摇、同城约会之类的,可计算范围内的人
- 可用于范围内固定目标,好比饭店、滑雪场
- 使用GEORADIUS的排序,作实时距离相关的比赛功能
持久化方式有两种:RDB快照 和 AOF日志。日志
RDB快照有三种触发机制:code
通常使用bgsave或自动快照。自动快照配置以下:排序
# /etc/redis.conf // RDB // 每500秒有超过100次key被修改就执行快照 save 500 100
生产环境中,RDB适合冷备份,其余适合建议使用AOF。队列
AOF 三种策略分别是 always 、everysec 和 no。
注意:
在写入的时候,AOF会压缩命令。
AOF重写
auto-aof-rewrite-min-size
:配置最小尺寸,超过就进行重写。auto-aof-rewrite-percentage
:指当前AOF文件比上次重写的增加比例大小。
AOF 重写即 AOF 文件在必定大小以后,从新将整个内存写到 AOF 文件当中,以反映最新的状态(至关于 bgsave)。这样就避免了 AOF 文件过大而实际内存数据小的问题(频繁修改数据问题)。
# AOF 配置以下 # 默认是 no appendonly yes # 设置 AOF 名字 appendfilename "aof-${ip}-${port}.aof" # 每秒同步 appendfsync everysec # AOF文件目录 dir /diskpath # 重写AOF时是否持续记录新的AOF日志 # 设置为 no,不会丢数据,但可能形成线程阻塞 # 设置为 yes,有可能丢数据,但不会形成阻塞和系统延迟 no-appendfsync-on-rewrite yes
环境开销
AOF追加阻塞
# 查看阻塞次数 # 如阻塞较多,要调整业务实现或者调整AOF策略 redis-cli info resistence