聚合国内IT技术精华文章,分享IT技术精华,帮助IT从业人士成长

  • 574074 views阅读

    基于 Redis 实现分布式应用限流

    限流的目的是通过对并发访问/请求进行限速或者一个时间窗口内的的请求进行限速来保护系统,一旦达到限制速率则可以拒绝服务。 前几天在DD的公众号,看了一篇关于使用 瓜娃 实现单应用限流的方案,参考《redis in action》 实现了一个jedis版本的,都属于业务层次限制。 实际场景中常用的限流策略: Nginx接入层限流 按照一定的规则如帐号、IP、系统调用逻辑等在Nginx层面做限...

    分类:技术文章 时间:2017-09-08 06:05 我要评论(0个)

  • 532357 views阅读

    使用 Redis 解决“树”形数据的复杂查询

    最近因业务需要,研究了一下树数据结果的存储及查询解决方案。 最初的想法是使用neo4j,可是在网上看了一下开源的不支持集群,感觉用的人不多。 网上也查了一些 树形结构数据存储方案 但每种实现方案都有它的一定局限性。 想了一短时间后,想出了下面的方案: 一、 因为复杂的查询都由Redis来处理,所以数据库表的设计就变得非常简单:tree 表 | 字段名称 | 数据类型 | 备注说明 | | ...

    分类:技术文章 时间:2017-09-05 13:10 我要评论(0个)

  • 215883 views阅读

    Redis 核心概念

    概述 Redis 与其他 key – value 缓存产品有以下三个特点: Redis支持数据的持久化,可以将内存中的数据保持在磁盘中,重启的时候可以再次加载进行使用。 Redis不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。 Redis支持数据的备份,即master-slave模式的数据备份。 概念 说...

    分类:技术文章 时间:2017-07-27 11:35 我要评论(0个)

  • 534163 views阅读

    一步步实现 Redis 搜索引擎

    场景 大家如果是做后端开发的,想必都实现过列表查询的接口,当然有的查询条件很简单,一条 SQL 就搞定了,但有的查询条件极其复杂,再加上库表中设计的各种不合理,导致查询接口特别难写,然后加班什么的就不用说了(不知各位有没有这种感受呢~)。 下面以一个例子开始,这是某购物网站的搜索条件,如果让你实现这样的一个搜索接口,你会如何实现?(当然你说借助搜索引擎,像 Elasticsearch ...

    分类:技术文章 时间:2017-06-19 20:10 我要评论(0个)

  • 478715 views阅读

    Redis 源码学习之事件驱动

    Redis基于多路复用技术实现了一套简单的事件驱动库,代码在ae.h、ae.c以及ae_epoll.c、ae_evport.c和ae_kqueue.c、ae_select.c这几个文件中。其中ae表示的是antirez eventloop的意思。 Redis里面包含两种事件类型:FileEvent和TimeEvent。 Redis采用IO多路复用技术,所有的事件都是在一个线程中进行处理。R...

    分类:技术文章 时间:2017-06-11 23:10 我要评论(0个)

  • 749743 views阅读

    Redis 源码学习之 Redis 事务

    Redis作为一个内存型数据库,同样支持传统数据库的事务特性。这篇文章会从源代码角度来分析Redis中事务的实现原理。 What Redis事务提供了一种将多个命令请求打包,然后一次性、按照顺序地执行多个命令的机制,并且在事务执行的期间,服务器不会中断事务而去执行其他不在事务中的命令请求,它会把事务中所有的命令都执行完毕才会去执行其他的命令。 How Redis中提供了multi、disc...

    分类:技术文章 时间:2017-06-06 17:10 我要评论(0个)

  • 622396 views阅读

    深入学习Redis:Redis API 的原子性分析

    在学习Redis的常用操作时,经常看到介绍说,Redis的set、get以及hset等等命令的执行都是原子性的,但是令自己百思不得其解的是,为什么这些操作是原子性的? 原子性 原子性是数据库的事务中的特性。在数据库事务的情景下,原子性指的是:一个事务(transaction)中的所有操作,要么全部完成,要么全部不完成,不会结束在中间某个环节。【维基百科】 对于Redis而言,命令的原子性指...

    分类:技术文章 时间:2017-04-05 21:30 我要评论(0个)

  • 317652 views阅读

    Memcached 与 Redis 实现的对比

    Memcached 与 Redis ,作为近些年最常用的缓存服务器,相信大家对它们再熟悉不过了。前两年还在学校时,我曾经读过它们的主要源码,如今写篇笔记从个人角度简单对比一下它们的实现方式,权当做复习,有理解错误之处,欢迎指正。 文中使用的架构类的图片大多来自于网络,有部分图与最新实现有出入,文中已经指出。 一. 综述 读一个软件的源码,首先要弄懂软件是用作干什么的,那memcached...

    分类:技术文章 时间:2016-11-24 10:10 我要评论(0个)

  • 816311 views阅读

    Redis 主从配置心得及其高可用方案

    redis主从复制过程: 当配置好slave后,slave与master建立连接,然后发送sync命令。无论是第一次连接还是重新连接,master都会启动一个后台进程,将 数据库快照保存到文件中,同时master主进程会开始收集新的写命令并缓存。后台进程完成写文件后,master就发送文件给slave,slave将 文件保存到硬盘上,再加载到内存中,接着master就会把缓存的命令转发给s...

    分类:技术文章 时间:2016-11-22 12:35 我要评论(0个)

  • 644038 views阅读

    由浅入深介绍 Redis LRU 策略的具体实现

    在使用redis作为缓存的场景下,内存淘汰策略决定的redis的内存使用效率。在大部分场景下,我们会采用LRU(Least Recently Used)来作为redis的淘汰策略。本文将由浅入深的介绍redis lru策略的具体实现。 首先我们来科普下,什么是LRU ?(以下来自维基百科) Discards the least recently used items first. Thi...

    分类:技术文章 时间:2016-10-28 00:45 我要评论(0个)

  • 769297 views阅读

    Redis 内存使用优化与存储

    Redis 常用数据类型 Redis 最为常用的数据类型主要有以下五种: • String • Hash • List • Set • Sorted set 在具体描述这几种数据类型之前,我们先通过一张图了解下 Redis 内部内存管理中是如何描述这些不同数据类型的: 首先 Redis 内部使用一个 redisObject 对象来表示所有的 key 和 value,redisObject...

    分类:技术文章 时间:2016-10-09 18:15 我要评论(0个)

  • 527578 views阅读

    Redis 内存淘汰机制

    摘要 Redis是一款优秀的、开源的内存数据库,我在阅读Redis源码实现的过程中,时时刻刻能感受到Redis作者为更好地使用内存而费尽各种心思,例如最明显的是对于同一种数据结构在不同应用场景下提供了基于不同底层编码的实现(如压缩列表、跳跃表等)。今天我们暂时放下对Redis不同数据结构的探讨,来一起看看Redis提供的另一种机制——内存淘汰机制。 探初衷 Redis内存淘汰指的是用户存...

    分类:技术文章 时间:2016-09-03 22:30 我要评论(0个)