草庐IT

《Redis设计与实现》

由浅到深,逐步讲解Redis本书主要分为四大部分。第一部分"数据结构与对象":介绍了Redis中的各种对象及其数据结构,并说明这些数据结构如何影响对象的功能和性能。第二部分"单机数据库的实现":对Redis实现单机数据库的方法进行了介绍,包括数据库、RDB持久化、AOF持久化、事件等。第三部分"多机数据库的实现":对Redis的Sentinel、复制、集群三个多机功能进行了介绍。第四部分"独立功能的实现":对Redis中各个相对独立的功能模块进行了介绍,涉及发布与订阅、事务、Lua脚本、排序、二进制位数组、慢查询日志、监视器等。  目录第1章引言1第一部分数据结构与对象第2章简单动态字符串8第

IDEA通过Jedis操作Linux上的Redis;Failed to connect to any host resolved for DNS name问题

testPing.javapublicclasstestPing{publicstaticvoidmain(String[]args){Jedisjedis=newJedis("Redis节点所在的机器的IP",6379);System.out.println(jedis.ping());System.out.println(jedis.keys("*"));}}出现以下错误:FailedtoconnecttoanyhostresolvedforDNSname.Suppressed:java.net.SocketTimeoutException:connecttimedout首先查看Jedis

redis服务器

这一次主要讲下redis中服务器这个结构体相关代码,主要从是代码层面进行讲解redis服务器redis服务器结构体主要代码在redis.h/redisServer,下面给出该结构体源码,可以看到源码中对该结构体定义很长,这一节我们一点点分析,当然有些地方可能我也理解不到位hhh//redis服务器实例structredisServer{char*configfile;/*配置文件的绝对路径*/inthz;/*serverCron()每秒调用的次数*/redisDb*db;/*数据库数组,里面存放的是该服务器所有的数据库*/dict*commands;/*命令表(受到rename配置选项的作用)

Redis持久化

Redis是内存数据库,如果不将内存中的数据库状态保存到磁盘,那么一旦服务器进程退出,服务器中的数据库状态也会消失。所以Redis提供了持久化功能!RDB(RedisDataBase)什么是RDB在指定的时间间隔内将内存中的数据集快照写入磁盘,也就是行话讲的Snapshot快照,它恢复时是将快照文件直接读到内存里。Redis会单独创建(fork)一个子进程来进行持久化,会先将数据写入到一个临时文件中,待持久化过程都结束了,再用这个临时文件替换上次持久化好的文件。整个过程中,主进程是不进行任何IO操作的。这就确保了极高的性能。如果需要进行大规模数据的恢复,且对于数据恢复的完整性不是非常敏感,那R

【NoSql】缓存管理器CacheManager使用

缓存管理器CacheManager一、背景​ 代码并发量因建行活动页上升,大量请求打到Mongo导致数据库cpu100%从而服务不可用,目前解决方案,使用编程式缓存,即对缓存的操作与业务代码耦合。目前基本上可以解决并发问题。此次提出CacheManager主要是优化代码。使用声明式,即注解的方式,灵活操纵缓存,不需要与业务代码耦合。二、与Springboot2集成1、引入依赖org.springframework.bootspring-boot-starter-cache2、SpringCache配置/***@Title:CacheManagerConfiguration*@author:s

【NoSql】缓存管理器CacheManager使用

缓存管理器CacheManager一、背景​ 代码并发量因建行活动页上升,大量请求打到Mongo导致数据库cpu100%从而服务不可用,目前解决方案,使用编程式缓存,即对缓存的操作与业务代码耦合。目前基本上可以解决并发问题。此次提出CacheManager主要是优化代码。使用声明式,即注解的方式,灵活操纵缓存,不需要与业务代码耦合。二、与Springboot2集成1、引入依赖org.springframework.bootspring-boot-starter-cache2、SpringCache配置/***@Title:CacheManagerConfiguration*@author:s

面对集中式缓存实现上的挑战,Redis交出的是何种答卷?聊聊Redis在分布式方面的能力设计

大家好,又见面了。本文是笔者作为掘金技术社区签约作者的身份输出的缓存专栏系列内容,将会通过系列专题,讲清楚缓存的方方面面。如果感兴趣,欢迎关注以获取后续更新。在本专栏前面的文章中,我们介绍了各种本地缓存框架,也知晓了本地缓存的常见特性与设计理念。在前两篇文章中,我们介绍了集中式缓存Redis的一些主流特性与典型使用场景。现在我们来对比一下,分布式缓存相比于本地缓存,在实现层面需要关注的点有哪些不同。梳理如下:维度本地缓存集中式缓存缓存量受限于单机内存大小,存储数据有限需要提供给分布式系统里面所有节点共同使用,对于大型系统而言,对集中式缓存的容量诉求非常的大,远超单机内存的容量大小。可靠性影响有

聊聊MongoDB中连接池、索引、事务

大家好,我是哪吒。三分钟你将学会:MongoDB连接池的使用方式与常用参数查询五步走,能活九十九?MongoDB索引与MySQL索引有何异同?MongoDB事务与ACID什么是聚合框架?在最开始接触MongoDB的时候,是通过MongoDatabasedatabase=newMongoClient("localhost",27017).getDatabase("test");的方式连接MongoDB。它会为每个请求创建一个新的连接,然后销毁,一般数据库的连接都是TCP连接,TCP是长连接,如果不断开,就会一直连着。众所周知,新建一个数据库连接的代价是很大的,复用现有连接才是首选,连接池就是干这

Redis--回顾提要

一、写在前知识学了就忘!不用就忘!我太健忘!特此记录!用于复习打卡!Redis干就完事了!二、来辣!Redis做异步队列:一般list结构做队列,rpush生产消息,lpop消费消息,当lpop没有消息的时候,要适当sleep一会儿;如果不sleep,就用blpop,会阻塞;生产一次消费多次,使用pub/sub主题订阅模式,可以实现1:N的消息队列,缺点:消费者下线的时候,消息会丢。做延时队列:使用sortedset,拿时间戳作为score,消息内容作为key调用zadd来生产消息,消费者用zrangebyscore指令获取N秒前的数据轮询处理。Redis分布式锁:拿setnx来争抢锁,抢到之

Redis的Java客户端

Redis的Java客户端Jedis线程不安全,lettuce线程安全Jedis测试引入依赖redis.clientsjedis3.7.0org.junit.jupiterjunit-jupiter5.7.0Test.javapublicclassJedisTest{privateJedisjedis;@BeforeEachvoidsetUp(){//1.建立连接jedis=newJedis("192.168.164.128",6379);//2.设置密码jedis.auth("123456");//3.选择库jedis.select(0);}@TestvoidtestString(){//存