『实战-Redis』
redis的实战全过程
Mr. Sun_
欢迎小伙伴来到博客,共同学习,一同进步。
展开
-
二十七、Redis缓存穿透和雪崩(完)
Redis缓存穿透和雪崩一.服务的高可用问题在这里我们不会详细的区分析解决方案的底层!Redis缓存的使用,极大的提升了应用程序的性能和效率,特别是数据查询方面。但同时,它也带来了一些问题。其中,最要害的问题,就是数据的一致性问题,从严格意义上讲,这个问题无解。如果对数据的一致性要求很高,那么就不能使用缓存。另外的一些典型问题就是,缓存穿透、缓存雪崩和缓存击穿。目前,业界也都有比较流行的解决方案。缓存穿透(数据查不到)概念缓存穿透的概念很简单,用户想要查询一个数据,发现redis内存数据库没有,原创 2020-11-03 13:15:37 · 172 阅读 · 0 评论 -
二十六、redis哨兵模式
一.概述哨兵模式本质就是自动选举老大的模式主从切换技术的方法是:当主服务器宕机后,需要手动把一台从服务器切换为主服务器,这就需要人工干预,费时费力,还会造成一段时间内服务不可用。这不是一种推荐的方式,更多时候,我们优先考虑哨兵模式。Redis从2.8开始正式提供了Sentinel(哨兵) 架构来解决这个问题。从库当选老大的自动版,能够后台监控主机是否故障,如果故障了根据投票数自动将从库转换为主库。哨兵模式是一种特殊的模式,首先Redis提供了哨兵的命令,哨兵是一个独立的进程,作为进程,它会独立运原创 2020-11-03 12:59:47 · 263 阅读 · 2 评论 -
二十五、redis主从复制
一.概念主从复制,是指将一台Redis服务器的数据,复制到其他的Redis服务器。前者称为主节点(master/leader),后者称为从节点(slave/follower);数据的复制是单向的,只能由主节点到从节点。Master以写为主,Slave 以读为主;默认情况下,每台Redis服务器都是主节点;一个主节点可以有多个从节点(或没有从节点),但一个从节点只能有一个主节点。主从复制的作用主要包括:1、数据冗余:主从复制实现了数据的热备份,是持久化之外的一种数据冗余方式。2、故障恢复:原创 2020-11-03 11:36:32 · 245 阅读 · 0 评论 -
二十四、redis发布订阅
一.订阅与发布Redis 通过 PUBLISH 、 SUBSCRIBE 等命令实现了订阅与发布模式, 这个功能提供两种信息机制, 分别是订阅/发布到频道和订阅/发布到模式, 下文先讨论订阅/发布到频道的实现, 再讨论订阅/发布到模式的实现。下面是应用场景,先直观的了解下。1、实时消息系统!2、实时聊天!(频道当做聊天室,将信息回显给所有人即可!)3、订阅,关注系统都!二.频道的订阅与信息发送Redis 的 SUBSCRIBE命令可以让客户端订阅任意数量的频道, 每当有新信息发送到被订..原创 2020-11-02 14:25:02 · 155 阅读 · 0 评论 -
二十二、redis持久化之AOF
AOF(Append Only File)redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失。幸好Redis还为我们提供了持久化的机制,分别是RDB(Redis DataBase)和AOF(Append Only File)。一、持久化流程既然redis的数据可以保存在磁盘上,那么这个流程是什么样的呢?要有下面五个过程:(1)客户端向服务端发送写操作(数据在客户端的内存中)。(2)数据库服务端接收到写请求的数据(数据在服务端的内存中)。原创 2020-10-28 16:50:11 · 256 阅读 · 0 评论 -
二十一、redis持久化之RDB
RDB(Redis DataBase)redis是一个内存数据库,数据保存在内存中,但是我们都知道内存的数据变化是很快的,也容易发生丢失。幸好Redis还为我们提供了持久化的机制,分别是RDB(Redis DataBase)和AOF(Append Only File)。一、持久化流程既然redis的数据可以保存在磁盘上,那么这个流程是什么样的呢?要有下面五个过程:(1)客户端向服务端发送写操作(数据在客户端的内存中)。(2)数据库服务端接收到写请求的数据(数据在服务端的内存中)。原创 2020-10-28 15:03:16 · 445 阅读 · 0 评论 -
二十、Threaded I/O模型
Threaded I/O模型I/O问题与Threaded I/O的引入如果要说Redis会有什么性能问题,那么从I/O角度,由于它没有像其他Database一样使用磁盘,所以不存在磁盘I/O的问题。在数据进入缓冲区前及从缓冲区写至Socket时,存在一定的网络I/O,特别是写I/O对性能影响比较大。以往我们会考虑做管道化来减小网络I/O的开销,或者将Redis部署成Redis集群来提升性能。在Redis 6.0之后,由于Threaded I/O的引入,Redis开始支持对网络读写的线程化,让更多转载 2020-10-26 17:10:28 · 243 阅读 · 0 评论 -
十九、Redis 6.0 的客户端缓存
一、为什么需要客户端缓存?我们都知道,使用 Redis 进行数据的缓存的主要目的是减少对 MySQL 等数据库的访问,提供更快的访问速度,毕竟 《Redis in Action》 中提到的,“Redis 的性能大致是普通关系型数据库的 10 ~ 100 倍“。所以,如下图所示,Redis 用来存储热点数据,Redis 未命中,再去访问数据库,这样可以应付大多数情况下的性能要求。但是,Redis 也有其性能上限,并且访问 Redis 必然有一定的网络 I/O 以及序列化反序列化损耗。所以,往往转载 2020-10-26 17:08:09 · 357 阅读 · 0 评论 -
十八、redis.conf配置详解
启动的时候,就通过配置文件来启动!工作中,一些小小的配置,可以突出专业性![root@localhost rconfig]# more redis.conf单位# Redis configuration file example.## Note that in order to read the configuration file, Redis must be# started with the file path as first argument:## ./redis-serv原创 2020-10-26 16:58:24 · 1921 阅读 · 0 评论 -
十七、Redis事务
一.Redis事务的概念: Redis 事务的本质是一组命令的集合。事务支持一次执行多个命令,一个事务中所有命令都会被序列化。在事务执行过程,会按照顺序串行化执行队列中的命令,其他客户端提交的命令请求不会插入到事务执行命令序列中。 总结说:redis事务就是一次性、顺序性、排他性的执行一个队列中的一系列命令。 二.Redis事务没有隔离级别的概念: 所有的命令在事务中,并没有直接被执行!批量操作在发送 EXEC 命令前被放入队列缓存,只有发起执行命令的时候才会执行!三.Redis原创 2020-10-26 11:33:49 · 203 阅读 · 0 评论 -
Why Accuracy Is So Important for Distinct Counting
In our last article, we examined the critical role Distinct Counting (also known as Count Distinct) plays when it comes to working with massive datasets. While Distinct Counting is invaluable for navigating today’s data-driven business landscape, it’s not转载 2020-10-21 16:02:47 · 267 阅读 · 0 评论 -
十六、Redis三种特殊类型之三Bitmap
一、BitMap是什么通过一个bit位来表示某个元素对应的值或者状态,其中的key就是对应元素本身,value对应0或1,我们知道8个bit可以组成一个Byte,所以bitmap本身会极大的节省储存空间。二、Redis中的BitMapRedis从2.2.0版本开始新增了setbit、getbit、bitcount等几个bitmap相关命令。虽然是新命令,但是并没有新增新的数据类型,因为setbit等命令只不过是在set上的扩展。Redis的bitmap让我们可以实时的进行统计,并且极其节省空原创 2020-10-21 15:46:10 · 258 阅读 · 0 评论 -
大数据分析常用去重算法分析『HyperLogLog 篇』
在上篇推送中,Kyligence 大数据工程师陶加涛为大家介绍了利用 Roaring Bitmap 来进行精确去重。虽然这种算法能大大地减少存储开销,但是随着数据量的增大,它依然面临着存储上的压力。在本篇推送中将要介绍的 HyperLogLog(下称 HLL)是一种非精确的去重算法,它的特点是具有非常优异的空间复杂度(几乎可以达到常数级别)。HLL 算法需要完整遍历所有元素一次,而非多次或采样;该算法只能计算集合中有多少个不重复的元素,不能给出每个元素的出现次数或是判断一个元素是否之前出现过;多个使转载 2020-10-21 12:06:45 · 1107 阅读 · 0 评论 -
十五、Redis三种特殊类型之二HyperLoglog
一.概念1、redis在2.8.9版本添加了HyperLogLog结构;HyperLogLog是一种算法,并非redis独有.2、redis HyperLogLog是用来做基数统计的算法,HyperLogLog的优点是:在输入元素的数量或者体积非常非常大时,计算基数所需的空间总是固定的、并且使很小的。3、在redis里面,每个HyperLogLog键只需要花费12kb内存,就可以计算接近2^64个不同元素的基数。这和计算基数时,元素越多耗费内存就越多的集合形成鲜明对比。4、目的是做基数统计,故不原创 2020-10-21 11:58:42 · 268 阅读 · 0 评论 -
十四、Redis三种特殊类型之一Geospatial
一.概述redis除了提供了五大基本数据类型String、List、Set、Hash、Zset,还有3个比较特殊的数据类型,Geospatial、Hyperloglog、Bitmap,这三个数据类型有一些比较有趣的应用场景,下面说说Geospatial,主要可以应用于跟地图相关的应用。朋友的定位,附近的人,打车距离计算?Redis 的 Geo 在Redis3.2 版本就推出了! 这个功能可以推算地理位置的信息,两地之间的距离,方圆几里的人!纬度范围:-85.05112878度到85.0511原创 2020-10-21 11:07:06 · 277 阅读 · 0 评论 -
十三、Redis五大数据类型之五Zset
Zset类型(有序集合)在之前的四个类型中都不支持排序的,下来咱们看的Zset类型是既支持存储大数据,也支持排序功能1.Zset类型基本操作添加数据:zadd key score member获取数据:zrange key start stop | zrevrange key start stop删除数据:zrem key member按条件获取数据:zrangebyscore key min max limit | zrevrangescore key max min条件删除数原创 2020-10-20 11:43:00 · 271 阅读 · 2 评论 -
十二、Redis五大数据类型之四Hash
hash类型1.hash类型数据的基本操作添加 / 修改数据:hset key field value获取数据:hget key field|hgetall key删除数据:hdel key field field1添加 / 修改多个数据:hmset key field value field1 value1获取多个数据:hmget key field field1获取表中字段数量:hlen key获取表中是否存在某个字段:hexists key field2. ha..原创 2020-10-20 11:16:07 · 201 阅读 · 0 评论 -
十一、Redis五大数据类型之三Set
set类型新的存储需求,存储大量的数据,在查询方面提供更高的效率需要的存储结构。能够保存大量的数据,高效的内部存储机制,便于查询set类型。与hash存储结构完全相同,仅存储键,不存储值(nil),并且值是不允许重复的。1.set类型数据的基本操作添加 / 修改数据:sadd key member member1获取数据:smembers key删除数据:srem key member1获取集合数据总量:scard key判断集合中是否包含指定数据:sismember原创 2020-10-19 12:29:43 · 301 阅读 · 0 评论 -
十、Redis五大数据类型之二List
list类型数据存储需求:存储多个数据,并对数据进行存储空间的顺序进行区分需要的数据结构。一个存储空间保存多个数据,且通过数据可以体现进入顺序list类型。保存多个数据,底层使用双向链表存储结构实现1.list类型数据的基本操作添加 / 修改数据:lpush key value value1|rpush key value value1获取数据:lrange key start end|lindex key index|llen key删除数据:rpop key|lpop...原创 2020-10-19 10:58:27 · 138 阅读 · 0 评论 -
九、Redis五大数据类型之一String
string类型1.string类型数据的基本操作添加 / 修改数据:set key value获取数据:get key删除数据:del key添加 / 修改多个数据:mset key value key1 value1获取多个数据:mget key key1追加信息到原始数据后边(不存在时则添加):append key value2.string类型 增减操作设置数据增加指定范围的值:incr key 默认每次加1 | incrby key value 每次新增valu原创 2020-10-16 16:58:24 · 239 阅读 · 0 评论 -
八、redis性能测试
一.介绍redis-benchmark是Redis自带的基准性能测试工具, 它提供了很多选项帮助开发和运维人员测试Redis的相关性能。二.例子50个并发同时请求Redis,一共一万次。redis-benchmark -c 50 -n 10000三.参数-q 仅仅显示redis-benchmark的requests per second信息-r 不仅仅写入三个键值,-随机写入更多数值,-r不代表随机数的个数,而是对后几位进行改变。例如:-r 1000 就插入set o原创 2020-10-16 11:44:25 · 309 阅读 · 0 评论 -
七、redis的安装(linux)
1、系统环境[root@localhost ~]# cat /etc/redhat-releaseCentOS Linux release 7.8.2003 (Core)2、Linux安装yum源这里安装网络源,首先得确认你自己的server能够上网。进入阿里镜像仓库网站https://developer.aliyun.com/mirror/参照centos镜像步骤操作。3、下载redis软件可以在http://redis.cn/寻找 , 目前较新得稳定版是6.0.6.原创 2020-10-14 15:46:05 · 262 阅读 · 0 评论 -
六、Redis概述
redis是一个key-value存储系统。和Memcached类似,它支持存储的value类型相对更多,包括string(字符串)、list(链表)、set(集合)、zset(sorted set --有序集合)和hash(哈希类型)。这些数据类型都支持push/pop、add/remove及取交集并集和差集及更丰富的操作,而且这些操作都是原子性的。在此基础上,redis支持各种不同方式的排序。与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数转载 2020-10-14 11:14:52 · 201 阅读 · 0 评论 -
五、redis和关系型数据库如何配合使用
1.先写缓存,在写数据库(这个需要考虑一下业务的合理性 )讲解:先写缓存,再写数据库。应用程序前端直接读写 Redis,后端匀速异步地把数据持久化到 MySQL 或 TiDB。这种做法一般被称之为“穿透式缓存”,这样子可以减少很多大流量的请求网站。2,先写数据库,再写缓存解释:因为有一些业务可能会涉及到关联数据库的一些操作,业务性关联比较强,可以先通过操作数据的方式,在通过任务配置来把需要的数据更新到redis服务器上,这样子能减少很多的读的一些流量,自然就减少了数据库的...转载 2020-10-13 15:48:34 · 904 阅读 · 0 评论 -
四、redis比mysql快的原因
redis比mysql快的原因Mysql数据存储是存储在表中,查找数据时要先对表进行全局扫描或者根据索引查找,这涉及到磁盘的查找,磁盘查找如果是按条点查找可能会快点,但是顺序查找就比较慢;而Redis不用这么麻烦,本身就是存储在内存中,会根据数据在内存的位置直接取出。 Redis是基于内存存储的,mysql是基于磁盘存储的时间复杂度是指执行算法所需要的计算工作量。Redis存储的是k-v格式的数据。时间复杂度是O(1),常数阶,而MySQL引擎的底层实现是B+Tree,时间...原创 2020-10-13 15:45:33 · 759 阅读 · 0 评论 -
三、NoSQL数据库的四大分类的分析
NoSQL数据库的四大分类的分析 分类 Examples举例 典型应用场景 数据模型 优点 缺点 键值(key-value) Tokyo Cabinet/Tyrant, Redis, Voldemort, Oracle BDB 内容缓存,主要用于处理大量数据的高访问负载,也用于一些日志系统等等。 Key.转载 2020-10-13 11:24:10 · 635 阅读 · 0 评论 -
二、传统数据库遇到的挑战
工作中遇到的挑战:1,高并发读写Web2.0网站,数据库并发负载非常高,往往达到每秒上万次的读写请求2,高容量存储和高效存储Web2.0网站通常需要在后台数据库中存储海量数据,如何存储海量数据并进行高效的查询往往是一个挑战3,高扩展性和高可用性随着系统的用户量和访问量与日俱增,需要数据库能够很方便的进行扩展、维护传统关系型数据库的瓶颈:1,无法应对每秒上万次的读写请求,硬盘IO此时也将变为性能瓶颈2,表中存储记录数量有限,横向可扩展能力有限,纵向数据可承受能力也是有.原创 2020-10-12 16:57:29 · 2192 阅读 · 2 评论 -
一、为什么要使用NoSQL数据库
(1)NoSQL概念 随着web2.0的快速发展,非关系型、分布式数据存储得到了快速的发展,它们不保证关系数据的ACID特性(原子性、一致性、隔离性、持久性,一个支持事务的数据库,必需要具有这四种特性,否则在事务过程当中无法保证数据的正确性)。NoSQL概念在2009年被提了出来。NoSQL最常见的解释是“non-relational”,“Not Only SQL”也被很多人接受(“NoSQL”一词最早于1998年被用于一个轻量级的关系数据库的名字)。 NoSQL被我们用得最多的当数key-va转载 2020-10-12 16:53:40 · 1382 阅读 · 0 评论