设置超时时间[最重要]
每个存储数据都需设定生存时间,否则导致一直占用内存。
尽量不使用非0数据库
Redis单例模式有16个数据库(0-15),默认使用0号数据库。Redis官方的集群方案,默认只使用0号数据库,为后续扩展性,业务中禁止使用非0数据库。
冷热数据分离,不要将所有数据全部都放到Redis中
高频数据存入Redis缓存,低频数据不要存入Redis缓存。
高频数据是经常访问的数据,在这里做好压力缓冲就行了。对于大量数据和列表数据尤其适用。
例如:一些枚举类型,低频变更,适合存入Redis
合理使用list,map,set等集合结构
结合具体业务,设置合理的数据结构,找出更好的选择。 集合结构还可以减少key的个数。
合理设置key的格式
多系统在共用缓存,需要key唯一。Key禁止使用中文。易读,有规律。有规律的key可以进行正则匹配操作。(类似RabbitMQ-Exchange-Topic)
key的格式,如:项目名
:模块名
:业务Key
Key的命名空间使用连字符:而不是 _
对于必须要存储的大文本数据一定要压缩后存储
对于大文本【超过500字节】写入到Redis时,一定要压缩后存储!大文本数据存入Redis,除了带来极大的内存占用外,在访问量高时,很容易就会将网卡流量占满,进而造成整个服务器上的所有服务不可用,并引发雪崩效应,造成各个系统瘫痪!
线上Redis禁止使用Keys正则匹配操作
Redis是单线程处理,在线上KEY数量较多时,操作效率极低【时间复杂度为O(N)】,该命令一旦执行会严重阻塞线上其它命令的正常请求,而且在高QPS情况下会直接造成Redis服务崩溃!如果有类似需求,请使用scan命令代替!