Redis
ch3rry
每天早上醒来,看见你和阳光都在,这就是我想要的未来。
展开
-
什么情况下异步操作使用消息队列而不是多线程
Redis提供了两种方式来作消息队列。一个是使用生产者消费模式模式,另一个就是发布订阅者模式。前者会让一个或者多个客户端监听消息队列,一旦消息到达,消费者马上消费,谁先抢到算谁的,如果队列里没有消息,则消费者继续监听;’后者也是一个或多个客户端订阅消息频道,只要发布者发布消息,所有订阅者都能收到消息,订阅者都是平等的。一、异步处理选择1.消息队列和多线程两者并不冲突,多线程可以作为队列的生产者和消费者。使用外部的消息队列时,第一是可以提高应用的稳定性,当程序fail后,写入外部消息队列的...原创 2020-06-07 16:11:11 · 3676 阅读 · 0 评论 -
【Redis缓存机制】6.Set集合类型操作使用
Set集合类型(1)介绍redis的set是string类型的无序集合set元素最大可以包含(2的32次方-1)个元素关于set集合类型除了基本的添加删除操作,其它有用的操作还包含集合的取并集(union),交集(intersection),差集(difference)。通过这些操作可以很容易的实现类似好友推荐的功能。注意:每个集合中的各个元素不能重复。(2)操作sadd key...转载 2019-07-10 20:08:14 · 244 阅读 · 0 评论 -
【Redis缓存机制】5.List链表类型介绍和操作
数据类型List链表(1)介绍list类型其实就是一个双向链表。通过push,pop操作从链表的头部或者尾部添加删除元素。这使得list既可以用作栈,也可以用作队列。该list链表类型应用场景:获得最新的10个登录用户信息:select * from user order by logintime desc limit 10;以上sql语句可以实现用户需求,但是数据多的时候,...转载 2019-07-10 20:03:33 · 121 阅读 · 0 评论 -
【Redis缓存机制】4.String字符串类型操作
String类型操作1.set key value 设置key对应的值为string类型的value2.mset key1 value1 … keyN valueN 一次设置多个key的值3.mget key1 key2 … keyN 一次获取多个key的值4.incr key 对key的值做加加操作,并返回新的值5.incrby key integer 同incr,加...转载 2019-07-10 19:24:36 · 169 阅读 · 0 评论 -
【Redis缓存机制】3.key的命令操作
我们之前使用Redis简单存储了三个参数:在语句set name jack中,其中name就是一个key。我们Java中的变量名是有一定规则的,比如组成内容可以是“数字”,“字母”以及“下划线”。同理,key也有自己的命名规则:在Redis中,除了"\n"和空格不能作为名字的组成内容外,其它内容都可以作为key的名字部分,名字长度不做要求。例如,我们将很多符号设置为key,然后...转载 2019-07-10 19:24:34 · 279 阅读 · 0 评论 -
【Redis缓存机制】2.Redis安装和简单使用
(1)安装RedisRedis目前只支持Linux系统,因为开发此软件的创始者认为,Redis是为后台数据服务的,所以认为该软件使用在纯净的服务环境下,而不是应用型操作系统下,而Linux作为服务器操作系统的一哥,自然俘虏了Redis开发者的芳心。(注:Redis官方不支持Windows。2011年微软向Redis提交了一个补丁,以使Redis可以在 Windows下编译运行,但被Salva...转载 2019-07-10 19:05:26 · 103 阅读 · 0 评论 -
【Redis缓存机制】1.Redis介绍和使用场景
(1)持久化数据库的缺点平常我们使用的关系型数据库有Mysql、Oracle以及SqlServer等,在开发的过程中,数据通常都是通过Web提供的数据库驱动来链接数据库进行增删改查。那么,我们日常使用的数据库的数据都储存在哪里呢?我们以Mysql为例。打开我们Mysql所在的文件夹目录下的data文件夹,如下所示:我们可以发现,里面都是我们创建的数据库,打开其中一个,可以看到我们创建的...原创 2019-07-10 19:00:12 · 169 阅读 · 0 评论 -
Redis 总结精讲
本文围绕以下几点进行阐述1、为什么使用redis2、使用redis有什么缺点3、单线程的redis为什么这么快4、redis的数据类型,以及每种数据类型的使用场景5、redis的过期策略以及内存淘汰机制6、redis和数据库双写一致性问题7、如何应对缓存穿透和缓存雪崩问题8、如何解决redis的并发竞争问题正文1、为什么使用redis分析:博主觉得在项目中使用redis...转载 2019-09-19 14:40:35 · 103 阅读 · 0 评论 -
redis 双写一致性
首先,缓存由于其高并发和高性能的特性,已经在项目中被广泛使用。在读取缓存方面,大家没啥疑问,都是按照下图的流程来进行业务操作。但是在更新缓存方面,对于更新完数据库,是更新缓存呢,还是删除缓存。又或者是先删除缓存,再更新数据库,其实大家存在很大的争议。目前没有一篇全面的博客,对这几种方案进行解析。于是博主战战兢兢,顶着被大家喷的风险,写了这篇文章。文章结构本文由以下三个部分组成...转载 2019-09-19 11:10:40 · 163 阅读 · 0 评论 -
为什么要用Redis?
最近阅读了《Redis开发与运维》,非常不错。这里对书中的知识整理一下,方便自己回顾一下Redis的整个体系,来对相关知识点查漏补缺。按照五点把书中的内容进行一下整理:为什么要选择Redis:介绍Redis的使用场景与使用Redis的原因; Redis常用命令总结:包括时间复杂度总结与具体数据类型在Redis内部使用的数据结构; Redis的高级功能:包括持久化、复制、哨兵、集群介...转载 2019-04-14 21:55:01 · 166 阅读 · 0 评论 -
Redis--持久化
Redis大家都在经常使用,其功能非常强大,利用其内存存储、存取快的特新能够帮助我们解决很多难题。在项目中,我们可利用Redis:1作为缓存;2作为消息队列;3生成业务唯一键;4分布式锁控制;5内存数据库……可以很好的解决一些高并发、高性能要求的业务场景。针对Redis的安装,五种数据结构(字符串string、哈希hash、列表list、集合set、有序集合zse...转载 2019-05-08 22:45:21 · 124 阅读 · 0 评论 -
redis源码笔记--内存管理
redis的内存分配主要就是作者将不同平台下的内存分配malloc()进行了一个统一,和统计内存占有量,是对malloc和free进行了一层简单的封装。具体的实现在zmalloc.h和zmalloc.c中。本文将对redis的内存管理相关几个比较重要的函数做逐一的介绍。/***************************** Part1:zmalloc.h ************...原创 2019-06-22 20:58:53 · 246 阅读 · 0 评论 -
redis 基础数据结构实现
参考文献redis数据结构分析 Skip List(跳跃表)原理详解 redis 源码分析之内存布局 Redis 基础数据结构与对象 Redis设计与实现-第7章-压缩列表在redis中构建了自己的底层数据结构:动态字符,双端链表,字典,压缩列表,整数集合和跳跃表等。通过这些数据结构,redis构造出字符串对象,列表对象,哈希对象,集合对象和有序集合对象这5种我们常用的数据结构。接下...原创 2019-06-22 21:17:38 · 513 阅读 · 0 评论 -
redis--初始化服务器
服务器初始化从启动Redis服务器,到服务器可以接受外来客户端的网络连接这段时间,Redis需要执行一系列初始化操作。整个初始化过程可以分为以下六个步骤:初始化服务器全局状态。 载入配置文件。 创建守护进程。 初始化服务器功能模块。 载入数据。 开始事件循环。以下各个小节将介绍Redis服务器初始化的各个步骤。服务器初始化状态全局redis.h/redisServe...原创 2019-06-23 20:22:58 · 399 阅读 · 0 评论 -
redis--初始化客户端
初始化客户端客户端使用了linenoise库, linenoise比较简单, 不需要任何配置,支持单行、多行模式,history命令查询,自动补全等。 help.h是当前所有的命令文件汇总, 用于tab自动补全功能的源数据。客户端初始化主要通过一下几步:1.初始化客户端默认状态2.查看是否终端输出3.初始化help4.根据参数初始化变量5.判断以那种方式工作初始化客...原创 2019-06-23 20:25:10 · 376 阅读 · 0 评论 -
Redis内存模型
前言Redis是目前最火爆的内存数据库之一,通过在内存中读写数据,大大提高了读写速度,可以说Redis是实现网站高并发不可或缺的一部分。我们使用Redis时,会接触Redis的5种对象类型(字符串、哈希、列表、集合、有序集合),丰富的类型是Redis相对于Memcached等的一大优势。在了解Redis的5种对象类型的用法和特点的基础上,进一步了解Redis的内存模型,对Redis的使用有...转载 2019-06-29 01:19:33 · 120 阅读 · 0 评论 -
Redis:持久化
本文将先说明上述几种技术分别解决了Redis高可用的什么问题;然后详细介绍Redis的持久化技术,主要是RDB和AOF两种持久化方案;在介绍RDB和AOF方案时,不仅介绍其作用及操作方法,同时介绍持久化实现的一些原理细节及需要注意的问题。最后,介绍在实际使用中,持久化方案的选择,以及经常遇到的问题等。目录一、Redis高可用概述二、Redis持久化概述三、RDB持久化1....转载 2019-06-29 01:22:14 · 150 阅读 · 0 评论 -
Redis:哨兵
前言在Redis:主从复制中曾提到,Redis主从复制的作用有数据热备、负载均衡、故障恢复等;但主从复制存在的一个问题是故障恢复无法自动化。本文将要介绍的哨兵,它基于Redis主从复制,主要作用便是解决主节点故障恢复的自动化问题,进一步提高系统的高可用性。文章主要内容如下:首先介绍哨兵的作用和架构;然后讲述哨兵系统的部署方法,以及通过客户端访问哨兵系统的方法;然后简要说明哨兵实现的基本...转载 2019-06-29 17:52:54 · 262 阅读 · 0 评论 -
redis源码目录
原创 2019-07-10 17:47:13 · 533 阅读 · 0 评论 -
关于源码阅读
源码阅读方法:自底向上:从耦合关系最小的模块开始读,然后逐渐过度到关系紧密的模块。就好像写程序的测试一样,先从单元测试开始,然后才到功能测试。我在刚开始读 Redis 源码的时候,使用的就是这种方法:先从单独的数据结构模块开始,然后再过渡到高层的功能模块。 从功能入手:通过文件名(模块名)和函数名,快速定位到一个功能的具体实现,然后追踪整个实现的运作流程,从而了解该功能的实现方式。我在读阻塞...原创 2019-06-22 16:09:29 · 176 阅读 · 0 评论