随笔分类 -  Redis

1
摘要:前言 Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分。 我们使用Redis时,会接触Redis的5种对象类型(字符串、哈希、列表、集合、有序集合),丰富的类型是Redis相对于Memcached等的一大优势。在了解R 阅读全文
posted @ 2020-11-05 17:07 是谁扭曲了时空 阅读(288) 评论(1) 推荐(0) 编辑
摘要:#AOF 重写 AOF 持久化是通过保存被执行的写命令来记录数据库状态的,所以AOF文件的大小随着时间的流逝一定会越来越大;影响包括但不限于:对于Redis服务器,计算机的存储压力;AOF还原出数据库状态的时间增加; 为了解决AOF文件体积膨胀的问题,Redis提供了AOF重写功能:Redis服务器 阅读全文
posted @ 2020-11-05 16:30 是谁扭曲了时空 阅读(350) 评论(0) 推荐(0) 编辑
摘要:SCAN 命令的保证(guarantees) 同一个元素可能会被返回多次。 处理重复元素的工作交由应用程序负责, 比如说, 可以考虑将迭代返回的元素仅仅用于可以安全地重复执行多次的操作上。 如果一个元素是在迭代过程中被添加到数据集的, 又或者是在迭代过程中从数据集中被删除的, 那么这个元素可能会被返 阅读全文
posted @ 2019-07-09 14:18 是谁扭曲了时空 阅读(517) 评论(0) 推荐(0) 编辑
摘要:I、字典的实现 Redis的字典使用哈希表作为底层实现。 1.1 哈希表 Redis字典所使用的哈希表结构定义如下: typedef struct dictht { // 哈希表数组 dictEntry **table; // 哈希表大小 unsigned long size; // 哈希表大小掩码 阅读全文
posted @ 2019-07-09 13:53 是谁扭曲了时空 阅读(208) 评论(0) 推荐(0) 编辑
摘要:1. JedisCluster类结构 JedisCluster是针对RedisCluster的java客户端,它封装了java访问redis集群的各种操作,包括初始化连接、请求重定向等。我们先来看下JedisCluster的类结构: JedisCluster初始化时,所有的集群连接信息都是封装在Je 阅读全文
posted @ 2019-06-27 20:00 是谁扭曲了时空 阅读(2403) 评论(0) 推荐(0) 编辑
摘要:哨兵模式 哨兵模式是redis高可用的实现方式之一 使用一个或者多个哨兵(Sentinel)实例组成的系统,对redis节点进行监控,在主节点出现故障的情况下,能将从节点中的一个升级为主节点,进行故障转义,保证系统的可用性。 哨兵们是怎么感知整个系统中的所有节点(主节点/从节点/哨兵节点)的 首先主 阅读全文
posted @ 2019-06-27 18:52 是谁扭曲了时空 阅读(33486) 评论(0) 推荐(5) 编辑
摘要:主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费事费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。 一、哨兵模式概述 哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程, 阅读全文
posted @ 2019-06-27 18:49 是谁扭曲了时空 阅读(754) 评论(0) 推荐(0) 编辑
摘要:Redis集群设计包括2部分:哈希Slot和节点主从 节点主从: 主从设计不算什么新鲜玩意,在数据库中我们也经常用主从来做读写分离,直接上图: 图上能看得到的信息: 1, 只有1个Master,可以有N个slaver,而且Slaver也可以有自己的Slaver,由于这种主从的关系决定他们是在配置阶段 阅读全文
posted @ 2019-06-27 18:28 是谁扭曲了时空 阅读(430) 评论(0) 推荐(0) 编辑
摘要:1. 参考的优秀文章 Request/Response protocols and RTT 2. 来源 原来,系统中一个树结构的数据来源是Redis,由于数据增多、业务复杂,查询速度并不快。究其原因,是单次查询的数量太多了,一个树结构,大概要几万次Redis的交互。于是,尝试用Redis的Pipel 阅读全文
posted @ 2019-06-27 11:33 是谁扭曲了时空 阅读(441) 评论(0) 推荐(0) 编辑
摘要:守护进程(Daemon Process),也就是通常说的 Daemon 进程(精灵进程),是 Linux 中的后台服务进程。它是一个生存期较长的进程,通常独立 于控制终端并且周期性地执行某种任务或等待处理某些发生的事件。 守护进程是个特殊的孤儿进程,这种进程脱离终端,为什么要脱离终端呢?之所以脱离于 阅读全文
posted @ 2019-06-26 17:03 是谁扭曲了时空 阅读(2680) 评论(0) 推荐(0) 编辑
摘要:普通实现 说道Redis分布式锁大部分人都会想到: 1、setnx+lua, 2、setkey value px milliseconds nx。 这种实现方式有3大要点(也是面试概率非常高的地方): 事实上这类琐最大的缺点就是它加锁时只作用在一个Redis节点上,即使Redis通过sentinel 阅读全文
posted @ 2019-06-26 15:50 是谁扭曲了时空 阅读(867) 评论(0) 推荐(0) 编辑
摘要:转自:https://www.seoxiehui.cn/article-45186-1.html 需求: 为满足用户标签的统计需求,小灰利用Mysql设计了如下的表结构,每一个维度的标签都对应着Mysql表的一列:要想统计所有90后的程序员该怎么做呢 转自:https://www.seoxiehui 阅读全文
posted @ 2019-06-26 13:00 是谁扭曲了时空 阅读(469) 评论(0) 推荐(0) 编辑
摘要:我们在登陆某些博客网站或者视频网站的时候,网站往往会记录我们是否阅读了某篇文章,或者是观看了某个视频。 如果用传统的mysql数据库实现,如果用户数量多,文章和视频也多的情况下,那么则会给数据库带来很大的压力。 而用Redis的GETBIT和SETBIT则会简单得多。我们以视频为例,我们用bitma 阅读全文
posted @ 2019-06-26 11:29 是谁扭曲了时空 阅读(457) 评论(0) 推荐(0) 编辑
摘要:一、缓存穿透预防及优化 缓存穿透是指查询一个根本不存在的数据,缓存层和存储层都不会命中,但是出于容错的考虑,如果从存储层查不到数据则不写入缓存层,如图 11-3 所示整个过程分为如下 3 步: 缓存穿透将导致不存在的数据每次请求都要到存储层去查询,失去了缓存保护后端存储的意义。 图-1:缓存穿透模型 阅读全文
posted @ 2019-05-24 21:08 是谁扭曲了时空 阅读(195) 评论(0) 推荐(0) 编辑
摘要:1. redis加锁分类 redis能用的的加锁命令分表是INCR、SETNX、SET2. 第一种锁命令INCR 这种加锁的思路是, key 不存在,那么 key 的值会先被初始化为 0 ,然后再执行 INCR 操作进行加一。 然后其它用户在执行 INCR 操作进行加一时,如果返回的数大于 1 ,说 阅读全文
posted @ 2018-12-23 11:31 是谁扭曲了时空 阅读(5296) 评论(0) 推荐(1) 编辑
摘要:一:设置过期时间 redis有四种命令可以用于设置键的生存时间和过期时间: EXPIRE <KEY> <TTL> : 将键的生存时间设为 ttl 秒 PEXPIRE <KEY> <TTL> :将键的生存时间设为 ttl 毫秒 EXPIREAT <KEY> <timestamp> :将键的过期时间设为 阅读全文
posted @ 2018-12-22 23:39 是谁扭曲了时空 阅读(10200) 评论(1) 推荐(2) 编辑
摘要:一、问题引入 BitMap从字面的意思,很多人认为是位图,其实准确的来说,翻译成基于位的映射,怎么理解呢?举一个例子,有一个无序有界int数组{1,2,5,7},初步估计占用内存44=16字节,这倒是没什么奇怪的,但是假如有10亿个这样的数呢,10亿4/(102410241024)=3.72G左右。 阅读全文
posted @ 2018-11-28 09:45 是谁扭曲了时空 阅读(529) 评论(0) 推荐(0) 编辑
摘要:缓存穿透、缓存并发、热点缓存 一、前言 在之前的一篇缓存穿透、缓存并发、缓存失效之思路变迁文章中介绍了关于缓存穿透、并发的一些常用思路,但是个人感觉文章中没有明确一些思路的使用场景,本文继续将继续深化与大家共同探讨,同时也非常感谢这段时间给我提宝贵建议的朋友们。 说明:本文中提到的缓存可以理解为Re 阅读全文
posted @ 2018-11-28 00:01 是谁扭曲了时空 阅读(645) 评论(0) 推荐(0) 编辑
摘要:1:缓存技术和框架的重要性 互联网的一些高并发,高性能的项目和系统中,缓存技术是起着功不可没的作用。缓存不仅仅是key-value的简单存取,它在具体的业务场景中,还是很复杂的,需要很强的架构设计能力。我曾经就遇到过因为缓存架构设计不到位,导致了系统崩溃的案例。 2:缓存的技术方案分类 3:高并发以 阅读全文
posted @ 2018-11-28 00:00 是谁扭曲了时空 阅读(813) 评论(0) 推荐(0) 编辑
摘要:什么是事务 事务是指由一系列数据库操作组成的一个完整的逻辑过程,这个过程中的所有操作要么都成功,要么都不成功。比如:常见的例子就是银行转账的例子,一次转账操作会包含多个数据库操作,而这些数据库操作需要放到一个事务当中,保证其要么都成功,要么都不成功。 什么是ACID ACID是事务的四个特性,指的是 阅读全文
posted @ 2018-10-30 10:54 是谁扭曲了时空 阅读(589) 评论(0) 推荐(0) 编辑

1