![](https://img-blog.csdnimg.cn/20190624182838287.jpeg?x-oss-process=image/resize,m_fixed,h_224,w_224)
redis深度解析1.0
redis的原理,API,源码解析
小马的学习笔记
这个作者很懒,什么都没留下…
展开
-
redis的基础数据结构
缓存大致可以分为两类,一种是应用内缓存,比如Map(简单的数据结构),以及EH Cache(Java第三方库),另一种就是缓存组件,比如Memached,Redis;Redis是一个基于KEY-VALUE的高性能的存储系统,通过提供多种键值数据类型来适应不同场景下的缓存与存储需求 redis的全称是remote dictionary server(远程字典服务器)...原创 2018-12-07 10:43:05 · 270 阅读 · 0 评论 -
redis应用实战(布隆过滤器)
布隆过滤器是Burton Howard Bloom在1970年提出来的,一种空间效率极高的概率型算法和数据结构,主要用来判断一个元素是否在集合中存在。因为他是一个概率型的算法,所以会存在一定的误差,如果传入一个值去布隆过滤器中检索,可能会出现检测存在的结果但是实际上可能是不存在的,但是肯定不会出现实际上不存在然后反馈存在的结果。因此,Bloom Filter不适合那些“零错误”的应用场合。而...原创 2018-12-26 20:09:40 · 20502 阅读 · 3 评论 -
redis应用实战(管道模式)
Redis服务是一种C/S模型,提供请求-响应式协议的TCP服务,所以当客户端发起请求,服务端处理并返回结果到客户端,一般是以阻塞形式等待服务端的响应,但这在批量处理连接时延迟问题比较严重,所以Redis为了提升或弥补这个问题,引入了管道技术:可以做到服务端未及时响应的时候,客户端也可以继续发送命令请求,做到客户端和服务端互不影响,服务端并最终返回所有服务端的响应,大大提高了C/S模型交互的...原创 2018-12-26 10:55:47 · 529 阅读 · 0 评论 -
redis应用实战(分布式锁)
Redisson客户端的操作方式public static void main(String[] args) { Config config=new Config(); config.useClusterServers().addNodeAddress("redis://192.168.**.***:****", "red...原创 2018-12-26 10:49:05 · 306 阅读 · 0 评论 -
redis应用实战(jedis-sentinel,Jedis-cluster原理分析)
Redis Java客户端有很多的开源产品比如Redission、Jedis、lettuce1.jedis是redis的java实现的客户端,其API提供了比较全面的Redis命令的支持;2.Redisson实现了分布式和可扩展的Java数据结构,和Jedis相比,功能较为简单,不支持字符串操作,不支持排序、事务、管道、分区等Redis特性。Redisson主要是促进使用者对Redis的...原创 2018-12-25 15:50:43 · 759 阅读 · 0 评论 -
redis的分布式集群(Redis-Cluster)
使用哨兵,此时的Redis集群的每个数据库依然存有集群中的所有数据,从而导致集群的总数据存储量受限于可用存储内存最小的节点,形成了木桶效应。而因为Redis是基于内存存储的,所以这一个问题在redis中就显得尤为突出了在redis3.0之前,我们是通过在客户端去做的分片,通过hash环的方式对key进行分片存储,分片虽然能够解决各个节点的压力,但是导致维护成本高,增加,移除节点比较频繁,因...原创 2018-12-24 19:27:18 · 528 阅读 · 0 评论 -
redis的分布式集群(哨兵模式)
哨兵模式什么是哨兵顾名思义,哨兵的作用就是监控Redis系统的运行状况,它的功能包括两个\1. 监控master和slave是否正常运行\2. master出现故障时自动将slave数据库升级为master哨兵是一个独立的进程,使用哨兵后的架构图 为了解决master选举的问题,又引出了一个单点问题,也就是哨兵的可用性如何解决,在一个主从的redis系统中可以使用多个哨...原创 2018-12-21 15:05:20 · 3378 阅读 · 0 评论 -
redis的分布式集群(主从复制)
集群先来简单了解下redis中提供的集群策略,虽然redis有持久化功能能够保障redis服务器宕机也能恢复并且只有少量的数据损失,但是由于所有的数据在一台服务器上,如果服务器出现故障,就算是有备份也不可避免数据丢失的问题。在实际生产中应使用集群模式,避免出现单点故障主从复制,复制的作用是把redis的数据库复制多个副本部署在不同的服务器上,如果其中一台服务器出现故障,也能快速迁移到...原创 2018-12-18 14:06:48 · 848 阅读 · 0 评论 -
redis的原理分析-Redis是单进程?性能为什么这么快
Redis采用了一种非常简单的做法,单线程来处理来自所有客户端的并发请求,Redis把任务封闭在一个线程中从而避免了线程安全问题;redis为什么是单线程?官方的解释是,CPU并不是Redis的瓶颈所在,Redis的瓶颈主要在机器的内存和网络的带宽。那么Redis能不能处理高并发请求呢?当然是可以的,至于怎么实现的,我们来具体了解一下。 【注意并发不等于并行,并发性I/O流,意味着能够让一...原创 2018-12-13 15:22:10 · 2608 阅读 · 4 评论 -
redis的原理分析-redis的内存回收策略
Redis中提供了多种内存回收策略,当内存容量不足时,为了保证程序的运行,这时就不得不淘汰内存中的一些对象,释放这些对象占用的空间,那么选择淘汰哪些对象呢?其中,默认的策略为noeviction策略,当内存使用达到阈值的时候,所有引起申请内存的命令会报错allkeys-lru:从数据集(server.db[i].dict)中挑选最近最少使用的数据淘汰适合的场景: 如果我们的应用对缓存的...原创 2018-12-13 15:17:03 · 451 阅读 · 0 评论 -
redis的原理分析-redis是如何持久化的?
redis支持两种方式的持久化,一种是RDB方式,一种是AOF方式,前者会根据指定的规则定时将内存中的数据存储到硬盘上。而后者在每次执行命令后讲命令本身记录下来,两种持久化方式可以单独使用其中的一种,也可以把这两种方式结合使用。RDB方式当符合一定条件时,redis会单独创建(fork)一个子进程来执行持久化,会先将数据写入到一个临时文件中,等到持久化过程都结束了,再用这个临时文件替换上次...原创 2018-12-12 20:00:03 · 139 阅读 · 0 评论 -
redis的原理分析-redis的发布订阅
redis的发布订阅redis提供了发布订阅功能,可以用于消息的传递,redis提供了一组命令可以让开发者实现订阅发布模式(public/subscribe)该模式同样可以实现进程之间的消息传递,它的实现原理是发布订阅模式包含两种模式,发布者和订阅者,订阅者可以订阅一个或多个频道,而发布者可以向指定的频道发送消息,所有订阅该频道的订阅者都会受到该消息发布者发布消息的命令是publi...原创 2018-12-11 18:32:00 · 194 阅读 · 0 评论 -
redis的原理分析-过期时间的设置
过期时间的设置在redis中提供了expire命令的设置一个键的过期时间,到期以后redis会自动删除他,这个在我们的实际使用过程中得非常多expire命令的使用方法为expire key seconds其中seconds参数表示过期的时间,单位秒expire返回值为1表示设置成功,0表示设置失败或者键不存在如果向知道一个键还有多久时间被删除,可以使用TTL命令 T...原创 2018-12-10 14:16:19 · 838 阅读 · 0 评论