
Redis
文章平均质量分 84
cdai
这个作者很懒,什么都没留下…
展开
-
Redis之父的“退役”感言
Redis之父Antirez今早发布了一篇文章,题为《The end of the Redis adventure》。多年以前深入学习过Redis,这个最流行的缓存解决方案。当时惊叹于其近乎“变态”的性能表现,简直就是一个性能猛兽。而更令人印象深刻的是,在优异的外在表现背后,其代码质量也同样优秀。当年又不少的文章和书籍,都是关于Redis源码解析的。因为工作的缘故,我也写了不少文章,对Redis这个好产品还是有些怀念的。出于这些缘由,今天特意仔细读了一下Redis之父的这篇博客。文章虽然不长,但有的地方还原创 2020-07-02 01:59:59 · 2364 阅读 · 3 评论 -
豌豆夹Redis解决方案Codis源码剖析:Proxy代理
豆瓣Redis解决方案Codis源码剖析:Proxy代理1.预备知识1.1 CodisCodis就不详细说了,摘抄一下GitHub上的一些项目描述: Codis is a proxy based high performance Redis cluster solution written in Go/C, an alternative to Twemproxy. It supports mul原创 2015-07-03 21:33:18 · 15740 阅读 · 27 评论 -
豌豆夹Redis解决方案Codis安装使用
豆瓣Redis解决方案Codis安装使用1.安装1.1 Golang环境Golang的安装非常简单,因为官网被墙,可以从国内镜像如studygolang.com下载。[root@vm root]$ tar -C /usr/local -zxf go1.4.2.linux-amd64.tar.gz[root@vm root]$ vim /etc/profileexport GOROOT=/usr/原创 2015-07-25 07:48:45 · 27301 阅读 · 6 评论 -
豌豆夹Redis解决方案Codis源码剖析:Dashboard
豆瓣Redis解决方案Codis源码剖析:Dashboard1.不只是Dashboard虽然名字叫Dashboard,但它在Codis中的作用却不可小觑。它不仅仅是Dashboard管理页面,更重要的是,它负责监控和指挥各个Proxy的负载均衡(数据分布和迁移)。并且,所有API都以RESTFul接口的形式对外提供,供Proxy和codis-config(Codis的命令行工具)调用。下面就来看一下原创 2015-08-08 10:32:55 · 10484 阅读 · 14 评论 -
全面剖析Redis Cluster原理和应用
全面剖析Redis Cluster原理和应用1.Redis Cluster总览1.1 设计原则和初衷在官方文档Cluster Spec中,作者详细介绍了Redis集群为什么要设计成现在的样子。最核心的目标有三个:性能:这是Redis赖以生存的看家本领,增加集群功能后当然不能对性能产生太大影响,所以Redis采取了P2P而非Proxy方式、异步复制、客户端重定向等设计,而牺牲了部分的一致性、使用性。原创 2015-09-18 20:27:03 · 104249 阅读 · 40 评论 -
Redis Cluster架构优化
Redis Cluster架构优化在《全面剖析Redis Cluster原理和应用》中,我们已经详细剖析了现阶段Redis Cluster的缺点:无中心化架构 Gossip消息的开销不停机升级困难无法根据统计区分冷热数据客户端的挑战 Cluster协议支持连接和路由表的维护开销MultiOp和Pipeline支持有限Redis实现问题 不能自动发现不能自动Resharding原创 2015-09-25 15:01:09 · 23655 阅读 · 14 评论 -
Redis监控工具,命令和调优
Redis监控工具,命令和调优1.图形化监控因为要对Redis做性能测试,发现了GitHub上有个python写的RedisLive监控工具评价不错。结果鼓捣了半天,最后发现其主页中引用了Google的jsapi脚本,必须在线连接谷歌的服务,Stackoverflow上说把js脚本下载到本地也没法解决问题,坑爹!正要放弃时发现了一个从RedisLive fork出去的项目redis-monitor,原创 2015-08-16 09:10:21 · 45982 阅读 · 10 评论 -
Jedis分片Sentinel连接池实验
Jedis分片Sentinel连接池实验1.起因众所周知,Redis官方HA工具Sentinel已经问世很久了,但令人费解的是,Jedis官方却迟迟没有更新它的连接池。到目前Maven库中最新的2.7.3版本为止,都只能要么使用分片连接池,要么使用不分片的Sentinel连接池。如果既进行了Sharding,又对每组的主从实例配置Sentinel进行监控,怎么办?答案是只能自己开发了,晕!还好万能的原创 2015-08-29 08:15:42 · 14483 阅读 · 11 评论 -
用Netty解析Redis网络协议
用Netty解析Redis网络协议根据Redis官方文档的介绍,学习了一下Redis网络通信协议。然后偶然在GitHub上发现了个用Netty实现的Redis服务器,很有趣,于是就动手实现了一下!1.RESP协议Redis的客户端与服务端采用一种叫做 RESP(REdis Serialization Protocol)的网络通信协议交换数据。RESP的设计权衡了实现简单、解析快速、人类可读这三个因素原创 2015-06-19 21:45:40 · 11706 阅读 · 5 评论 -
Redis源码学习:字符串
Redis源码学习:字符串1.初识SDS1.1 SDS定义Redis定义了一个叫做sdshdr(SDS or simple dynamic string)的数据结构。SDS不仅用于 保存字符串,还用来当做缓冲区,例如AOF缓冲区或输入缓冲区等。如下所示,整数len和free分别表示buf数组中已使用的长度和剩余可用的长度,buf是一个原生C字符串,以\0结尾。sds就是sdshdr中char buf原创 2015-05-30 08:05:29 · 3006 阅读 · 5 评论 -
Redis源码学习:Lua脚本
Redis源码学习-Lua脚本1.Sublime Text配置我是在Win7下,用Sublime Text + Cygwin开发的,配置方法请参考《Sublime Text 3下C/C++开发环境搭建》。要注意的是:在Cygwin中安装Lua解析器后,SublimeClang插件就能识别出可饮用的Lua头文件了,因为Build System中我们已经配置过"-I", "D:\\cygwin64\\u原创 2015-05-22 22:04:33 · 3573 阅读 · 2 评论 -
高性能的Redis代理TwemProxy
TwemProxy是一个Redis的中间件代理,具有很多有用的功能,可以暂时替代一部分Redis Cluster的功能:² 支持失败节点自动删除² 可以设置重新连接该节点的时间² 可以设置连接多少次之后删除该节点² 该方式适合作为cache存储² 支持设置HashTag² 通过HashTag可以自己设定将两个KEY hash到同一个实例上去。² 减少与redis的直接连接数² 保持原创 2015-02-28 22:42:42 · 4445 阅读 · 0 评论 -
Redis集群功能预览
目前Redis Cluster仍处于Beta版本,Redis 3.0将会加入,在此可以先对其主要功能和原理进行一个预览。参考《Redis Cluster - a pragmatic approach to distribution》。1 没有集群的Redis没有集群功能的Redis,每个master-slave主从复制都独立于其他结点,sharding需要在客户端如Jedis中控制。可以使用官方提原创 2015-02-28 22:50:21 · 9249 阅读 · 0 评论 -
Redis中的关系查询
本文对Redis如何保存关系型数据,以及如何对其匹配、范围、模糊查询进行举例讲解,其中模糊查询功能基于最新的2.8.9以后版本。1 关系型数据的存储以Staff对象为例,在关系型数据库或类似GridGain的内存网格产品中(底层使用H2数据库的内存模式存储),我们以表形式保存对象的数据。因为内存网格是基于对象做缓存的,所以还要额外多出一列(Staff列)保存整个对象的编码,例如序列化后的二进制或者原创 2015-01-16 21:35:28 · 47397 阅读 · 6 评论 -
Redis主从和HA配置
1同步原理摘自:http://www.cnblogs.com/stephen-liu74/archive/2012/03/30/2364717.html “下面的列表清楚的解释了Redis Replication的特点和优势。 1). 同一个Master可以同步多个Slaves。 2). Slave同样可以接受其它Slaves的连接和同步请求,这样可以有效的分载Mast原创 2013-09-14 21:20:55 · 20297 阅读 · 5 评论