Redis进阶-Redis使用建议一二事

在这里插入图片描述


命令使用

【推荐】 O(N)命令关注N的数量

例如hgetall、lrange、smembers、zrange、sinter等并非不能使用,但是需要明确N的值。有遍历的需求可以使用hscan、sscan、zscan代替。


【推荐】 禁用命令

禁止线上使用keys、flushall、flushdb等,通过redis的rename机制禁掉命令,或者使用scan的
方式渐进式处理。


【推荐】合理使用select

redis的多数据库较弱,使用数字进行区分,很多客户端支持较差,同时多业务用多数据库实际还是单线程处理,会有干扰。


【推荐】使用批量操作提高效率

原生命令:例如mget、mset。
非原生命令:可以使用pipeline提高效率

但要注意控制一次批量操作的元素个数(例如500以内,实际也和元素字节数有关)。

pipeline vs 原生命令

  1. 原生的命令是原子操作,pipeline是非原子操作。
  2. pipeline可以打包不同的命令,原生做不到
  3. pipeline需要客户端和服务端同时支持

【建议】Redis事务功能较弱,不建议过多使用,可以用lua替代


客户端使用

【推荐】 避免多个应用使用一个Redis实例

正例:不相干的业务拆分,公共数据做服务化。


使用带有连接池的数据库,可以有效控制连接,同时提高效率

其他建议

发布了825 篇原创文章 · 获赞 2060 · 访问量 420万+

猜你喜欢

转载自blog.csdn.net/yangshangwei/article/details/105020406