Redis
学习Nosql
Listen-Y
学无止境
展开
-
Redis~分布式事务和分布式事务锁
文章目录前话讲分布式事务锁前的几个概念Redis分布式事务锁原理核心思想问题一问题一问题三前话大家都知道redis是一个可以高速运行在缓存级别的数据库, 他的高速原因主要有几个原因绝大部分请求是纯粹的内存操作(非常快速),避免了与硬盘的接触丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除使用大量的hash思想的k v键值对, 获取效率为O(1)依靠非阻塞的IO多路复用原则,使redis形成单线程去执行命令的服务器, 避免了不必要的阻塞和上下文切换和竞争条件red原创 2020-12-24 14:06:28 · 4793 阅读 · 4 评论 -
Redis~集群(分布理论、一致性哈希分区、虚拟槽分区、节点握手、集群通信、集群伸缩、请求路由、故障转移、集群维护)
文章目录分布理论集群的分布式存储简单哈希一致性哈希分区虚拟槽分区**Redis集群功能限制节点握手分配槽集群通信Gossip消息集群伸缩集群扩容集群收缩请求路由MOVED重定向ASK重定向故障转移集群维护集群完整性带宽消耗集群倾斜集群读写分离分布理论集群是Redis在3.0版本正式推出的分布式解决方案,有效地解决了Redis分布式方面的需求。当遇到单机内存、并发、流量等瓶颈时,可以采用Cluster架构方案达到负载均衡的目的并且集群模式有效解决了哨兵模式中哨兵的消耗和哨兵工作的低效率性集群服务是R原创 2020-12-23 16:38:20 · 2159 阅读 · 2 评论 -
Redis~Sentinel哨兵(哨兵的高可用性、部署技巧、实现原理、领导选举、故障转移、优缺点)
文章目录主从复制的问题Redis Sentinel(哨兵)的高可用性工作原理Redis Sentinel的几个功能哨兵的安装与部署sentinel monitor (重点)哨兵实现原理三个定时监控任务主观下线和客观下线领导者哨兵节点选举故障转移优缺点主从复制的问题在上篇博客中讲到, 主从复制一个很重要的缺陷, 主节点宕机之后, 整个服务写数据服务就会宕机, 主从模式不会自动进行配置和更改主节点, 这就需要哨兵来帮助我们做这些事情Redis主从复制模式下,一旦主节点出现了故障不可达,需要人工干预进行故原创 2020-12-20 19:48:13 · 595 阅读 · 0 评论 -
Redis~主从复制的原理(复制的建立、复制的断开、切换复制点、全量复制、增量复制、故障处理、复制优化)
文章目录环境配置一定要清除几点复制的建立(slaveof )演示复制的断开 (slaveof no one)切换复制点复制拓扑复制原理全量复制部分复制增量复制心跳检测故障处理读写分离数据延迟读到过期数据从节点或者主节点故障复制优化规避全量复制规避复制风暴环境配置如果要在一台主机上实现主从复制, 需要更改conf文件以下几个内容启动端口pid名字log名字dump.rdb命令随后我们启动一个redis使用 info replication 查看其主从信息127.0.0.1:6原创 2020-12-20 18:43:45 · 1041 阅读 · 0 评论 -
Redis~实现信息发布与订阅(publish与subscribe)
文章目录发布与订阅发布消息(publish)订阅消息(subscribe)取消订阅(unsubscribe)发布-订阅的使用场景简述实现原理发布与订阅Redis 发布订阅(pub/sub)是一种消息通信模式∶发送者(pub)发送消息,订阅者(sub)接收消息。实时聊天系统,实时视频播放系统,实时提醒,实时广播!Redis客户端可以订阅任意数量的频道。核心便是发布者客户端向指定的频道(channel)发布消息,订阅该频道的每个客户端都可以收到该消息当有新消息通过PUBLISH命令发送给频原创 2020-12-20 16:55:11 · 999 阅读 · 0 评论 -
Redis~Geospatial(地理空间)、Hyperloglog(基数统计)、Bitmap(位图)
文章目录Geospatial(地理空间) 简称Geo实现原理用法Hyperloglog(基数统计)实现原理使用Bitmap(位图)使用Geospatial(地理空间) 简称Geo在Redis3.2中也引入了推算地理信息的数据结构,即Geospatial, 它可以帮助我们我们实现地理空间上的距离, 比如显示附近的人、外卖距离、剩余路径等功能实现原理把某个具体的位置信息(经度,纬度,名称)添加到指定的key中,数据将会用一个sorted set存储,以便稍后能使用 GEORADIUS和 GEORA原创 2020-12-19 15:22:51 · 374 阅读 · 1 评论 -
Redis~慢查询日志和监视器
文章目录慢查询日志慢查询日志选项慢查询日志的数量溢出慢查询日志的格式SLOWLOG命令慢查询日志命令的实现监视器介绍监视器实现原理慢查询日志Redis的慢查询日志功能用于记录执行时间超过给定时长的命令请求,用户可以通过这个功能产生的日志来监视和优化查询速度慢查询日志选项slowlog-log-slower-than选项:指定执行时间超过多少微秒(1秒等于1000 000微秒)的命令请求会被记录到日志上举个例子,如果这个选项的值为100,那么执行时间超过100微秒的命令就会被记录到慢 查询日原创 2020-12-19 14:20:43 · 344 阅读 · 1 评论 -
Redis~事务的实现和事务的ACID性质(原子性、一致性(Redis事务错误处理)、隔离性 、耐久性)
文章目录Redis事务的特性事务的实现事务开始(MULTI命令)命令入队事务队列取消事务(DISCARD)执行事务(EXEC)WATCH命令(乐观锁)使用WATCH命令监视数据库键监视机制的触发判断事务是否安全事务的ACID性质原子性一致性隔离性持久性Redis事务的特性Redis的事务与传统的SQL事务不同,它的本质是一组命令的集合, 一个事务中的所有命令都会被序列化,在事务执行过程的中,会按照顺序执行如果事务中的命令是在执行期间出现了错误,事务的后续命令也会继续执行下去,并且之前执行的命令也不会原创 2020-12-18 19:53:18 · 1043 阅读 · 1 评论 -
Redis~数据库中键的操作与生存时间、过期时间和过期删除策略
文章目录数据库键空间键的生存时间或过期时间设置键生存/过期时间过期时间的保存过期删除策略定时删除(Redis不支持)惰性删除定期删除数据库键空间Redis是一个键值对(key-value pair)数据库服务器,服务器中的每个数据库都由一 redis.h/redisDb结构表示,其中,redisDb结构的dict字典保存了数据库中的所有键值对,我们将这个字典称为键空间(key space):typedef struct redisDb { // ... dict *dict;//数原创 2020-12-18 14:49:18 · 402 阅读 · 0 评论 -
Redis~对象(string、list、hash、set、zset等) 的对象检查、空转时长、内存回收与对象共享
文章目录对象检查多态命令的实现空转时长内存回收refcount属性对象共享对象检查Redis中用于操作键的命令基本上可以分为两种类型:①其中一种命令可以对任何类型的键执行,比如说DEL命令、EXPIRE命令、RENAME命 令、TYPE命令、OBJECT命令等②而另一种命令只能对特定类型的键执行,比如说:SET、GET、APPEND、STRLEN等命令只能对字符串键执行;HDEL、HSET、HGET、HLEN等命令只能对哈希键执行RPUSH、LPOP、LINSERT、LLEN等原创 2020-12-18 13:24:06 · 339 阅读 · 0 评论 -
Redis~有序结合(ZSet)的数据结构之跳表(SkipList )
文章目录有序集合(ZSet)跳跃表介绍跳跃表的总体实现跳跃表节点(struct zskiplistNode)跳跃表(struct zskiplist)有序集合(ZSet)有序集合类型 (SortedSet) 相比于集合类型多了⼀个排序属性 score(分值),所以对于有序集合ZSet 来说,每个存储元素相当于有两个值组成的,⼀个是有序结合的元素值,⼀个是分值。有序集合的存储元素值也是不能重复的,但分值是可以重复的。所以有序集合的排序是靠分值的大小进行排序的有序集合类型的底层数据结构可以是原创 2020-12-17 19:27:42 · 596 阅读 · 0 评论 -
Redis~集合类型(Set)的数据结构之整数集合和字典
文章目录集合类型整数集合(IntSet)整数集合的实现(struct intset)整数集合的升级升级带来的好处整数集合的降级字典总结集合类型集合类型 (Set) 是⼀个无序并唯⼀的键值集合。集合类型的底层数据结构可以是整数集合(IntSet)或者字典(Dict)当集合对象的所有元素都是整数值,并且保存的元素数量小于512个时,使用整数集合如果不满足上述条件中的任意一个,都会使用字典例如博客关注我的人和我关注的人都适合用集合存储,可以保证人员不会重复;中奖人信息也适原创 2020-12-17 17:22:59 · 988 阅读 · 1 评论 -
Redis~哈希(Hash)类型的数据结构之字典
文章目录哈希类型字典介绍字典的底层实现哈希表(struct dictht)哈希表节点字典(struct dict)rehash(重新排列)rehash双哈希结构的实现渐进式rehash的实现哈希类型字典类型 (Hash) 又被成为散列类型或者是哈希表类型,它是将⼀个键值 (key) 和⼀个特殊的“哈希表”关联起来。相当于java中的Map<Object, Map<Object, Object>>哈希类型的底层数据结构可以是压缩列表(ZipList)或者字典(Dict)当哈原创 2020-12-17 16:18:48 · 1680 阅读 · 0 评论 -
Redis~列表List的数据结构之 链表(LinkedList)和压缩列表(ZipList)
文章目录Redis中的列表链表(LinkedList)链表的底层实现总结Redis的链表实现的特性压缩列表(ZipList)压缩列表的构成压缩列表节点的构成连锁更新Redis中的列表列表类型 (List) 是⼀个使用线性结构存储的结构,它的元素插入会按照先后顺序存储到链表结构中。列表类型的底层数据结构可以是压缩列表(ZipList)或者链表(LinkedList)当列表对象的所有字符串元素长度都小于64字节,并且保存的元素数量小于512个时,使用压缩列表如果不满足上述条件中的任意一个,都会使用链原创 2020-12-16 20:53:01 · 1409 阅读 · 5 评论 -
Redis~字符串的数据结构之动态字符串(SDS)
文章目录动态字符串(SDS)SDS的底层实现为什么不直接使用C字符串效率差异缓冲区溢出空间预分配策略与惰性空间释放策略二进制安全兼容部分C字符串函数总结动态字符串(SDS)Redis没有直接使用C语言传统的字符串表示(以空字符结尾的字符数组,以下简称C字 符串),而是自己构建了一种名为简单动态字符串(simple dynamic string,SDS)的抽象类型,并将SDS用作Redis的默认字符串表示当Redis需要的不仅仅是一个字符串字面量,而是一个可以被修改的字符串值时,Redis 就会原创 2020-12-16 19:27:07 · 320 阅读 · 0 评论 -
Redis~从RDBMS(关系型数据库管理系统)到Nosql(非关系型数据库)
文章目录对比RDBMS和NosqlRDBMSNosql为什么要使用Nosql单体mysql结构Memcached内存缓存+mysql+垂直拆分(读写分离)分库分表 + 水平拆分(集群)高效率的NosqlNosql的四大分类对比RDBMS和NosqlRDBMS有表格,有规范的行和列是结构化组织数据和关系都存在单独的表中安全性好有数据操作语言和数据定义语言有严格的一致性, 基础的事务NosqlNosql:没有固定的格式,是动态的,不需要过多的操作就可以实现横向扩展 Map<Obj原创 2020-11-20 22:00:36 · 708 阅读 · 1 评论 -
Redis~五大基础数据类型(字符串, 字典, 列表, 集合, 有序集合)的使用
文章目录字符串字典列表集合有序集合字符串字典列表集合有序集合原创 2020-09-10 16:58:04 · 560 阅读 · 0 评论 -
Redis~提高Redis服务的主要三个方式:主从同步、哨兵模式、集群服务
文章目录主从同步主从同步的优点主从同步的缺点哨兵模式哨兵工作原理哨兵模式优缺点集群服务随着业务的不断发展,单机 Redis 的性能已经不能满⾜我们的需求了,此时我们需要将单机 Redis 扩展 为多机服务主从同步主从同步也叫做主从复制, 是提高Redis服务的基础, 也是多机运行中最基础的一个, 主要把存储数据的节点叫做主节点, 把其他通过复制主节点的数据的副本节点叫做从节点在Redis中一个主节点可以拥有多个从节点, 一个从节点也可以是其他服务器的 “主节点” 这也叫做从从同步(其根本原创 2020-09-11 09:27:57 · 388 阅读 · 0 评论 -
Redis~使用Redis出现的常见异常: 缓存雪崩、缓存穿透、缓存击穿、缓存预热
文章目录缓存雪崩缓存穿透缓存击穿缓存预热实现缓存预热的三个思路缓存雪崩缓存雪崩是指带短时间内, 有大量的缓存过期, 从而导致大量的请求直接查询数据库, 从而对数据库造成了巨大的压力, 严重情况下可能导致数据库的宕机, 这种情况称之为缓存雪崩缓存穿透缓存穿透是指在查询数据的时候, 因为数据库是没有数据的所以缓存也是没有数据的, 但是每个请求还是先回去访问缓存, 每一次都不长记性,老是问他你有么有数据, 缓存说了没有, 然后还不死心的去数据库中查询, 这种情况就叫缓存穿透缓存击穿缓存击穿与原创 2020-09-09 22:17:22 · 380 阅读 · 0 评论 -
Redis~实现持久化的三种方式:快照方式(RDB)、文件追加方式(AOF)、混合持久化方式
文章目录何为持久化快照方式(RDB, Redis Database)优点缺点文件追加方式(AOF, Append Only File)优点缺点混合持久化方式优点缺点何为持久化所谓持久化就是将数据用内存保存到磁盘的工程, 其目的就是防止数据的丢失因为内存中的数据 在服务器重启之后就会丢失,⽽磁盘的数据则不会,因此为了系统的稳定起⻅,我们需要将数据进⾏持久 化。同时持久化功能⼜是 Redis 和 Memcached 最主要的区别之⼀,因为 Redis ⽀持持久化⽽ Memcached 不⽀持快照原创 2020-09-09 14:59:24 · 794 阅读 · 2 评论 -
Redis~初识缓存, 了解本地缓存(Spring Cache)和分布式缓存(Redis)
文章目录初识缓存缓存的优点缓存的分类本地缓存 如(Spring Cache)演示Spring Cache分布式缓存(Redis)RedisRedis能取代传统数据库吗?Redis的4大特点初识缓存一个实际程序中最影响效率的就是对数据库中数据的操作,为了提高效率就必须引进缓存技术.缓存是一个道速数据交换的存储器, 使用它可以快速访问和操作数据.对于程序来说,当没有缓存时, 每次访问数据都得去数据库中查找, 而有多个数据请求的时候, 如果都去数据库中查找, 那么对数据库的压力也是非常大的, 但当我们原创 2020-09-08 15:44:44 · 3601 阅读 · 0 评论