Redis
编码博客控
这个作者很懒,什么都没留下…
展开
-
Redis 的多线程版本比 Redis 本身要快 5 倍
如果我告诉您有一个 Redis 的分支版本,它的性能比原生的 Redis 快 5 倍,而且延迟却降低近 5 倍,你会不会想了解一下这个项目?而如果您不再需要哨兵节点并且您的副本可以接受读取和写入,这将有可能使分片数量减少 10 倍,这样对你的吸引力是不是更大了呢?我说的这个分支版本,它其实是 Redis 的一个分叉版本,名叫 KeyDB 。KeyDB是 Redis 开源的多线程分叉版本。本文...原创 2020-04-15 17:50:21 · 311 阅读 · 0 评论 -
蚂蚁金服部门面试题解析:MySQL+Redis+MongoDB+Zookeeper等
今天分享给大家的都是目前主流企业使用最高频的面试题库,也都是 Java 版本升级之后,重新整理归纳的最新答案,会让面试者少走很多不必要的弯路。同时每个专题都做到了详尽的面试解析文档,以确保每个阶段的读者都能看得懂,同时这部分面试文档也是可以免费的提供给有需要的同学们学习的,有需要的可以查看文末的获取方式!Java 编码MySQL主键超键候选键外键 数据库事务的四个特性及含义 视...原创 2020-01-07 22:10:29 · 1023 阅读 · 0 评论 -
Redis 到底是怎么实现“附近的人”这个功能的呢?
前言:针对“附近的人”这一位置服务领域的应用场景,常见的可使用PG、MySQL和MongoDB等多种DB的空间索引进行实现。而Redis另辟蹊径,结合其有序队列zset以及geohash编码,实现了空间搜索功能,且拥有极高的运行效率。本文将从源码角度对其算法原理进行解析,并推算查询时间复杂度。要提供完整的“附近的人”服务,最基本的是要实现“增”、“删”、“查”的功能。以下将分别进行介绍,其中会...原创 2020-01-02 22:25:39 · 677 阅读 · 0 评论 -
选择合适Redis数据结构,减少80%的内存占用
前言redis作为目前最流行的nosql缓存数据库,凭借其优异的性能、丰富的数据结构已成为大部分场景下首选的缓存工具。由于redis是一个纯内存的数据库,在存放大量数据时,内存的占用将会非常可观。那么在一些场景下,通过选用合适数据结构来存储,可以大幅减少内存的占用,甚至于可以减少80%-99%的内存占用。 利用zipList来替代大量的Key-Value先来看一下场景,在D...原创 2020-01-02 21:58:48 · 809 阅读 · 0 评论 -
Redis为什么是单线程、及高并发快的3大原因详解
Redis的高并发和快速原因1.redis是基于内存的,内存的读写速度非常快;2.redis是单线程的,省去了很多上下文切换线程的时间;3.redis使用多路复用技术,可以处理并发的连接。非阻塞IO 内部实现采用epoll,采用了epoll+自己实现的简单的事件框架。epoll中的读、写、关闭、连接都转化成了事件,然后利用epoll的多路复用特性,绝不在io上浪费一点时间。为什...原创 2019-12-30 17:32:03 · 794 阅读 · 0 评论 -
熟悉这几道 Redis 高频面试题,面试不用愁
1、说说 Redis 都有哪些应用场景?缓存:这应该是 Redis 最主要的功能了,也是大型网站必备机制,合理地使用缓存不仅可以加 快数据的访问速度,而且能够有效地降低后端数据源的压力。 共享Session:对于一些依赖 session 功能的服务来说,如果需要从单机变成集群的话,可以选择 redis 来统一管理 session。 消息队列系统:消息队列系统可以说是一个大型网站的必备基础组...原创 2019-12-29 20:26:12 · 658 阅读 · 0 评论 -
Redis源码解析-基础数据-qulicklist(快速列表)
太长不看版快速列表是一个元素为压缩列表的双向链表。 快速列表是列表对象list的底层实现之一。 快速列表是在Redis3.2版本中引入的。 快速列表节点中压缩列表的最大字节长度(配置项为负数时)或最多元素个数(配置项为正数时)由配置项 list-max-ziplist-size 决定,默认约束为最大长度8Kb。 快速列表提供了选项可以使用LZF压缩算法对中间的节点中的ziplist...原创 2019-12-23 14:52:24 · 278 阅读 · 0 评论 -
面试官:Redis 这些我必问
分布式缓存缓存好处:高性能 + 高并发高性能(常用)数据库查询耗费了800ms,其他用户对同一个数据再次查询 ,假设该数据在10分钟以内没有变化过,并且 10 分钟之内有 1000 个用户 都查询了同一数据,10 分钟之内,那 1000 个用户,每个人查询这个数据都感觉很慢 800ms比如 :某个商品信息,在 一天之内都不会改变,但是这个商品每次查询一次都要耗费2s,一天之内...原创 2019-12-19 14:48:03 · 234 阅读 · 0 评论 -
MySQL数据和Redis缓存一致性方案详解
需求起因在高并发的业务场景下,数据库大多数情况都是用户并发访问最薄弱的环节。所以,就需要使用redis做一个缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库。这个业务场景,主要是解决读数据从Redis缓存,一般都是按照下图的流程来进行业务操作。读取缓存步骤一般没有什么问题,但是一旦涉及到数据更新:数据库和缓存更新,就容易出现缓存(Redis)和数据库(M...原创 2019-12-15 22:36:37 · 242 阅读 · 0 评论 -
简单动态字符串(simple dynamic string)SDS
Redis 没有直接使用C语言传统的字符串表示,而是自己构建了一种名为简单动态字符串(simple dynamic string SDS)的抽象类型,并将SDS用作Redis 的默认字符串表示:10.143.128.165:6379> SET msg "hello world"OK设置一个key= msg,value = hello world 的新键值对,键(key)是一个...原创 2019-12-06 22:52:39 · 321 阅读 · 0 评论 -
Java基于redis实现分布式锁(SpringBoot)
前言分布式锁,其实原理是就是多台机器,去争抢一个资源,谁争抢成功,那么谁就持有了这把锁,然后去执行后续的业务逻辑,执行完毕后,把锁释放掉。可以通过多种途径实现分布式锁,例如利用数据库(mysql等),插入一条记录(唯一索引),谁插入成功,谁就持有锁;还可通过zookeeper来实现分布式锁,谁创建节点成功,谁就持有锁。本文介绍通过redis来实现分布式锁。实现分布式锁的步骤第...原创 2019-11-27 20:59:18 · 259 阅读 · 0 评论 -
在Java程序中使用Redis
为了实际的工作和学习的需要,本教程会以 Spring 的视角为主向读者介绍在 Java 中如何使用 Redis,不过在基础章节会以 XML 方式的配置为主,而在实践章节则会以 Java 的配置为主介绍 Redis,你可以根据需要使用 XML 或者注解来实现你想要的功能。在 Java 中使用 Redis 工具,要先下载 jedis.Jar 包,把它加载到工程的路径中,所以首先打开网站http:/...原创 2019-11-27 20:45:39 · 525 阅读 · 0 评论 -
Redis的七个核心机制底层原理
一、S_DOWN和O_DOWN S_DOWN和O_DOWN两种宕机状态(1)、S_DOWN是主观宕机,就一个哨兵如果自己觉得一个master宕机了,那么就是主观宕机<br> sdown达成的条件很简单,如果一个哨兵ping一个master,超过了is-master-down-after-milliseconds指定的毫秒数之后,就主观认为master宕机<br>...原创 2019-11-17 22:47:39 · 310 阅读 · 0 评论