redis
文章平均质量分 96
那人好像一条猿
好好学习,天天向上
展开
-
Redis详解(十八)------ Redis布隆过滤器
1、布隆过滤器使用场景 比如有如下几个需求: ①、原本有10亿个号码,现在又来了10万个号码,要快速准确判断这10万个号码是否在10亿个号码库中? 解决办法一:将10亿个号码存入数据库中,进行数据库查询,准确性有了,但是速度会比较慢。 解决办法二:将10亿号码放入内存中,比如Redis缓存中,这里我们算一下占用内存大小:10亿*8字节=8GB,通过内存查询,准确性和速度都有了,但是大约8gb的内存空间,挺浪费内存空间的。 ②、接触过爬虫的,应该有这么一个需求,需要爬虫的网站千千转载 2020-08-01 13:18:00 · 405 阅读 · 0 评论 -
Redis详解(十七)------ 缓存穿透、缓存击穿、缓存雪崩
1、缓存穿透一、概念 缓存穿透:缓存和数据库中都没有的数据,可用户还是源源不断的发起请求,导致每次请求都会到数据库,从而压垮数据库。 如下图红色的流程: 比如客户查询一个根本不存在的东西,首先从Redis中查不到,然后会去数据库中查询,数据库中也查询不到,那么就不会将数据放入到缓存中,后面如果还有类似源源不断的请求,最后都会压到数据库来处理,从而给数据库造成巨大的压力。二、解决办法 ①、业务层校验 用户发过来的请求,根据请求参数进行校验,对于明显..转载 2020-08-01 13:17:45 · 187 阅读 · 0 评论 -
Redis详解(十六)------ 过期删除策略和内存淘汰策略
在介绍这篇文章之前,我们先来看如下几个问题:①、如何设置Redis键的过期时间?②、设置完一个键的过期时间后,到了这个时间,这个键还能获取到么?假如获取不到那这个键还占据着内存吗?③、如何设置Redis的内存大小?当内存满了之后,Redis有哪些内存淘汰策略?我们又该如何选择?如果上面的几个问题你都懂,那么下面的内容你就不用看了;如果你不是很懂,那就带着这些问题往下看。1、设置Redis键过期时间 Redis提供了四个命令来设置过期时间(生存时间)。 ①、EXPIRE <转载 2020-08-01 13:17:32 · 216 阅读 · 0 评论 -
Redis详解(十五)------ 集群模式详解
1、为什么需要集群? ①、并发量 通常来说,单台Redis能够执行10万/秒的命令,这个并发基本上能够满足我们所有需求了,但有时候比如做离线计算,为了更快的得出结果,有时候我们希望超过这个并发,那这个时候单机就不满足我们需求了,就需要集群了. ②、数据量 通常来说,单台服务器的内存大概在16G-256G之间,前面我们说Redis数据量都是存在内存中的,那如果实际业务要保存在Redis的数据量超过了单台机器的内存,这个时候最简单的方法是增加服务器内存,但是单台服务器内存不可能无限制..转载 2020-08-01 13:17:15 · 405 阅读 · 0 评论 -
Redis详解(十四)------ 哨兵(Sentinel)模式详解
1、架构图 2、服务器列表 3、搭建主从模式 ①、主要配置项 主服务器(上图的Node1)配置文件 redis.config 主要配置项: 1 2 3 4 5 6 7 8 9 10 #配置端口 port6379 #以守护进程模式启动 daemonize yes #pid的存放文件 pidfile /var/run/red...转载 2020-08-01 13:16:52 · 617 阅读 · 0 评论 -
Redis详解(十三)------ 主从复制
前面介绍Redis,我们都在一台服务器上进行操作的,也就是说读和写以及备份操作都是在一台Redis服务器上进行的,那么随着项目访问量的增加,对Redis服务器的操作也越加频繁,虽然Redis读写速度都很快,但是一定程度上也会造成一定的延时,那么为了解决访问量大的问题,通常会采取的一种方式是主从架构Master/Slave,Master 以写为主,Slave 以读为主,Master 主节点更新后根据配置,自动同步到从机Slave 节点。 接下来我们就来介绍如何进行主从架构的搭建。 ps:这..转载 2020-08-01 13:16:21 · 130 阅读 · 0 评论 -
Redis详解(十二)------ AOF 持久化
上一篇文章我们介绍了Redis的RDB持久化,RDB 持久化存在一个缺点是一定时间内做一次备份,如果redis意外down掉的话,就会丢失最后一次快照后的所有修改(数据有丢失)。对于数据完整性要求很严格的需求,怎么解决呢? 本篇博客接着来介绍Redis的另一种持久化方式——AOF。1、AOF简介 Redis的持久化方式之一RDB是通过保存数据库中的键值对来记录数据库的状态。而另一种持久化方式 AOF 则是通过保存Redis服务器所执行的写命令来记录数据库状态。 比如对于如...转载 2020-08-01 13:16:04 · 186 阅读 · 0 评论 -
Redis详解(十一)------ RDB 持久化
前面我们说过,Redis 相对于Memcache 等其他的缓存产品,有一个比较明显的优势就是 Redis 不仅仅支持简单的key-value类型的数据,同时还提供list,set,zset,hash等数据结构的存储。这几种丰富的数据类型我们花了两篇文章进行了详细的介绍,接下来我们要介绍 Redis 的另外一大优势——持久化。由于 Redis 是一个内存数据库,所谓内存数据库,就是将数据库中的内容保存在内存中,这与传统的MySQL,Oracle等关系型数据库直接将内容保存到硬盘中相比,内存数据库的读写效率比.转载 2020-08-01 13:15:43 · 175 阅读 · 0 评论 -
Redis详解(十)------ Redis的五大数据类型实现原理
在Redis中,并没有直接使用这些数据结构来实现键值对数据库,而是基于这些数据结构创建了一个对象系统,这些对象系统也就是前面说的五大数据类型,每一种数据类型都至少用到了一种数据结构。通过这五种不同类型的对象,Redis可以在执行命令之前,根据对象的类型判断一个对象是否可以执行给定的命令,而且可以针对不同的场景,为对象设置多种不同的数据结构,从而优化对象在不同场景下的使用效率。1、对象的类型与编码 Redis使用前面说的五大数据类型来表示键和值,每次在Redis数据库中创建一个键值对时,至少会创建两转载 2020-07-31 16:31:29 · 344 阅读 · 0 评论 -
Redis详解(八)------ Redis的配置文件介绍
在Redis的解压目录下有个很重要的配置文件redis.conf(/opt/redis-4.0.9目录下),关于Redis的很多功能的配置都在此文件中完成的,一般为了不破坏安装的文件,出厂默认配置最好不要去改,所以我们将此配置文件复制到 /etc/redis/目录下了。通过 vim /etc/redis/redis.conf 命令打开此文件。下面我们将详细介绍此配置文件。回到顶部1、开头说明 这里没什么好说的,需要注意的是后面需要使用内存大小时,可以指定单位,通常是以 k,gb,...转载 2020-07-31 16:30:50 · 335 阅读 · 0 评论 -
Redis详解(七)------Redis中的事务详解
序言本篇主要目的有二:1、展示所有数据类型中key的所有操作命令,以供大家学习,查阅,更深入的挖掘redis潜力。2、掌握redis中的事务,让你的数据完整性一致性拥有更优的保障。redis命令之key操作命令一览#查看命令keys,此命令支持glob-style的通配符格式,*表示可以匹配任意一个或多个字符,?表示任意一个字符,[abc]表示a、b、c中的任意一个字符#redis 127.0.0.1:6379>flushdb ----清除当前数据库。redis 12..转载 2020-07-31 16:30:34 · 287 阅读 · 0 评论 -
Redis详解(二)------ Redis数据结构之String
前言Redis主要支持的数据类型有5种:String ,Hash ,List ,Set ,和Sorted Set。下面我针对Redis支持的这几种数据类型做详细操作展示,供大家理解记忆。Redis数据类型Stringstring类型在redis中是最常见的类型,value存储最大数据量为512M,可以存放json数据,图像数据等等。下面跟着敲Redis命令操作String类型数据的代码吧。redis数据写命令Set,相当于数据插入redis 127.0.0.1:6379>.转载 2020-07-31 16:16:49 · 149 阅读 · 0 评论 -
Redis详解(六)------Redis数据结构之Zset
序言Zset跟Set之间可以有并集运算,因为他们存储的数据字符串集合,不能有一样的成员出现在一个zset中,但是为什么有了set还要有zset呢?zset叫做有序集合,而set是无序的,zset怎么做到有序的呢?就是zset的每一个成员都有一个分数与之对应,并且分数是可以重复的。有序集合的增删改由于有啦排序,执行效率就是非常快速的,即便是访问集合中间的数据也是非常高效的。下面我来展示下操作zset的redis命令操作单个zset的redis命令1、添加,如果值存在添加,将会重新排序。zadd转载 2020-07-31 16:30:17 · 212 阅读 · 0 评论 -
Redis详解(五)------Redis数据结构之Hash
序言Hash数据结构累似c#中的dictionary,大家对数组应该比较了解,数组是通过索引快速定位到指定元素的,无论是访问数组的第一个元素还是最后一个元素,所耗费的时间都是一样的,但是数组中的索引却没有实际意义,他只是一个位置而已。而我们在查找某个元素时,一般都会使用有意义的字段来做索引,这就产生啦dictionary。其实dictionary的实现,就是让key跟下标索引有一定的关系,所实现的,让他的查找算法复杂度变为常数O(1)。redis中hash对单个key/value操作的命令演示r转载 2020-07-31 16:31:01 · 399 阅读 · 0 评论 -
Redis详解(三)------Redis数据结构之List
首先回答序言中的4大疑问1、redis中的list的基本属性?List数据结构是链表结构,这意味这无论数据量多大,头尾操作数据还是很快的,list的容量是2的32次方减1个元素,即4294967295个元素数量。2、为什么使用redis中的list数据类型?依靠redis内存中操作数据的优势,又提供一些列实用独特的Api操控数据,用着简便,速度又快,又能实现特有的数据特征排序读写,做时间轴数据,评论列表,消息传递等等,又提供简便的分页,读写操作。你用不用。3、为什么使用消息队列?举.转载 2020-07-31 15:50:37 · 422 阅读 · 0 评论 -
Redis详解(四)------Redis数据结构之Set
redis中set列表的新增命令Sadd,key值相同下的value值不能重复,返回插入的数据个数,key后面可跟多个value值127.0.0.1:6379>sadd mySet 1 ---添加key为mySet的set数据值为1,127.0.0.1:6379>sadd mySet 2 4 5 ---添加key为mySet的set数据值为2,redis中查看set数据集合的命令:smembers,可以获取全部的元素,当set成员比较多时考虑其性能啊127.0.0.1:63..转载 2020-07-31 15:46:25 · 458 阅读 · 0 评论