nav*_*ave 5 spring caching redis
由于无法基于部分密钥逐出条目的限制,我正在考虑使用缓存名称作为我的部分密钥并驱逐缓存中的所有(只有一个)条目的解决方法.例如,假设有两个键值对,如下所示:
"123 @ name1" - > value1,"124 @ name2" - > value2
理想情况下,在驱逐时,我想删除包含字符串"123"的所有键.但是,由于不支持,我正在考虑的解决方法是具有以下内容:
"123"缓存:"name1" - > value1
"124"缓存:"name2" - > value2
然后在驱逐时,我只需指定删除"123"缓存中的所有键
当然,这样做的缺点是会有很多不同的缓存.对此有任何性能损失吗?
从阅读本文来看,似乎Redis至少只使用缓存名称作为前缀.因此,它不会在其下创建多个单独的缓存.但我想验证一下我的理解.
如果有帮助,我也希望使用Redis作为我的底层缓存提供程序.
您可以使用几种方法来克服这个问题:
使用分组数据结构,如集合、排序集合和哈希:它们中的每一个都支持非常大量的成员元素。因此您可以使用它们来存储缓存项,并进行相关查找。但是,与直接键值查找相比,请务必检查此类查找的性能差异(非常小)。一旦您想要驱逐一组类型相似的缓存键,您只需从 Redis 中删除该数据结构键即可。
使用 Redis 数据库编号:您需要编辑 redis.conf 以增加可能的 Redis 数据库编号的最大数量。Redis 数据库只是提供键值可以位于其中的命名空间的数字。要将相似的项目分组,您可以将它们放入相同的数据库编号中,并在需要刷新该组键时使用单个命令清空数据库。这里需要注意的是,虽然您可以使用相同的 redis 连接,但您必须通过 redis SELECT命令切换数据库
| 归档时间: |
|
| 查看次数: |
132 次 |
| 最近记录: |