课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
性能优化是我们在开发软件的时候需要注意的问题之一,而今天我们就一起来了解一下,Redis数据库优化都包含了哪些内容。
1、尽量使用短的key
当然在精简的同时,不要完了key的“见名知意”。对于value有些也可精简,比如性别使用0、1。
2、避免使用keys*
keys*,这个命令是阻塞的,即操作执行期间,其它任何命令在你的实例中都无法执行。当redis中key数据量小时到无所谓,数据量大就很糟糕了。所以我们应该避免去使用这个命令。可以去使用SCAN,来代替。
3、在存到Redis之前先把你的数据压缩下
redis为每种数据类型都提供了两种内部编码方式,在不同的情况下redis会自动调整合适的编码方式。
4、设置key有效期
我们应该尽可能的利用key有效期。比如一些临时数据(短信校验码),过了有效期Redis就会自动为你清除!
5、选择回收策略(maxmemory-policy)
当Redis的实例空间被填满了之后,将会尝试回收一部分key。根据你的使用方式,强烈建议使用volatile-lru(默认)策略——前提是你对key已经设置了超时。但如果你运行的是一些类似于cache的东西,并且没有对key设置超时机制,可以考虑使用allkeys-lru回收机制,具体讲解查看。maxmemory-samples3是说每次进行淘汰的时候会随机抽取3个key从里面淘汰不经常使用的(默认选项)
maxmemory-policy六种方式:
volatile-lru:只对设置了过期时间的key进行LRU(默认值)
allkeys-lru:是从所有key里删除不经常使用的key
volatile-random:随机删除即将过期key
allkeys-random:随机删除
volatile-ttl:删除即将过期的
noeviction:永不过期,返回错误
6、使用bit位级别操作和byte字节级别操作来减少不必要的内存使用。
bit位级别操作:GETRANGE,SETRANGE,GETBITandSETBIT
byte字节级别操作:GETRANGEandSETRANGE
7、尽可能地使用hashes哈希存储。
8、当业务场景不需要数据持久化时,关闭所有的持久化方式可以获得佳的性能。
9、想要一次添加多条数据的时候可以使用管道。
10、限制redis的内存大小(64位系统不限制内存,32位系统默认多使用3GB内存)
数据量不可预估,并且内存也有限的话,尽量限制下redis使用的内存大小,这样可以避免redis使用swap分区或者出现OOM错误。(使用swap分区,性能较低,如果限制了内存,当到达指定内存之后就不能添加数据了,否则会报OOM错误。可以设置maxmemory-policy,内存不足时删除数据。)
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!