随笔分类 -  Redis

摘要:在Redis存储的所有数据中,有一部分是被频繁访问的。有两种情况可能会导致热点问题的产生,一个是用户集中访问的数据,比如抢购的商品,明星结婚和明星出轨的微博。还有一种就是在数据进行分片的情况下,负载不均衡,超过了单个服务器的承受 能力。热点问题可能引起缓存服务的不可用,最终造成压力堆积到数据库。 热 阅读全文
posted @ 2021-03-15 18:47 snail灬 阅读(619) 评论(0) 推荐(0) 编辑
摘要:官方链接 https://redis.io/clients 官网推荐的Java客户端有3个:Jedis, Redisson和Luttuce。 配置 作用 Jedis A blazingly small and sane redis java client (体系非常小,但是功能很完善) lettuc 阅读全文
posted @ 2021-03-04 00:00 snail灬 阅读(265) 评论(0) 推荐(0) 编辑
摘要:如果要实现Redis数据的分片,我们有三种方案。 第一种是在客户端实现相关的逻辑,例如用取模或者一致性哈希对key进行分片, 查询和修改都先判断key的路由。 第二种是把做分片处理的逻辑抽取出来,运行一个独立的代理服务,客户端连接到这个代理服务,代理服务做请求的转发。 第三种就是基于服务端实现。 客 阅读全文
posted @ 2021-03-03 16:04 snail灬 阅读(407) 评论(0) 推荐(0) 编辑
摘要:可用性保证之Sentinel Sentinel 原理 怎么实现高可用呢?第一个对于服务端来说,能够实现主从自动切换;第二个,对于客户端来说,如果发生了主从切换,它需要获取最新的master节点。 这个怎么实现呢?这里面应该要有—个管理Redis节点存活状态的角色,而且具备路由功能。 思路: 创建一台 阅读全文
posted @ 2021-03-03 14:02 snail灬 阅读(194) 评论(0) 推荐(0) 编辑
摘要:Redis 主从复制(replication) 跟 Kafka、RocketMQ、MySQL、Zookeeper—样,Reids 支持集群的架构,集群的节点有主节点和从节点之分。主节点叫master,从节点叫slave。slave会通过复制的技术,自动同步master的数据。 主从复制配置 Redi 阅读全文
posted @ 2021-03-01 23:40 snail灬 阅读(53) 评论(0) 推荐(0) 编辑
摘要:https://redis.io/topics/persistence Redis速度快,很大一部分原因是因为它所有的数据都存储在内存中。如果断电或者宕机,都会导致内存中的数据丢失。为了实现重启后数据不丢失,Redis提供了两种持久化的方案,—种是 RDB 快照(Redis DataBase),—种 阅读全文
posted @ 2021-02-25 23:50 snail灬 阅读(28) 评论(0) 推荐(0) 编辑
摘要:Redis本质上一个存储系统。所有的存储系统在数据量过大的情况下都会面临存储瓶颈,包括 MySQL, RabbitMQ等等。 这里我们解决要两个问题: 首先,作为一个内存的KV系统,Redis服务肯定不是无限制地使用内存,应该设置一个上限(max_memory)。 第二个,数据应该有过期属性, 这样 阅读全文
posted @ 2021-02-22 17:50 snail灬 阅读(47) 评论(0) 推荐(0) 编辑
摘要:QA:Redis到底有多快? 使用redis自带的benchmark脚本测试: cd /usr/local/soft/redis-6.0.9/src redis-benchmark -t set,lpush -n 100000 -q 结果: SET: 136239.78 requests per s 阅读全文
posted @ 2021-01-30 01:59 snail灬 阅读(59) 评论(0) 推荐(0) 编辑
摘要:Lua是一种轻量级脚本语言,它是用C语言编写的,跟数据的存储过程有点类似。 使用Lua脚本来执行Redis命令的好处: 1、 一次发送多个命令,减少网络开销。 2、 Redis会将整个脚本作为一个整体执行,不会被其他请求打断,保持原子性。 3、 对于复杂的组合命令,我们可以放在文件中,可以实现命令复 阅读全文
posted @ 2021-01-22 15:46 snail灬 阅读(1276) 评论(0) 推荐(0) 编辑
摘要:发布订阅模式 列表的局限 通过队列的rpush和blpop可以实现消息队列(队尾进队头出),没有任何元素可以弹出的时候,连接会被阻塞。 但是基于list实现的消息队列,不支持一对多的消息分发,相当于只有一个消费者。 如果要实现一对多的消息分发,怎么办? 可以通过消息发布者(发布者)向指定的频道发布消 阅读全文
posted @ 2021-01-21 00:10 snail灬 阅读(67) 评论(0) 推荐(0) 编辑
摘要:其他数据结构 BitMaps Bitmaps 是在字符串类型上面定义的位操作。一个字节由8个二进制位组成。 set k1 a 获取value在offset处的值(a对应的ASCII码是97,转换为二进制数据是01100001) getbit k1 0 修改二进制数据 setbit k1 6 1 se 阅读全文
posted @ 2021-01-20 17:34 snail灬 阅读(57) 评论(0) 推荐(0) 编辑
摘要:List列表 存储类型 存储有序的字符串(从左到右),元素可以重复。最大存储数量2^32-1(40亿左右)。 操作命令 lpush queue a lpush queue b c lpush queue d e lpop queue lpop queue lindex queue 0 lrange 阅读全文
posted @ 2021-01-17 02:10 snail灬 阅读(81) 评论(0) 推荐(0) 编辑
摘要:Hash哈希 存储类型 hash用来存储多个无序的键值对。最大存储数量2^32-1(40亿左右) 注意:前面我们说Redis所有的KV本身就是键值对,用dictEntry实现的,叫做外层的哈希、现在我们分析的是内层哈希。 同样是存储字符串,Hash与String的主要区别? 1.把所有相关的值聚集集 阅读全文
posted @ 2021-01-08 02:58 snail灬 阅读(40) 评论(0) 推荐(0) 编辑
摘要:Redis Redis(REmote Dictionary Service) 远程字典服务,最开始 Redis 只支持 List。 Redis的特性 对于Redis,我们大部分时候的认识是一个缓存的组件,只是在很多互联网应用里面,他作为缓存发挥了最大的作用。 要了解特性之前,需要先回答以下问题: 1 阅读全文
posted @ 2021-01-06 19:19 snail灬 阅读(62) 评论(0) 推荐(0) 编辑
摘要:前言 设计一个缓存系统,不得不要考虑的问题就是:缓存穿透、缓存击穿与失效时的雪崩效应 缓存穿透 缓存穿透是指查询一个一定不存在的数据,由于缓存是不命中时被动写的,并且出于容错考虑,如果从存储层查不到数据则不写入缓存,这将导致这个不存在的数据每次请求都要到存储层去查询,失去了缓存的意义。在流量大时,可 阅读全文
posted @ 2019-11-13 00:09 snail灬 阅读(1505) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示