redis基本知识点

redis支持的数据类型

Redis 支持的数据类型:string(字符串)、list(列表)、hash(字典)、set(集合)、zset(有序集合)。

Redis 有哪些功能

数据缓存功能

分布式锁的功能

支持数据持久化

支持事务

支持消息队列

redis 持久化有几种方式

Redis 提供两种持久化机制 RDB 和 AOF 机制:

1、RDBRedis DataBase)持久化方式:是指用数据集快照的方式半持久化模式) 记录 redis 数据库的所有键值对,在某个时间点将数据写入一个临时文件, 持久化结束后, 用这个临时文件替换上次持久化的文件, 达到数据恢复。

优点:

1、只有一个文件 dump.rdb, 方便持久化。

2、容灾性好, 一个文件可以保存到安全的磁盘。

3、性能最大化, fork 子进程来完成写操作, 让主进程继续处理命令, 所以是 IO 最大化。使用单独子进程来进行持久化,主进程不会进行任何 IO 操作,保证了 redis 的高性能)
4.相对于数据集大时, 比 AOF 的启动效率更高。

缺点:

1、数据安全性低。RDB 是间隔一段时间进行持久化,如果持久化之间 redis 发生故障, 会发生数据丢失。所以这种方式更适合数据要求不严谨的时候)

2、AOFAppend-only file)持久化方式:是指所有的命令行记录以 redis 命令请求协议的格式完全持久化存储)保存为 aof 文件。

优点:

1、数据安全, aof 持久化可以配置 appendfsync 属性, 有 always, 每进行一次命令操作就记录到 aof 文件中一次。

2、通过 append 模式写文件, 即使中途服务器宕机, 可以通过 redis-check-aof 工具解决数据一致性问题。

3、AOF 机制的 rewrite 模式。AOF 文件没被 rewrite 之前( 文件过大时会对命令进行合并重写), 可以删除其中的某些命令( 比如误操作的 flushall))

缺点:

1、AOF 文件比 RDB 文件大, 且恢复速度慢。

2、数据集大着的时候, 比 rdb 启动效率低。

最大缓存配置

在redis中,允许用户设置的最大使用内存大小是 512G。

在 redis 中,允许用户设置最大使用内存大小 server.maxmemory,在内存限定的情况下是很有用的。譬如,在一台 8G 机子上部署了 4 个 redis 服务点,每一个服务点分配 1.5G 的内存大小,减少内存紧张的情况,由此获取更为稳健的服务。

怎么保证缓存和数据库数据的一致性

合理设置缓存的过期时间。 redis> EXPIRE cache_page 30 # 设置过期时间为 30 秒

新增、更改、删除数据库操作时同步更新 Redis,可以使用事物机制来保证数据的一致性。

redis缓存穿透、击穿、雪崩
缓存穿透:去redis中没有命中数据,就会进入mysql数据库进行查询。

注:不怕低频的缓存穿透(因为数据库没有那么脆弱),就怕高频的缓存穿透。

​ 使用布隆过滤器进行标识。(涉及布隆算法:通过一定的错误率来降低内存的占用)

在这里插入图片描述

出现了hash碰撞会出现错误率。

布隆算法错误率:1)它告诉你数据存在,那么实际情况可能不存在

​ 2)它告诉你数据不存在,那么一定不存在

降低错误率:

​ 1)加大数组(二进制码数组)的长度 (考虑内存问题 长度得有个度量)

​ 2)增加hash函数的个数

布隆算法弊端:做删除的时候哈希值相同时会删除同一个数(解决方法:布谷鸟算法)

缓存击穿:redis只存储了一条数据,在某一刻数据失效。

(使用分布式锁解决(zookeeper分布式锁)(难点))

缓存雪崩:redis缓存的大量数据突然在某一时刻集中失效。

​ 1)redis里面的数据缓存有效时间都是一样的。 解决办法:给每一条数据设置一个随机有效期。

​ (达到一个缓冲效果)

​ 2)redis里面的数据挂掉了。 使用分布式存储(副本集群,切片集群)(同样是达到缓冲效果)

redis为什么是单线程的
因为Redis是基于内存的操作,CPU不是Redis的瓶颈,Redis的瓶颈最有可能是机器内存的大小或者网络带宽。既然单线程容易实现,而且CPU不会成为瓶颈,那就顺理成章地采用单线程的方案了 
Redis 和 memcache 有什么区别

存储方式不同:memcache 把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小;Redis 有部份存在硬盘上,这样能保证数据的持久性。

数据支持类型:memcache 对数据类型支持相对简单;Redis 有复杂的数据类型。

使用底层模型不同:它们之间底层实现方式,以及与客户端之间通信的应用协议不一样,Redis 自己构建了 vm 机制,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。

value 值大小不同:Redis 最大可以达到 1gb;memcache 只有 1mb。

Redis 淘汰策略有哪些

volatile-lru:从已设置过期时间的数据集(server. db[i]. expires)中挑选最近最少使用的数据淘汰。

volatile-ttl:从已设置过期时间的数据集(server. db[i]. expires)中挑选将要过期的数据淘汰。

volatile-random:从已设置过期时间的数据集(server. db[i]. expires)中任意选择数据淘汰。

allkeys-lru:从数据集(server. db[i]. dict)中挑选最近最少使用的数据淘汰。

allkeys-random:从数据集(server. db[i]. dict)中任意选择数据淘汰。

no-enviction(驱逐):禁止驱逐数据。

Redis 支持的 Java 客户端都有哪些

支持的 Java 客户端有 Redisson、jedis、lettuce 等。

jedis 和 Redisson 有哪些区别

jedis:提供了比较全面的 Redis 命令的支持。

o-enviction(驱逐):禁止驱逐数据。

Redis 支持的 Java 客户端都有哪些

支持的 Java 客户端有 Redisson、jedis、lettuce 等。

jedis 和 Redisson 有哪些区别

jedis:提供了比较全面的 Redis 命令的支持。

Redisson:实现了分布式和可扩展的 Java 数据结构,与 jedis 相比 Redisson 的功能相对简单,不支持排序、事务、管道、分区等 Redis 特性。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值