
redis
傲然君
这个作者很懒,什么都没留下…
展开
-
Redis + Twemproxy(六)之 HAProxy + Keepalived
HAProxy 集成 Keepalived,可避免 HAProxy 单点故障。一、部署 Redis之前的文章:Redis + Twemproxy(四)之 Sentinel 集群 ,所有 Redis 整合在一个集群中:优点:Master 与所有 Slave 数据一致,当增减 Redis 节点时,不会出现文章:Redis + Twemproxy(三)之新增 Redis 节点 所出现的数据丢失...原创 2020-03-12 19:39:18 · 232 阅读 · 0 评论 -
Redis + Twemproxy(五)之 HAProxy
Twemproxy 主要功能在于数据分片和代理,当大并发访问 Redis 时,性能瓶颈必定在于 Twemproxy,因为所有请求最先访问 Twemproxy,然后分片到后台不同 Redis 集群。HAProxy 优点: 最高可以同时维护40000~50000个并发连接,单位时间内处理最大的请求数为20000,最大数据处理能力可达10GBPS; 支持多余8种负载均衡算法,同时也支持 sess...原创 2020-03-11 14:42:33 · 362 阅读 · 0 评论 -
Redis + Twemproxy(四)之 Sentinel 集群
在前面的文章中,Twemproxy 配置文件中所使用的是 Redis 的 Master 节点,这是因为只有 Master 才具备写能力,所有的 Slave 只能读。结果可能导致:一旦 Master 出现故障,Slave 被选举成为新的 Master,但 Twemproxy 将不能正确识别出的 Master,因为配置项 servers 中写的是旧 Master 的 ip/port。...原创 2020-03-09 18:50:28 · 381 阅读 · 0 评论 -
Redis + Twemproxy(三)之新增 Redis 节点
若新增后端 Redis:1、Twemproxy 必须重启才能生效;2、新增前存储在各 Redis 中的数据,不会自动重新分布。若需分布均匀,则须人工写脚本来实现,否则会出现找不到 key 值的情况。至于为什么会出现 key 值找不到,最简单的理解就是“取模运算”。假设一开始只有1个 Redis 节点,由于 Twemproxy 读/取数据,是对相同的 Redis 节点数、采用相同的 hash...原创 2020-03-07 11:43:21 · 307 阅读 · 0 评论 -
Redis + Twemproxy(二)之测试
本章节主要对前面搭建好的 Redis + Twemproxy 进行测试。我们首先来看一下关于 Twemproxy 的介绍:Twemproxy,又称 nutcraker,是 Twtter 开源的一个 Redis 和 Memcache 代理服务器,主要用于管理 Redis 和 Memcached 集群,减少与 Cache 服务器直接连接的数量。Twemproxy 特性:1、支持代理到多台服务器上...原创 2020-03-06 17:21:20 · 345 阅读 · 0 评论 -
Redis + Twemproxy(一)之搭建
一、配置Redis集群主机由于测试条件有限,只采用两台 debian 虚拟机,各自部署两台 redis 实例,一台 master,一台 slave。主机名称IP地址描述server01192.168.255.128master:192.168.255.128:7000,slave:192.168.177.128:7003server02192.168.177....原创 2020-03-04 15:49:50 · 412 阅读 · 0 评论 -
Redis解析之Redis要点
1、Redis特点 ① Redis是基于内存的、支持事务的高性能key-value非关系型NoSQL数据库 —>>> 它将整个数据库的内容加载到数据库进行操作,并定期通过异步操作将数据库数据flush到硬盘上进行保存 —>>> 因为是纯内存操作,所以性能非常出色,可处理的读写次数达10万次/秒 ② 支持5种数据类型:string/hash/list(列表)/set(集合,不允许重复)/zset原创 2017-07-19 10:53:23 · 541 阅读 · 0 评论 -
Redis实战之文本检索
问题检索包含特定单词,但不包含其他特定单词的文本。 约定: 检索语句中,+表示为前一个字的同义词,-表示检索结果中不得包含该词。 如:“你+您-可-以搜索”,表示检索包含“你”(“您”)、“搜”、“索”,且不包含“可”、“以”的所有文本。思路1、建立反向索引(类似于书本末尾的索引),即从每个被索引的文档中抽取部分单词,并为每个单词创建一个集合set(key=idx:单词),用来原创 2017-10-11 15:21:55 · 1041 阅读 · 0 评论 -
Redis实战之Win7 64 + VS2013 + Redis 3.0 订阅和发布
相关命令 向指定频道channel发送消息message: publish channel message 事例:publish RedisChat Hello world! 订阅频道: subscribe channel [channel …] 工程配置1、C/C++: General / Additional Include Directories:原创 2017-08-05 12:38:57 · 1058 阅读 · 1 评论 -
缓存穿透 缓存雪崩 缓存击穿
缓存穿透什么是缓存穿透? 一般的缓存系统,是按照key去缓存查询,如果不存在对应的value,则去后端系统查找(比如DB)。但若key对应的value是一定不存在的,且对该key的并发请求量很大,则会对后端系统造成很大的压力。这就叫做缓存穿透。弊端? 攻击者可利用不存在的key对后端系统进行攻击。如何避免?对查询结果为空的情况也进行缓存,但它的过期时间会很短,或当该key对应...原创 2018-01-09 09:06:24 · 713 阅读 · 0 评论 -
Redis一致性哈希算法
场景描述假设有N台缓存服务器,现在我们希望把3万张图片缓存到这些服务器上。目标:缓存尽可能均匀分布在各服务器上,以上它们能够平摊缓存压力。那么可以:无任何规律的将3万张图片平均缓存到所有服务器上。但当需访问某图片时,需要遍历所有服务器所有缓存项,效率太低、时间太长。hash(缓存项的KEY)%服务器的个数,决定缓存项被缓存到哪一台服务器上(缓存项KEY可取名字等)。查找的时候,同样根据...原创 2018-02-12 15:05:23 · 1219 阅读 · 0 评论 -
Redis实战之群设计
四类集合1、ID分配:string群ID分配:ids:chat消息ID分配:ids:msg:ChatID2、群内成员信息:zsetchat:ChatID 最后获取的群消息ID UserID3、群消息:zsetmsg:ChatID 群消息ID MsgInfo4、用户关注的群:zsetseen:UserID 最后获取的群消息ID ChatID操作:...原创 2018-02-13 15:30:34 · 360 阅读 · 0 评论 -
Redis解析之Keepalived
1、VIP概念:VIP(虚拟IP),指不与特定计算机或计算机网卡相连的IP地址。 若配置了VIP,则主机同时拥有VIP和真实IP,并且使用任一IP都可与主机相连。目的:VIP一般用作实现HA(High Availability,高可靠性),比如当集群主服务器发生故障无法对外提供服务时,可动态将VIP切换至备用机。2、Keepalived概念:Keepalived是一种实现IP漂移的方法,具体来讲它原创 2017-08-04 10:28:11 · 510 阅读 · 0 评论 -
Redis解析之集群(二)
1、重新分片当槽 slot 从节点 A 向节点 B 迁移时,节点 A 和节点 B 都有该 slot ,同时节点 A 上 slot 的状态为MIGRATING,节点 B 上 slot 的状态被为IMPORTING。CLUSTER ADDSLOTS slot1 [slot2] … [slotN]CLUSTER DELSLOTS slot1 [slot2] … [slotN]CLUSTER SETS原创 2017-04-24 16:18:51 · 447 阅读 · 0 评论 -
Redis解析之集群(一)
Redis-Cluster 架构:1)所有 Redis 节点彼此互联(PING-PONG 机制),内部使用二进制协议优化传输速度和带宽。2)集群节点之间定期交换节点信息并且更新,从发送节点的角度看,这些信息包括:集群内有哪些节点,节点IP、PORT、名字、状态(比如OK,PFAIL,FAIL)、角色(master 或者 slave)等。3)节点定期给其他所有的节点发送Ping,cluster-nod原创 2017-04-20 11:13:37 · 570 阅读 · 0 评论 -
Redis实战之多用户聊天室
多客户端之间的通信,可采用消息推送和消息拉取两种方法。所谓消息推送,即采用publish/subscribe模式,但该方法要求用户必须在线才能接收到消息;所谓消息拉取模式,即由接收端自己拉取存储在某种邮箱里的消息。数据结构1、群群ID计数器:(string) ids:chat群成员:(zset,包括群内所有成员及其拉取的最新消息ID) chat:群ID Last_Message_ID 用户原创 2017-09-21 17:28:59 · 1975 阅读 · 1 评论 -
Redis解析之Redis命令
1. 字符串:key_name value incr key_name:键值+1 decr key_name:键值-1 incrby key_name amount:键值+amount(原始键值必须是整数) decrby key_name amount:键值-amount(原始键值必须是整数) incrbyfloat key_name amount:键值+amount原创 2017-09-16 14:50:28 · 426 阅读 · 0 评论 -
Redis解析之订阅与发布
Redis订阅命令包括subscribe(订阅指定频道)和psubscribe(订阅符合指定模式的频道)两种,这些命令被广泛用于实时通信应用,如实时广播、实时提醒等。现在,我们就来研究一下redis-server订阅与发布的工作机制。1、订阅1.1、数据结构//服务端信息struct redisServer { //省略... dict *pubsub_channels; //字原创 2017-08-20 10:36:50 · 707 阅读 · 0 评论 -
Redis实战之微博关注功能
1、需求分析: 每个用户都有两个表:用户的关注、用户的粉丝 关注关系有四种:关注、粉丝、互粉、无关系关注功能可划分为: 1)查看自己的关注/粉丝列表: 关注列表与自己只存在两种关系:关注、互粉 粉丝列表与自己只存在两种关系:粉丝、互粉2)查看别人的关注/粉丝列表: 关注列表与自己存在四种关系:关注、粉丝、互粉、无关系2、实现:结构类型采用:zset,score:存储关注时间key命名规则原创 2017-08-01 17:27:29 · 2611 阅读 · 0 评论 -
Redis实战之微博点赞
数据类型:zset优点:可排序缺点:点赞人数上限?10w以内?1、点赞:zadd t:$tid:$postID:liked time() $uid $tid:被点赞人的微博ID;$postID:微博ID;$uid:点赞人的微博ID按照time从小到大排列取出点赞人:1)zrange t:$tid:$postID:liked startIndex endInd原创 2017-08-01 14:41:26 · 1397 阅读 · 1 评论 -
Redis解析之持久化
持久化目的:用于Redis重启后数据的恢复。持久化方式包括以下4中: 1、Snapshotting(RDB快照,默认的持久化方式) 将内存中的数据以快照的方式写入二进制文件,默认文件名为:dump.rdb。相关配置项: save 900 1 #若900秒内,至少1个key被修改,则发起快照保存 save 300 10 #若300秒内,至少10个key被修改,则发起快照保存 sa原创 2017-07-26 17:01:00 · 330 阅读 · 0 评论 -
Redis实战之主从同步
1、搭建新建文件夹:Master、Slave_01、Slave_02。其中Slave_01作为Master的Slave,Slave_02作为Slave_01的Slave。Master redis.conf配置: port 6000 requirepass 123456Slave_01 redis.conf配置: port 6001 slaveof 127.0.0.1 6000原创 2017-07-20 16:51:28 · 468 阅读 · 0 评论 -
Redis解析之集群数据结构
Redis是一个高可用、高性能、高可扩展性的基于内存也支持持久化存储的key-value存储数据库。集群相关的数据结构:// cluster.h// 保存当前节点与其他节点进行通讯所需的全部信息typedef struct clusterLink { // 链接创建时间 mstime_t ctime; // TCP套接字描述符 int fd原创 2017-04-21 14:23:29 · 564 阅读 · 0 评论 -
Redis实战之Redis 在 Win7 64bit + VS2013 使用
简介 Redis是一个高性能的key-value数据库,所支持的value类型包括string(字符串)、list(链表)、set(集合)、zset(sorted set,有序集合)和hash(哈希类型)等,数据操作具有原子性。 为了保证效率,数据都是缓存在内存中,此外Redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同原创 2017-01-07 11:32:39 · 4447 阅读 · 5 评论 -
Redis实战之Windows Redis 集群搭建(一)
一、开发环境win7 X86、Redis 3.2.100、Ruby 2.2.6。二、 Redis 安装Redis官网不支持Windows,但可从 GitHub上下载Microsoft Open Tech group开发的Win64的版本。下载地址:https://github.com/MSOpenTech/redis 将 redis-server.exe、redis-cli.exe 拷贝至目录:原创 2017-04-19 14:55:18 · 926 阅读 · 1 评论 -
Redis实战之Windows Redis 集群搭建(二)
1、添加新 Master 节点1)启动实例 按照前一章节,创建目录:\7006、配置文件:redis.conf后,启动实例。 Redis-Server ./7006/redis.conf2)添加实例为 Master redis-trib.rb add-node 127.0.0.1:7006 127.0.0.1:7000命令分析:127.0.0.1:7006 表示待新增的 Redis 节点,原创 2017-04-20 16:14:26 · 360 阅读 · 0 评论 -
Redis高速内存缓冲平台可视化监控之RedisLive
文章转自:http://www.cnblogs.com/mahatmasmile/p/5039084.html首先下载安装python的运行环境(Python官网:https://www.python.org/),版本选择的是2.7,一路下一步安装完毕,我的安装在C盘(路径:C:\Python27)安装完毕之后在环境变量中配置一下,这个流程不再复述 点击确定,打开CMD命令行,输入 python,转载 2017-08-03 17:16:37 · 534 阅读 · 1 评论