redis(七)-客户端缓存

    技术2022-07-11  83

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

    客户端缓存是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使用率将越高;

    Processed: 0.011, SQL: 9