redis(七)-客户端缓存

参考资料:
redis 4.x cookbook 中文版;
redis官方文档
注: 本文redis的版本为: 5.0.3

redis(七)-客户端缓存_第1张图片

客户端缓存是redis6.x的新特性:

可用于缓解高并发情况下redis数据库的压力;
它有两种实现方式:

方式1:
①redis数据库服务中为每个key保存所有请求过它的客户端ID列表;在这个key超时或者被某个链接修改时,对列表内的所有客户端发送失效消息,让客户端将本地缓存中对应的key删除掉;
②redis客户端决定自己需要缓存哪些数据,需要先开启跟踪转发:CLIENT TRACKING on REDIRECT clientid OPTIN,然后可以使用 client caching yes|no命令开启缓存,跟在这个命令后的第一个命令返回的数据将会被客户端缓存(如果是事务或者脚本的话,内部的命令都将被缓存,因为它们是一起返回给客户端的);

方式2:
CLIENT TRACKING on REDIRECT clientid BCAST PREFIX user: 此命令意味着这个客户端将要缓存所有以"user:"开头的key;当数据库接收到此消息后,在"user:"开头的key被修改或者过期时,将会推送消息给对应的客户端;客户端就会将本地缓存的数据删除;

它们的优缺点:
方式1:
第①种模式:数据库中key越多,所需的内存就会成倍上升;且客户端会收到很多不必要的缓存过期消息(由于本地缓存槽刷新导致的);第②种模式:是第①种模式的优化;
方式2:
由于是广播的订阅形式,所以如果被订阅的前缀key越多,那么服务器的cpu使用率将越高;

你可能感兴趣的:(redis,redis6.x,新特性,客户端缓存)