Redis 知识总结

redis 是什么?

redis是免费开源的非关系性数据库,遵守BSD协议,已key-value形式存储数据。
redis 与 其他 key-value 缓存产品的不同点。
1.持久性,redis是在内存中进行读写操作,从而读写速度非常快。官方给出的数据是读 110000/s , 写 81000/s。持久性主要是redis异步把内存中的数据写入到本地磁盘中。
2.数据类型丰富,redis支持list,set,zset,hash等数据结构存储。
3.数据备份,及master-slave模式数据备份。

redis 的数据类型?

redis支持五种数据类型,分别有String,List,set,Hash,有序集合

使用 redis 有哪些好处?

1.速度快,因为是在内存中操作数据
2.支持丰富的数据类型,如String,List,Set,Hash等等
3.支持事务,原子性操作,redis的每一步操作都能够保持原子性
4.作用域宽泛,如发布/订阅,key过期,通知等等

Redis 相比 Memcached 有哪些优势?

1.持久性,memcached只是把数据缓存到内存中。所以,当服务器宕机,缓存中的数据全都没有了,而redis是可以写入到磁盘中。
2.数据类型丰富,memcached的值只能是String类型,而redis支持多种数据结构

3.Redis比Memcached速度快

Memcache 与 Redis 的区别都有哪些?

1.持久性
2.数据类型不同
3.底层实现不同,redis底层自己创建VM机制

Redis 是单进程单线程的?

redis是单进程单线程,redis通过队列技术把并行转为串行。

一个字符串类型的值能存储最大容量是多少?

512M

Redis 的持久化机制是什么?各自的优缺点?

redis的持久化机制分为两种,1.RDB 2.AOF
RDB 与 AOF 区别在与,RDB是定时通过异步把内存中的数据集写入到本地磁盘,生成RDB文件。最新的覆盖前一个版本的RDB文件。而AOF是实时操作,没当操作redis,都会记录到文件中。
RDB 适用于 大数据量的时候,但是可能会数据丢失。场景在于在定时前几秒如果服务器宕机了,那数据就不能保存一致性和持久性。而AOF的话,就算出现了数据丢失,也能够通过redis-check-aof找回丢失数据。

Redis 常见性能问题和解决方案

1.master不要写内存快照,因为当执行save的rdbSave方法,会占用主线程。从而导致间接性暂停
2.如果数据比较重要,设置aof持久性建议每秒同步一次
3.为了更好利用主从复制,master和slave最好在同一个局域网中
4.避免在压力大的主库中进行增加
5.主从复制,最好不要使用图形结构,使用链表结构会好一些

redis 过期键的删除策略?

定时策略(在设置了过期时间的key中,如果key过期了则会被删除)
懒性策略(在设置了过期时间的key中,如果key过期了也不会被删除,当另一个方法调用这个过期key的时候,才会被删除)
定期策略(没过设置的时长后,会对数据集进行扫描,如果key过期了,则会被删除)

Redis 的回收策略(淘汰策略)?

volatile lru(在设置了过期时间的数据集中,选中调用最少的数据进行淘汰)
volatile tll(在设置了过期时间的数据集中,选中快要过期的数据进行淘汰)
volatile random(在设置了过期时间的数据集中,随机淘汰)
allkeys lru(在数据集中,选中调用最少的数据进行淘汰)
allkeys random(在数据集中,随机淘汰)
拒绝淘汰

为什么 redis 需要把所有数据放到内存中?

因为数据放入内存中,调用速度是非常快的,并且redis会异步把内存中的数据写入本地磁盘。

Redis 集群的作用?

1.高可用,当集群中master挂了,slave会升级为master,进行提供服务
2.高扩展,当服务内存不够的时候,可以进行分片存储

Redis 集群方案什么情况下会导致整个集群不可用?

比如,1,2,3个节点,在没有完全的复制模型的情况下,会导致集群不可用。

Redis 支持的 Java 客户端都有哪些?官方推荐用哪个?

redisson,jedis,官方推荐使用redisson。

Jedis 与 Redisson 对比有什么优缺点?

jedis是redis与java连接的客户端,jedis提供了redis与java之间比较全的方法。
redssion是在jedis所以功能的基础上,添加了分布式,高扩展的方法

Redis 如何设置密码及验证密码?

设置密码:config set requirepass 密码
授权密码:auth 密码

Redis 哈希槽的概念

redis使用的不是哈希值,而是哈希槽。redis集群的哈希槽总共有16384,每个key通过 CRC16 来分配放入那个槽中。

Redis 集群的主从复制模型是怎样的?

为了使在部分节点失败或者大部分节点无法通信的情况下集群仍然可用,所以集群使用了主从复制模型,每个节点都会有 N-1 个复制品.

Redis 集群会有写操作丢失吗?为什么?

redis集群不是强一致性,所以会存在数据丢失的情况。

Redis 集群之间是如何复制的?

redis集群主要通过异步进行复制。

Redis 集群最大节点个数是多少?

16384个

Redis 事务相关的命令有哪几个?

watch,multi,exec,discard

Redis 分布式锁

先用setNX来争抢锁,然后抢到设置一个超时时间expire。但是,如果当还没有设置超时时间服务挂了,那么就会出现死锁的情况。为了防止这种情况,redis也提供了一个set(多参数的方法)来实现分布式锁。


后续会继续添加。。。

发布了4 篇原创文章 · 获赞 6 · 访问量 139

猜你喜欢

转载自blog.csdn.net/qq_40356439/article/details/104424875