首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将现有缓存移动到Redis群集

将现有缓存移动到Redis群集
EN

Stack Overflow用户
提问于 2019-11-27 19:03:08
回答 1查看 65关注 0票数 1

我现有的Java应用程序(运行在Java上)定义了许多缓存。有些缓存(散列键/值)的大小可以是几GB。

我正在考虑用集群实现Redis,我的问题是.

将现有的缓存映射到Redis散列中有意义吗?据我所读,Redis可以通过在不同的服务器上放置不同的散列来进行分区,但是它不会对散列项进行分区,这是正确的吗?

而不是这个。

“cache1 cacheid1”缓存值“HSET cache1 cacheid2”缓存值“HSET cache2 cacheid3”缓存值

我应该用这个代替吗?

设置cache1_cacheid1“缓存值”设置cache1_cacheid2“缓存值”“设置cache2_cacheid3”缓存值“

第二种方法对分区会更好吗?还是有其他方法?将缓存保持在散列中会变得更容易,例如,在计算元素或清空元素时。

谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-17 06:22:08

是的,Redis可以通过在不同的节点上放置不同的键来进行分区,但是它不会对散列项进行分区。

使用每个缓存的散列是一种有效的方法。

代码语言:javascript
复制
HSET cache1 cacheid1 "cache value" cacheid2 "cache value 2" 

注意,您可以在同一个HSET命令上执行多个字段值对。

正如您所提到的,这具有优势,包括:

  • HLEN计数条目
  • HSCAN用于迭代字段、模式匹配(如果需要)以及使用字段获取值.SCAN将覆盖整个键空间,并且只返回键,而不是值。
  • DELUNLINK整个缓存

但它也有缺点:

  • 不能在散列字段上设置“过期”,而只能在键上设置“过期”。
  • 散列只能存储二进制安全字符串,因此您将无法在缓存哈希中使用列表、集、排序集或散列。

看看键散列标签

这使您可以强制键在相同的散列槽上结束。因此,您的第二种方法可以使用:

代码语言:javascript
复制
MSET {cache1}cacheid1 "cache value" {cache1}cacheid2 "cache value 2"

键名中包含{cache1}的所有键都将在同一个节点中结束。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59076950

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档