Keyspace

易懂分布式 | Kademlia算法

懵懂的女人 提交于 2021-01-04 15:17:52
近年来,区块链技术(部分人更愿意称之为分布式账本技术)的走红将分布式技术的概念带入大众的视野。区块链技术之所以备受追捧,一方面是其展现了一种在计算机的辅助下,人类可以以无中心、无权威、无层级的方式来进行社会协作的美妙前景;另一方面,从物理上可论证,分布式的简单协议,比中心化的复杂协议更为高效。分布式技术似乎能够在带来公平的同时,还带来效率。 要理解分布式技术并不困难,因为分布式技术并不高深,但其设计上往往巧妙得令人拍手称赞。 本文介绍一种常见而巧妙的分布式技术,Kademlia算法。 Kademlia算法是一种分布式存储及路由的算法。什么是分布式存储?试想一下,一所1000人的学校,现在学校突然决定拆掉图书馆(不设立中心化的服务器),将图书馆里所有的书都分发到每位学生手上(所有的文件分散存储在各个节点上)。即是所有的学生,共同组成了一个分布式的图书馆。 由中心图书馆到分布式图书馆 在这种场景下,有几个关键的问题需要回答。 1)关键问题 每个同学手上都分配哪些书。即如何分配存储内容到各个节点,新增/删除内容如何处理。 当你需要找到一本书,譬如《分布式算法》的时候,如何知道哪位同学手上有《分布式算法》(对1000个人挨个问一遍,“你有没有《分布式算法》?”,显然是个不经济的做法),又如何联系上这位同学。即一个节点如果想获取某个特定的文件,如何找到存储文件的节点/地址/路径。

玩转Redis-干掉钉子户-没有设置过期时间的key

天大地大妈咪最大 提交于 2020-12-06 18:39:04
   《玩转Redis》系列文章 by zxiaofan 主要讲述Redis的基础及中高级应用。本文是《玩转Redis》系列第【15】篇, 最新系列文章 请前往 公众号“zxiaofan” (点我点我) 查看,或 百度搜索“玩转Redis zxiaofan”(点我点我) 即可。 本文关键字: 玩转Redis、导出没有设置过期时间的key、删除没有设置过期时间的key ; 往期精选 : 《玩转Redis-生产环境如何导入、导出及删除大量数据》 大纲 如何查询Redis中没有设置过期时间的key数量 导出Redis中没有设置过期时间的key 安全删除Redis中没有设置过期时间的key   前段时间公司有新业务需要使用Redis,于是查看了生产一Redis集群的使用情况,用于评估是否能直接接入新业务。此Redis集群购买的阿里云集群社区版,8节点32G;   不看不知道,一看吓一跳。Redis实例共计 450W key,其中 230W 设置了过期时间,也就是说足足有 220W key没有设置过期时间。 What !!! 接近 50% 的数据没有过期时间,完全不符合常理,严重浪费。    不把这些钉子户揪出来,“誓不为猿”。   文末已放 github 联接。 1、如何查询Redis中未设置过期时间的key数量 1.1、使用阿里云【云数据库Redis版管理控制台】查看  

《Redis基础》笔记

狂风中的少年 提交于 2020-12-02 05:53:36
同步自 https://gitee.com/Corvey/note 数据类型 strings set key value 和 get key ,注意set操作会覆盖已有的key/value,若不希望覆盖可使用 set key value nx mset key1 value1 key2 value2 ... 和 mget key1 key2 ... 一次性完成多个key/value关系 incr key 加一, incrby key increment 加increment decr key 减一, decr key decrement 减decrement Lists lpush key value... 将多个value依次插入到key的最左边, rpush 最右 lrange key start stop 输出key的start到stop范围,负数表示倒数 lpop key 和 rpop key 弹出key的最左或最右 lset key index value 将key的index位置元素 修改 为value Hashes hset key field value 和 hmset key field1 value1 field2 value2... hget key field 和 hmget key field1 field2... hincrby key field

一口气说出 6种 延时队列的实现方案,面试稳稳的

时光毁灭记忆、已成空白 提交于 2020-10-03 01:43:27
最强面试题推荐: 2020Java面试题及答案,命中率高达90% 五一期间原计划是写两篇文章,看一本技术类书籍,结果这五天由于自律性过于差,禁不住各种诱惑,我连电脑都没打开过,计划完美宣告失败。所以在这能看出和大佬之间的差距,人家没白没夜的更文,比你优秀的人比你更努力,难以望其项背,真是让我自愧不如。 知耻而后勇,这不逼着自己又学起来了,个人比较喜欢一些实践类的东西,既学习到知识又能让技术落地,能搞出个 demo 最好,本来不知道该分享什么主题,好在最近项目紧急招人中,而我有幸做了回面试官,就给大家整理分享一道面试题:“ 如何实现延时队列? ”。 下边会介绍多种实现延时队列的思路,文末提供有几种实现方式的 github 地址。其实哪种方式都没有绝对的好与坏,只是看把它用在什么业务场景中,技术这东西没有最好的只有最合适的。 一、延时队列的应用 什么是延时队列?顾名思义:首先它要具有队列的特性,再给它附加一个延迟消费队列消息的功能,也就是说可以指定队列中的消息在哪个时间点被消费。 延时队列在项目中的应用还是比较多的,尤其像电商类平台: 1、订单成功后,在30分钟内没有支付,自动取消订单 2、外卖平台发送订餐通知,下单成功后60s给用户推送短信。 3、如果订单一直处于某一个未完结状态时,及时处理关单,并退还库存 4、淘宝新建商户一个月内还没上传商品信息,将冻结商铺等 。。。。

【死磕 Redis】—– info 命令详解

寵の児 提交于 2020-09-26 12:18:22
原文出处: Java 技术驿站 『 chenssy 』 Redis 提供了一个非常有用的查看状态信息的命令:info。它以一种易于理解和阅读的格式,返回关于 Redis 服务器的各种信息和统计数值。使用方法有如下三种: info:部分Redis系统状态统计信息。 info all:全部Redis系统状态统计信息。 info section:某一块的系统状态统计信息,其中section可以忽略大小写。 详细内容如下表格: 参数名 说明 server 获取 server 信息 clients 获取 clients 信息,如客户端连接数等 memory 获取 server 的内存信息,包括当前内存消耗、内存使用峰值 persistence 获取 server 的持久化配置信息 stats 获取 server 的一些基本统计信息,如处理过的连接数量等 replication 获取 server 的主从配置信息 cpu 获取 server 的 CPU 使用信息 keyspace 获取 server 中各个 DB 的 key 的数量 cluster 获取集群节点信息,仅在开启集群后可见 commandstas 获取每种命令的统计信息 其中 memory,stats,clients,keyspace 是 Redis 运行时经常要关注的信息。 server 获取 server 信息,包括

【Redis实战】批量模糊删除(适用生产环境)

佐手、 提交于 2020-08-20 06:43:11
目前在网上看到的大部分文章都是通过keys 进行模糊匹配并删除的 下面介绍3种删除方法,建议使用linux去操作,可以结合 xargs(点击查看介绍) 命令进行操作 参数说明: [ip]: ip地址, 参数名 -> -h [port]: 端口号, 参数名 -> -p [password]: 密码, 参数名 -> -a, 没有密码则不输入 -a [password] [index]: 缓存所在的库, 参数名 -> -n keys命令 它会扫整个库,导致Redis阻塞,影响正常使用, 不建议使用 redis-cli -h [ip] -p [port] -a [password] -n [index] keys "User:*" | xargs redis-cli -h [ip] -p [port] -a [password] -n [index] del 这是目前网上常用的方法,通过keys 命令返回匹配到的key,然后再使用 xargs整合所有的并删除 但是这个方法有个致命的问题,就是它是通过keys去扫描模糊匹配, keys命令会导致Redis阻塞问题,并且keys命令在生产环境是禁用的 scan命令 它是通过游标的方式扫描 (推荐) redis-cli -h [ip] -p [port] -a [password] -n [index] --scan --pattern

2.docker学习笔记之入门,redis主从配置1

允我心安 提交于 2020-08-17 06:55:38
主从复制的作用主要包括: 1、数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。 2、故障恢复:当主节点出现问题时,可以由从节点提供服务,实现快速的故障恢复;实际上是一种服务的冗余。 3、负载均衡:在主从复制的基础上,配合读写分离,可以由主节点提供写服务,由从节点提供读服务(即写Redis数据时应用连接主节点,读Redis数据时应用连接从节点) 分担服务器负载;尤其是在写少读多的场景下,通过多个从节点分担读负载,可以大大提高Redis服务器的并发量。 4、读写分离:可以用于实现读写分离,主库写、从库读,读写分离不仅可以提高服务器的负载能力,同时可根据需求的变化,改变从库的数量; 5、高可用基石:除了上述作用以外,主从复制还是哨兵和集群能够实施的基础,因此说主从复制是Redis高可用的基础。 从节点开启主从复制,有3种方式: (1)配置文件 在从服务器的配置文件中加入:slaveof <masterip> <masterport> (2)启动命令 redis-server启动命令后加入 --slaveof <masterip> <masterport> (3)客户端命令 Redis服务器启动后,直接通过客户端执行命令:slaveof <masterip> <masterport>,则该Redis实例成为从节点。 通过 info replication

redis.conf5.0官方配置文件

房东的猫 提交于 2020-08-16 22:33:40
# Redis configuration file example. # # Note that in order to read the configuration file, Redis must be # started with the file path as first argument: # # ./redis-server /path/to/redis.conf # Note on units: when memory size is needed, it is possible to specify # it in the usual form of 1k 5GB 4M and so forth: # # 1k => 1000 bytes # 1kb => 1024 bytes # 1m => 1000000 bytes # 1mb => 1024*1024 bytes # 1g => 1000000000 bytes # 1gb => 1024*1024*1024 bytes # # units are case insensitive so 1GB 1Gb 1gB are all the same. ################################## INCLUDES ###################################

阿里云redis大key搜索工具

[亡魂溺海] 提交于 2020-08-16 03:33:02
Redis提供了list、hash、zset等复杂类型的数据结构,业务在使用的时候可能由于key设计不合理导致某个key过大,由于redis简单的单线程模型,业务在获取或者删除大key的时候都会有一定的影响,另外在集群模式下由于大key的产生还很容易导致某个子节点的内存满,综上所述我们需要提供大key的搜索工具。 初始化环境 安装python客户端 下载python客户端 wget “ https://pypi.python.org/packages/68/44/5efe9e98ad83ef5b742ce62a15bea609ed5a0d1caf35b79257ddb324031a/redis-2.10.5.tar.gz#md5=3b26c2b9703b4b56b30a1ad508e31083 ” 解压安装 tar -xvf redis-2.10.5.tar.gz cd redis-2.10.5 sudo python setup.py install 扫描脚本 遍历key 对于Redis主从版本可以通过scan命令进行扫描,对于集群版本提供了ISCAN命令进行扫描,命令规则如下, 其中节点个数node可以通过info命令来获取到 ISCAN idx cursor [MATCH pattern] [COUNT count](idx为节点的id,从0开始

数据源管理 | 分布式NoSQL系统,Cassandra集群管理

做~自己de王妃 提交于 2020-08-13 12:34:04
本文源码: GitHub·点这里 || GitEE·点这里 一、Cassandra简介 1、基础描述 Cassandra是一套开源分布式NoSQL数据库系统。它最初由Facebook开发,用于储存收件箱等简单格式数据,此后,由于Cassandra良好的可扩展性,逐渐发展成为了一种流行的分布式结构化数据存储方案。 2、特点分析 弹性可扩展性 Cassandra是高度可扩展的;它允许添加更多的硬件以适应更多的客户和更多的数据根据要求,可以根据业务的数据流量轻松扩展集群规模。 架构特点 Cassandra可以基于分布式运行,并采用了许多容错机制。由于去中心化无主的策略,所以没有单点故障。可以做到不停服滚动升级。这是因为Cassandra可以支持多个节点的临时失效(取决于群集大小),对群集的整体性能影响可以忽略不计。并且Cassandra提供多地域容灾。Cassandra允许将数据复制到其他数据中心,并在多个地域保留多副本,十分适用于不能承担故障的关键业务,必须持续提供服务的应用程序。 数据存储机制 Cassandra适应所有可能的数据格式,包括:结构化,半结构化和非结构化。可以根据业务的需要动态地适应变化的数据结构,并且通过在多个数据中心之间复制数据,可以灵活地在需要时分发数据。有许多案例证明Cassandra可以在金融,医疗,物联网等领域使用。 资源整合能力