个人redis优化缓存策略集合 内存淘汰设置

个人redis优化缓存策略集合 内存淘汰设置

内存淘汰设置

  1. volatile-lru:这种策略仅针对设置了过期时间的键进行淘汰。当内存不足时,它会优先删除那些最近最少使用的、且设置了过期时间的键。这样可以确保不会因为保留过多的过期键而浪费内存空间。适用于缓存场景,特别是那些需要频繁更新或过期的数据。
  2. allkeys-lru:这种策略针对所有的键进行淘汰,无论键是否设置了过期时间。当内存不足时,它会按照最近最少使用的顺序淘汰键,不考虑键的过期时间。适用于所有类型的数据存储,包括临时数据、持久化数据等。
# 设置淘汰策略为 volatile-lfu
maxmemory-policy volatile-lfu

对于拥有5万篇文章的网站和仅有2G内存的服务器来说,在配置Redis时,设置缓存的过期时间需要综合考虑网站内容的特性和访问频率。以下将详细分析各种因素,以确定最佳的缓存策略:

  1. 内存限制考量
    • 物理内存限制:考虑到服务器只有2G内存,需要预留一部分内存给操作系统和其他可能运行的服务。因此,实际可供Redis使用的内存会少于2G。
    • 最大内存配置:通过maxmemory参数来设定Redis可使用的最大内存容量,确保其不会占用所有系统资源,从而影响系统的稳定运行。
    • 内存淘汰策略:当达到内存上限时,根据所选的淘汰策略(如LRU、LFU等),Redis将清除部分键以释放空间。选择合适的淘汰策略对保持缓存性能至关重要。
  2. 内容访问模式
    • 热点数据识别:网站的内容可能存在一部分“热点”数据,这些内容被访问的频率远高于其他内容。应识别并优先保留这类数据在缓存中。
    • 访问频率与时效性:内容的访问频率和时效性是决定缓存时间的重要因素。高频率访问且更新不频繁的内容适合设置较长的缓存时间。
  3. 缓存有效期的设置
    • 短有效期的优点:较短的有效期(例如3天)有利于保证数据的新鲜度,对于那些更新较为频繁的内容更为适用。
    • 长有效期的优点:较长的有效期(例如7天或更长)可以减少Redis中键的淘汰频率,降低缓存穿透的风险,提升缓存命中率。

此外,为了优化缓存性能,还需要考虑以下因素:

  • 监控与调优:定期监控Redis的性能指标,如内存使用量、缓存命中率等,以便及时调整配置。
  • 成本与效益分析:分析缓存策略调整带来的成本与效益,包括但不限于经济成本、开发维护工作量及用户体验改善程度。

综上所述,在有限的内存条件下,设置适当的缓存过期时间对于提高网站性能和管理服务器资源至关重要。考虑到文章数量和服务器内存的限制,建议采用动态缓存有效期策略,结合热点数据识别和访问频率分析,以达到最优的缓存效果。同时,密切监控Redis的使用情况并根据需要进行调整,以确保缓存系统能够在有限的资源下提供最大的性能提升。

 

在PHP中,可以通过设置session.gc_maxlifetime和session.cookie_lifetime来控制会话(session)的过期时间。

  1. session.gc_maxlifetime:这个配置项设置了会话在服务器端的最大存活时间。当一个会话超过这个时间后,服务器会自动销毁该会话。默认值通常为1440秒(24分钟)。
  2. session.cookie_lifetime:这个配置项设置了客户端浏览器存储的会话cookie的最大存活时间。当用户关闭浏览器或者超过这个时间后,cookie会被删除,从而使得会话失效。默认值通常也为1440秒(24分钟)。
session.gc_maxlifetime = 86400
session.cookie_lifetime = 0

使用默认PHP插件reids主题下wp-config.php的定义

define('WP_REDIS_CLIENT', 'phpredis'); # 指定用于与Redis通信的客户端
define('WP_REDIS_SCHEME', 'tcp'); # 指定用于与Redis实例进行通信的协议
define('WP_REDIS_HOST', '127.0.0.1'); # Redis服务器的IP或主机名
define('WP_REDIS_PORT', '6379'); # Redis端口
define('WP_REDIS_PASSWORD', '密码'); # Redis密码
define('WP_REDIS_DATABASE', '1'); # 接受用于使用该SELECT命令自动选择逻辑数据库的数值
define('WP_REDIS_PREFIX', '前缀'); # 设置所有缓存键的前缀(Wordpress多站点模式下使用)
define('WP_REDIS_MAXTTL', 60 * 60 * 24 * 7);# 最大时间
define('WP_REDIS_TIMEOUT', 1);// Redis 超时时间设置
define('WP_REDIS_READ_TIMEOUT', 1);// 读超时时间
define('WP_REDIS_RETRY_INTERVAL', 300); // 重试间隔
define('WP_REDIS_IGBINARY', true); // 是否使用 igbinary PHP 扩展进行序列化
define('WP_REDIS_METRICS_MAX_TIME', 3600); // 最大时间范围为1小时(单位:秒)
define('WP_REDIS_FLUSH_TIMEOUT', 5);// 刷新超时时间

官方定义

Configuration constant Default Description
WP_REDIS_HOST 127.0.0.1 The hostname of the Redis server
WP_REDIS_PORT 6379 The port of the Redis server
WP_REDIS_PATH The path to the unix socket of the Redis server
WP_REDIS_SCHEME tcp The scheme used to connect: tcp or unix
WP_REDIS_DATABASE 0 The database used by the cache: 0-15
WP_REDIS_PREFIX The prefix used for all cache keys to avoid data collisions (replaces WP_CACHE_KEY_SALT), should be human readable and not a “salt”
WP_REDIS_PASSWORD The password of the Redis server, supports Redis ACLs arrays: ['user', 'password']
WP_REDIS_MAXTTL 0 The maximum time-to-live of cache keys
WP_REDIS_CLIENT The client used to communicate with Redis (defaults to phpredis when installed, otherwise predis), supports phpredispredisrelay
WP_REDIS_TIMEOUT 1 The connection timeout in seconds
WP_REDIS_READ_TIMEOUT 1 The timeout in seconds when reading/writing
WP_REDIS_IGNORED_GROUPS [] Groups that should not be cached between requests in Redis

高级的

Configuration constant Default Description
WP_CACHE_KEY_SALT Deprecated. Replaced by WP_REDIS_PREFIX
WP_REDIS_FLUSH_TIMEOUT 5 Experimental. The timeout in seconds when flushing
WP_REDIS_RETRY_INTERVAL The number of milliseconds between retries (PhpRedis only)
WP_REDIS_GLOBAL_GROUPS [] Additional groups that are considered global on multisite networks
WP_REDIS_METRICS_MAX_TIME 3600 The maximum number of seconds metrics should be stored
WP_REDIS_IGBINARY false Whether to use the igbinary PHP extension for serialization
WP_REDIS_DISABLED false Emergency switch to bypass the object cache without deleting the drop-in
WP_REDIS_DISABLE_ADMINBAR false Disables admin bar display
WP_REDIS_DISABLE_METRICS false Disables metrics collection and display
WP_REDIS_DISABLE_DROPIN_CHECK false Disables the extended drop-in write test
WP_REDIS_DISABLE_DROPIN_AUTOUPDATE false Disables the drop-in auto-update
WP_REDIS_DISABLE_GROUP_FLUSH false Disables group flushing with Lua script and uses flushdb call instead
WP_REDIS_DISABLE_BANNERS false Disables promotional banners and notices
WP_REDIS_DISABLE_COMMENT false Disables HTML source comment
WP_REDIS_SSL_CONTEXT [] TLS connection options for tls or rediss scheme
WP_REDIS_MANAGER_CAPABILITY The capability a user must have to manage the plugin
© 版权声明
THE END
文章不错?点个赞呗
点赞10
评论 抢沙发

请登录后发表评论

    暂无评论内容