stream

Posted by 夏泽民

在Stream之前,Redis PUB/SUB亦可可实现消息的传递及广播,但消息不支持持久化,不记录消费端状态,并且“Fire and Forgot”,可靠性无法保证。 stream与pub/sub的比较:



id 生成器

Posted by 夏泽民

在应用程序中,经常需要全局唯一的ID作为数据库主键。如何生成全局唯一ID?



shortUrl

Posted by 夏泽民

我们在新浪微博上公布网址的时候。微博会自己主动判别网址。并将其转换。比如:http://t.cn/hrYnr0。 为什么要这样做的,原因我想有这样几点: 1、微博限制字数为140字一条,那么假设我们须要发一些连接上去,可是这个连接很的长。以至于将近要占用我们内容的一半篇幅。这肯定是不能被同意的。所以短网址应运而生了。 2、短网址能够在我们项目里能够非常好的对开放级URL进行管理。 有一部分网址能够会涵盖性、暴力、广告等信息。这样我们能够通过用户的举报,全然管理这个连接将不出如今我们的应用中,应为相同的URL通过加密算法之后,得到的地址是一样的。 3、我们能够对一系列的网址进行流量,点击等统计,挖掘出大多数用户的关注点。这样有利于我们对项目的兴许工作更好的作出决策。 1.压缩 实现一种算法,将长地址转换成短地址。然后再实现一种逆运算,将短地址转换成原来的地址。 问题,复杂场景无法覆盖,只能对简单的url可行 2.Hash算法 将一个长URL进行Hash运算,然后将Hash值作为这个长链接的唯一标示。但是通常容易想到的不一定是最优的,我们知道Hash有可能产生碰撞,Hash碰撞的解决,会增强短链接系统的复杂度。



redis 4 特性

Posted by 夏泽民

redis 4.0 新特性 Redis 4.0在2017年7月发布为GA。包含几个重大改进:更好的复制(PSYNC2),线程DEL / FLUSH,混合RDB + AOF格式,活动内存碎片整理,内存使用和性能改进。目前小版本更新到4.0.6 一、主从数据同步机制 PSYNC2: 新的一种主从复制同步机制。 PSYNC1:2.8~4.0之前版本的同步为PSYNC1 1、psync1因为网络中断或者阻塞导致主从中断,恢复后必须重新到主节点dump一份全量数据同步到从节点。psync2再中断恢复后只需要同步复制延迟的那部分数据。 2、psync1在重启从节点需要重新全量同步数据。psync2只部分同步增量数据。 3、在PSYNC1 当复制为链式复制的时候,如 A>B>C 主节点为A。当A出现问题,C节点不能正常复制B节点的数据。当提升B为主节点,C需要全量同步B的数据。在PSYNC2:PSYNC2解决了链式复制之间的关联性。A出现问题不影响C节点,B提升为主C不需要全量同步。 4、在使用星形复制。如一主两从。A>B , A>C 主节点为A。当A出现问题,B提升为主节点,C 重新指向主节点B。使用同步机制PSYNC2,C节点只做增量同步即可。在使用sentinel故障转移可以较少数据重新同步的延迟时间,避免大redis同步出现的网络带宽占满。 二、命令优化 线程DEL / FLUSH 优化 Redis现在可以在不同的线程中删除后台的key而不会阻塞服务器。 新的UNLINK命令与DEL相同,但是以非阻塞的方式工作。但是在key过期的内部依然使用了DEL。 类似地,为了让整个数据集或单个数据库异步释放,在“FLUSHALL”和“FLUSHDB”中添加了“ASYNC”选项。(手动清除大的key 可以使用unlink,不阻塞) 三、慢日志记录客户端来源IP地址,这个小功能对于故障排查很有用处。 四、混合RDB + AOF格式 混合RDB + AOF格式: 混合的RDB-AOF格式。 如果启用,则在重写AOF文件时使用新格式:重写使用更紧凑和更快的方式来生成RDB格式,并将AOF流附加到文件。 这允许在使用AOF持久性时更快地重写和重新加载。(目前相对于2.8没啥用) 五、新的管理命令 1、MEMORY 能够执行不同类型的内存分析:内存问题的故障排除(使用MEMORY DOCTOR,类似于LATENCY DOCTOR),报告单个键使用的内存量,更深入地报告Redis内存使用情况 。 查看键值 使用 memory MEMORY USAGE key memory统计分析 MEMORY STATS MEMORY MALLOC-STATS MEMORY PURGE 2、SWAPDB 能够完全立即(无延迟)替换同实例下的两个Redis数据库(目前我们业务没啥用) 六、 内存使用和性能改进: 1、Redis现在使用更少的内存来存储相同数量的数据。 2、Redis现在可以对使用的内存进行碎片整理,并逐渐回收空间(这个功能依然是试用阶段,可以通过参数不开启即可)

以上列举功能为4.0的重要更新,也是对我们目前redis大有改善,所列举的功能已经和亚运测试过。业务上还没有预发测试。 更多4.0版本信息 https://raw.githubusercontent.com/antirez/redis/4.0/00-RELEASENOTES

建议:新的边缘业务redis上线使用redis4.0 。先进行预发功能连通测试。一段时间后,根据实际使用情况推进redis4.0更新。 一,Memory Redis4.0新增的内存管理分析工具 memory command 二,Lazy Free 解决单key大value 删除时导致的短暂阻塞问题 删除大key时,使用unlink进行快速删除 解除关联 后台fork子进程删除
三,Psync2 升级psync1 解决副本集重启 全量同步问题 减少同步数据和时间



redis 5 新特性

Posted by 夏泽民

稳定版 (5.0) Redis 5.0 是第一个加入流数据类型(stream data type )的版本,sorted sets blocking pop operations, LFU/LRU info in RDB, Cluster manager inside redis-cli, active defragmentation V2, HyperLogLogs improvements and many other improvements. Redis 5 was release as GA in October 2018.



Search

Popular posts

Anything in here will be replaced on browsers that support the canvas element

Recent posts

This blog is maintained by 夏泽民

Get in touch with me at 465474307@qq.com

Subscribe to our mailing list

* indicates required