redis

redis性能优化

2021-06-25  本文已影响0人  Geroge1226

1、redis性能优化

当前分布式、高并发应用系统的背景下,对于系统的稳定性,高性能要求越来越高,Redis作为应用系统的环节也会遇到一些挑战,为了合理,高效应用Redis这一内存存储数据库,在使用中需要注意以下这些优化点

2、减少通信次数

使用管道技术减少客户端与Redis服务器的通信次数,可以把多次请求合并在同一个请求,一次性返回所以请求的结果。注意,这里多次请求直接不能存在依赖关系,如:当前请求依赖上一次返回结果。

3、节省内存空间

3.1 精简键与键值长度。

使用可以准确表达意思的键,但键的长度可经量精短。

3.2 改写Redis内部编码方式

redis每一个键值都是以一个redisObject 结构保存的,redisObject的定义:

typedef struct redisObject{
      unsigned type : 4;
      unsigned notused:2;
      unsigned encoding:4;
      unsigned lru:22;
      int refcount';
      void *ptr;
  } robj;

使用object encoding key每个键值可取值类型如下表:

键值内部编码表

4、设置内存淘汰机制

4.3、对键经量设置过期时间

redis可以执行过期策略:定时删除 + 惰性删除

4.2 redis 内存淘汰机制有以下几个:

noeviction: 当内存不足以容纳新写入数据时,新写入操作会报错,这个一般没人用吧,实在是太恶心了。
allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的 key(这个是最常用的)。
allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个 key,这个一般没人用吧,为啥要随机,肯定是把最近最少使用的 key 给干掉啊。
volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的 key(这个一般不太合适)。
volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个 key。
volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的 key 优先移除。

上一篇 下一篇

猜你喜欢

热点阅读