redis基础篇】的更多相关文章

1.redis常见的数据结构 redis是一种以键值对存储的高性能内存数据库,有五种常用的数据类型,string,list,hash,set,zset. 2.redis的过期时间 redis中的key可以设置过期时间,方式有两种,第一种是通过expire命令来设置,expire key seconds.第二种方式是使用setex(string key,int seconds,string value). 3.过期键的删除策略 在redis中,对于过期的键,删除策略有两种,第一种是被动删除,就是在…
我们经常听到说Redis是单线程的,也会有疑问:为什么单线程的Redis能那么快? 这里要明白一点:Redis是单线程,主要是指Redis的网络IO和键值对读写是由一个线程来完成的,这也是Redis对外提供键值存储服务的主要流程.但Redis的其他功能,比如持久化.异步删除.集群数据同步等,都是由额外的线程执行的. 我们知道多线程能够提升并发性能,那为什么Redis会采用单线程,而非多线程?为什么单线程能那么快? 下面我们就来学习一下Redis采用单线程的原因. 为什么采用单线程? 使用多线程,…
Redis是内存数据库,但是一旦服务器宕机,内存中的数据将会全部丢失. 最简单的恢复方式是从后端数据库恢复,但这种方式有两个问题: 频繁访问数据库,会给数据库带来巨大的压力: 从数据库中读取相比从Redis中读取要慢很多,会导致应用响应变慢 因此,Redis要实现持久化,避免从后端数据库中进行恢复. Redis有两种持久化机制:AOF(Append Only File)日志和RDB快照.今天先来学习AOF日志. 什么是AOF日志? AOF日志是通过保存Redis写命令来记录数据库数据的.大多数的…
AOF好处是每次执行只需要记录操作命令,记录量不大.但在故障恢复时,需要逐一执行AOF的操作命令,如果日志很大,恢复就很慢. 今天学习另一种持久化方式:内存快照.内存快照,是Redis某一时刻的状态,以文件的形式保存在磁盘上.这个快照文件就称为RDB文件,其中RDB就是Redis Database的缩写. 当故障恢复时,只要把RDB文件读入内存即可,恢复速度很快.但是内存快照并不是最优选项,为什么呢? 我们还需要考虑两个问题: 对哪些数据做快照?这关系到快照的执行效率: 做快照时,数据还能被增删…
RDB和AOF对比 关于RDB和AOF的优缺点,官网上面也给了比较详细的说明redis.io/topics/pers- RDB 优点: RDB快照是一个压缩过的非常紧凑的文件,保存着某个时间点的数据集,适合做数据的备份,灾难恢复: 可以最大化Redis的的性能,在保存RDB文件,服务器进程只需要fork一个子进程来完成RDB文件的创建,父进程不需要做IO操作: 与AOF相比,恢复大数据集的时候会更快: 缺点: RDB的数据安全性是不如AOF的,保存整个数据集的过程是比繁重的,根据配置可能要几分钟…
Redis具有高可靠性,体现在两方面: 一是数据尽量少丢失,通过前面介绍的持久化方式AOF和RDB,在宕机时可以恢复数据. 二是服务尽量少中断,通过副本冗余来实现. 今天我们学习的就是通过主从复制实现副本冗余,从而实现Redis的高可靠性. 什么是主从复制 Redis提供主从库模式,保证数据副本的一致,主从库之间采用的是读写分离的方式. 为什么要读写分离? 如果允许所有节点能够处理读写请求,就需要解决加锁.实例间协商.数据同步等操作,会带来巨额的开销. 因此采用主从库模式时,要配置主库只写,从库…
上一篇文章介绍了高可靠方案:主从集群模式.通过主从库的读写分离,来保证服务的可靠性. 当某个从库出现故障时,不影响服务的使用,主库仍然可以处理写命令,其他从库可以处理读命令.但主库发生故障,就不能处理写命令了,从库只能处理读命令.这就影响服务的正常使用了,该如何解决呢? 只要找一个从库当主库就可以解决了.但还有三个问题需要处理: 主库真的挂了吗? 该选择哪个从库作为主库? 怎么把新主库的相关信息通知给从库和客户端? 这里就要介绍Redis的哨兵机制了.哨兵机制指在Redis主从集群模式下,实现主…
现在有一个场景:要用Redis保存5000万个键值对,每个键值对大约是512B,要怎么部署Redis服务呢? 第一个方案,也是最容易想到的,需要保存5000万个键值对,每个键值对约为512B,一共需要25GB空间,选择一台32GB内存的用品来部署Redis,还剩余7GB空间,可以采用RDB对数据做持续久. 但是Redis服务使用不久后出现Redis的响应有时会非常慢.原因是采用了RDB持久化,在前面介绍RDB原理时,我们知道fork子进程的瞬间会阻塞主线程,而且内存越大,阻塞越长. 第一个方案不…
一.环境 Redis:4.0.9 SpringBoot:2.0.1 Redis安装:Linux(Redhat)安装Redis 二.SpringBoot整合Redis 1.项目基本搭建: 我们基于(五)SpringBoot2.0基础篇- Mybatis与插件生成代码 该项目来做Redis整合: 2.添加maven相关依赖和Redis的连接信息: Pom.xml <!-- Redis的依赖库 --> <dependency> <groupId>org.springframe…
根据这个图,我们举个简单的例子:假如你去某个餐厅吃饭,点了很多菜,厨师要一个一个菜的做,一个厨师不可能同时做出所有你点的菜,于是你有两个选择:第一个,厨师把所有菜都上齐了,你才开始吃:还有一个选择,做好一个菜,端上桌一个你开始吃一个.这里的厨师就是生产者,而你就是消费者,菜就是图中的product(产物).我们可以很明显的感觉到,第一种选择会浪费很多时间,因为生产者要把所有产物生产完毕,消费者才开始从存储中介当中去取,而且可能会浪费大量的内存空间,上万条数据读到内存中或许你没有觉得,但是一旦数据…