全部文档
当前文档

暂无内容

如果没有找到您期望的内容,请尝试其他搜索词

文档中心

代理缓存

最近更新时间:2024-09-05 16:48:08

Redis企业版支持开启、关闭代理缓存服务,开启该功能后,代理节点会定期缓存server端推送过来的热度高的Key(返回结果),当客户端发送热点key的读请求时,代理节点通过查询本地缓存直接返回查询结果,从而节省了与server端交互的时间及server端的计算资源,可有效提高热点key请求的响应速度,降低server端的计算资源压力,在一定程度上解决热点Key引起的访问倾斜问题。

说明

  • 实例必须为Redis企业版-集群版。

  • proxy缓存热key的容量为512MB。

  • 由于代理节点中缓存的热点Key的值在有效时间内不会实时更新,只能保证数据的最终一致性 。业务侧能够接受数据在一定时间内不同步的问题。

  • 最终一致性:proxy节点缓存的热key(返回结果),在存活周期内不会进行更新,期间如果对热key进行修改类操作,仅对server节点上的数据进行更新,不会同步更新proxy节点的缓存数据。proxy缓存的热key(返回结果)到期后,server端会根据规则重新推送数据给proxy节点。即不保证从缓存中读取的数据与server端的数据是一致的,只能保证proxy端和server的数据最终是一致。

工作原理说明

1. 代理存储原理,如下图:

Redis企业版会根据高效的热度算法识别出实例中存在的热点Key,开启代理缓存后,代理节点Proxy会订阅server端的热点key,根据设定的规则,proxy缓存热点Key的查询结果。当在缓存有效时间内收到相同的请求时,Proxy无需和后端的数据分片执行交互,会直接返回结果至客户端,在提升读取速度的同时,降低了热点Key对分片节点的计算压力,解决访问倾斜问题。

服务开通参数说明

实例的参数配置功能下,通过修改proxy组件参数,开启、关闭该服务,相关参数如下:

参数

说明

query_cache_enabled

是否启用代理缓存功能,取值:

  • 0:不启用,默认值。

  • 1:启用。

重要由于代理节点中缓存的热点Key的值在有效时间内不会实时更新,只能保证数据的最终一致性。业务侧能够接受数据在一定时间内不同步的问题。

query_cache_expire

缓存数据的有效时长,单位为毫秒,取值:100~60000,默认值为1000。

  • 缓存的数据在有效期内可能被修改,修改后的数据不会同步至缓存中,即相同的读请求会获取到缓存中的修改前数据,直至缓存失效。

  • 您需要根据实际业务对数据的最终一致性的容忍度,来确认该参数的值,该值设置过小会降低缓存的命中率,设置过大会导致客户端在较长的时间内读取到的是脏数据。

相关命令说明

Redis企业版提供了相关命令以便获取代理缓存的使用情况,命令如下:

  • querycache keys:获取代理节点中已缓存的热Key信息。

  • 返回结果说明:每个热Key的信息由三行信息组成,含义如下:

    • 数据库名。

    • Key名称。

    • key热度。

返回示例

127.0.0.1:6379> querycache keys
1) 1) (integer) 2
    2) "key:000000000000"
    3) (integer) 118
2) 1) (integer) 2
    2) "key:000000000001"
    3) (integer) 110
  • querycache info:获取代理缓存的运行情况。

  • 返回结果说明:每个热Key的信息由三行信息组成,含义如下:

    • get_qps:get请求的QPS,单位为请求数/秒。

    • memory_size:占用的内存容量,单位为字节。

    • query_count:总请求量,单位为个。

    • hit_rate:缓存的命中率。

返回示例

127.0.0.1:6379> querycache info
1) "get_qps:0"
2) "memory_size:56"
3) "query_count:2"
4) "hit_rate:99.97"
  • querycache listall:获取代理节点中已缓存的热Key剩余有效时间。

  • 返回结果说明:每个热Key的信息由三行信息组成,含义如下:

    • 数据库名。

    • key名称。

    • 剩余有效时间,单位为毫秒。

返回示例

127.0.0.1:6379> querycache listall
1) 1) (integer) 2
    2) "GET key:000000000001"
    3) (integer) 33262
2) 1) (integer) 2
    2) "GET key:000000000000"
    3) (integer) 33262

文档导读
纯净模式常规模式

纯净模式

点击可全屏预览文档内容
文档反馈