Loading [MathJax]/jax/output/CommonHTML/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >是否有一种方法可以在集群模式下对特定的redis实例进行特定的键定位?

是否有一种方法可以在集群模式下对特定的redis实例进行特定的键定位?
EN

Stack Overflow用户
提问于 2017-09-18 23:53:19
回答 1查看 1.6K关注 0票数 2

我想让我的多个锁定位在不同的redis实例上。

我发现redission可以指定要执行命令的实例,但是如果命令与键相关,则指定的实例将将命令传输到另一个实例。

你能给我一些建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-09-19 00:29:17

你可以,但这可不是小事。首先,Redis在键中使用大括号来确定其中的切分部分,因此您可以决定修改密钥并将其发送到任意的碎片。

现在,你需要两件事:

  1. 红色实例所在的碎片或槽范围的地图。
  2. 一种知道哪个字符串映射到哪个槽的方法,这样您就可以在键上强制一个“切分字符串”将其路由到特定的碎片。

第一个是简单的-- CLUSTER SLOTS会给出映射,只需解析它。

第二个更棘手--但幸运的是,我已经完成了这项工作。我已经创建了一个表,将尽可能最短的字母数字字符串映射到Redis集群中的16384个插槽中。我是用C语言写的,但是你可以很容易地把它转换成任何东西。https://gist.github.com/dvirsky/93f43277317f629bb06e858946416f7e

因此,给定一个密钥和一个所需的节点,您的算法将是:

  1. 查看时隙映射,并获取驻留在该节点上的槽范围。
  2. 在该节点的范围内选择一个槽。
  3. 请在切分表中查找该插槽的条目。
  4. 在钥匙上用花括号打那根绳子。例如,将foo转换为foo{e4x}

就这样!使用此键的任何命令都将被路由到该碎片。

伪python版本:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# Build this table from CLUSTER SLOTS or CLUSTER NODES
slots = {
   '127.0.0.1:7000': [(0, 1045),(2000,2100)]
   ...
 }

# Build this table from the C example:
sharding_table = ["06S", "Qi", "5L5", "4Iu", "4gY", ....]

def retarget_key(key, node):
    ranges = slots[node] 

    sharding_key = shading_table[ranges[0][0]]
    return '%s{%s}' % (key, sharding_key)
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46294925

复制
相关文章
tcpdump如何对特定的tcp标志位进行过滤
根据tcp保文结构可知,TCP标志头位于头的第14字节中,因为编号从0字节开始,所以TCP标志头在第13字节。
姚华
2022/06/29
1.5K0
tcpdump如何对特定的tcp标志位进行过滤
研究人员对特定行为的大脑信号模式进行分离和解码
图片来源于:Omid Sani & Maryam Shanechi, Shanechi Lab at the USC Viterbi School of Engineering
脑机接口社区
2022/08/17
3820
研究人员对特定行为的大脑信号模式进行分离和解码
检验数据库中是否有特定记录的最简单方法
        String sqlconn = "Data Source=wei//SQLEXPRESS;Initial Catalog=HISDB;Integrated Security=True";         SqlConnection weida = new SqlConnection(sqlconn);         weida.Open();         //*********************         string sql = "SELECT tkdh FROM tkxx WHERE checked = 'True' AND tkdh='" + ckdh + "'";         SqlCommand check1 = new SqlCommand(sql, weida);
风柏杨4711
2021/03/15
1.1K0
iOS UITableView获取特定位置的cell
一、tableView双级联动 [菜单栏联动.gif] [UITableView双级联动.gif] 以上两种效果比较类似,实现的关键在于都是需要获得在滑动过程中滑动到tableView顶部的cell的indexPath。 方案一:获得当前可见的所有cell,然后取可见cell数组中的第一个cell就是目标cell,再根据cell获得indexPath。代码如下 - (void)scrollViewDidScroll:(UIScrollView *)scrollView{ if (scrollV
且行且珍惜_iOS
2018/05/23
4.8K5
Javascript判断数组是否包含特定元素方法汇总
判断数组是否包含某一特定元素是很常见的需求,javascript中有很多实现方法,今天有空汇总了一下,按兼容性由强到弱排序,返回类型一律为boolean:
MudOnTire
2019/05/26
2K0
iOS UITableView获取特定位置的cell
一、tableView双级联动 菜单栏联动.gif UITableView双级联动.gif 以上两种效果比较类似,实现的关键在于都是需要获得在滑动过程中滑动到tableView顶部的cell的ind
且行且珍惜_iOS
2018/06/29
1.3K0
Nature子刊 | 研究人员对特定行为的大脑信号模式进行隔离和解码
图片来源于:Omid Sani & Maryam Shanechi, Shanechi Lab at the USC Viterbi School of Engineering
脑机接口社区
2022/08/25
4470
Nature子刊 | 研究人员对特定行为的大脑信号模式进行隔离和解码
特定场景下Ajax技术的使用
jax技术包含了几种技术:javascript、xml、css、xstl、dom、xhtml和XMLHttpRequest七种技术,所以ajax就像是粘合剂把七种技术整合到一起,从而发挥各个技术的优势。
awwewwbbb
2022/04/27
1.1K0
特定场景下Ajax技术的使用
redis 集群模式的工作原理能说一下么?在集群模式下,redis 的 key 是如何寻址的?
在 redis cluster 架构下,每个 redis 要放开两个端口号,比如一个是 6379,另外一个就是 加1w 的端口号,比如 16379。
IT技术小咖
2019/11/22
1.7K0
BOSHIDA DC电源模块是否有特定的模块尺寸或外壳要求
BOSHIDA DC电源模块广泛应用于各种电子设备中,如计算机、电视、音响、通讯设备,甚至是家用电器等等,因为它们具有高效、可靠、便捷等优点。这些DC电源模块有着不同的尺寸和外壳,以满足不同的应用需求。本文将介绍DC电源模块的尺寸和外壳要求。
河北稳控科技
2023/07/19
1710
BOSHIDA DC电源模块是否有特定的模块尺寸或外壳要求
Redis删除特定前缀key的优雅实现
Redis中没有批量删除特定前缀key的指令,但我们往往需要根据前缀来删除,那么究竟该怎么做呢?可能你一通搜索后会得到下边的答案
小尘哥
2019/06/24
2.8K0
Redis删除特定前缀key的优雅实现
Redis中没有批量删除特定前缀key的指令,但我们往往需要根据前缀来删除,那么究竟该怎么做呢?可能你一通搜索后会得到下边的答案
37丫37
2019/06/17
10.5K0
WordPress 技巧:在特定日志类型中进行搜索
如果你的 WordPress 使用了多个日志类型(Post Type),并且只想在搜索结果中只显示特定的日志类型,可以在 functions.php 文件中添加如下代码。
Denis
2023/04/15
2600
小知识:使用errorstack定位特定问题
有客户遇到ORA-2289的报错,同事协助去现场排查,我帮着远程共同check下。 客户只是应用端报出的错误,为了进一步定位,服务端需要开errorstack协助定位具体问题。 下面就以这个ORA-2289为例,示范下errorstack的使用方法。
Alfred Zhao
2023/05/01
2670
Redis --- 单实例集群模式
线上Redis一般都以多服务器集群模式运行,但是测试/开发环境一般只有一台。虽说如此,为了代码的兼容,也需要运行在集群模式 开启集群模式 修改配置文件redis.conf # 后台模式 daemonize yes # 支持其他服务器访问 # bind 127.0.0.1 注释掉这一行 # 开启集群模式 cluster-enabled yes # 集群内部配置文件 cluster-config-file "nodes-6379.conf" # pid文件 pidfile redis.pid
十毛
2019/03/27
1.4K0
iOS的高德地图标注特定位置
在开发时有时候遇到项目里面需要展示公司的位置,这时如果导入百度地图什么的就太浪费资源,而且还占内存
全栈程序员站长
2022/08/31
8560
使用 yum update 在CentOS下更新时保留特定版本的软件
有时需要保留特定版本的软件不升级,但升级其他软件,这时就需求用到下面的技巧。当CentOS/RHEL/Fedora下的Linux服务器使用 yum update 时命令如何排除选定的包呢?
用户1685462
2021/08/31
2.5K0
在GridView内访问特定控件
本文我将为你演示如何访问GridView中的特定控件。我们会看到怎样去访问TextBox控件,DropDownList控件以及ListBox控件。
Java架构师必看
2021/03/22
2.6K0
点击加载更多

相似问题

是否有一种方法可以只迭代包含特定模式的数组的键

15

Redis:在Redis集群上计算特定类别的键?

13

是否有一种方法可以删除所有具有与特定模式匹配的键的sessionStorage项?

50

是否有一种方法可以检查数组中的特定点是否有特定的字符?

34

集群模式下的Redis streams

16
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文