| 主文章(我总结的面试题的索引目录—进不去就说明我还没写完) |
|---|
| https://blog.csdn.net/grd_java/article/details/122357831 |
1. redis必问2. 5种数据类型和应用场景3. 同类型产品优势4. 细节
1. redis必问简述下redis
作用于持久层的非关系型数据库,缓存型数据库,完全开源免费,遵守BSD协议,高性能key-value数据库支持数据持久化,重启后可再次加载使用。还支持list、set、zset、hash等数据结构存储。支持数据备份(master-slave模式的数据备份)
redis的优势
性能极高:读的速度是110000次/s,写的次数是81000次/s丰富的数据类型:支持二进制案例的Strings,Lists,Hashes,Sets,OrderedSets数据类型操作原子性:Redis所有操作都是原子性(要么都成功,要不都失败)的,单个、多个操作都支持事务(原子性),通过MULTI和EXEC指令包起来特性多样:支持publish/subscribe,通知,key过期等特性
使用Redis的好处,体现在哪?
2. 5种数据类型和应用场景速度快,数据在内存,数据结构使用散列表,此数据结构优势就是查找和操作的时间复杂度都是O(1)丰富的数据类型,很多同类型产品,只有String一个类型,而reids支持string,list,set,Zset,hash。尤其hash数据类型,非常契合面向对象编程语言支持事务,操作都是原子操作,对数据的修改要么全部执行,要么全部不执行(中间出错,全体回滚)特性多,可用于缓存,消息,设置key的过期时间(过期自动删除)
redis有几种数据类型,分别是什么?
3. 同类型产品优势redis的键值对中,value的值有5种数据类型,key统一都是string字符串类型5种数据类型分别是:string字符串、hash哈希、list列表、set集合、zset(sorted set)有序集合
string类型:最基本类型,最大存储512M,如果里面存储的是数字值,那么可以通过incr key(key表示键)和decr key两个命令,对其进行增加和减少操作,可用于保存高热量数据值,比如点击量,用户只有点击,就调用incr key命令让里面的值加1.hash类型:就是一个hashMap,一般我们通过JSON字符串保存对象,而解析时,需要反序列化。使用hash类型,就省去了这个麻烦,它可以直接让我们访问到对象的特定某一条属性。注意,hash类型的键值对表现形式是field—value
list类型:简单的字符串列表,按插入顺序排序,可以添加元素到头(左)或尾(右),最多2^32-1个元素(42949672295,一个列表超过40亿个),底层使用压缩列表和双向链表数据结构,压缩列表达到一定条件转换为双向链表。适用于字符串按先后顺序展示的场景,比如朋友圈点赞,按顺序显示谁先点赞set类型:不可重复的字符串列表,无序,和Java一样,通过hash表实现,添加删除查找,时间复杂度都是O(1),最多2^32-1个元素(42949672295,一个set超过40亿个),常用于屏蔽菜单,比如屏蔽的弹幕关键字,你又不会关注它的顺序zset类型:有序或者说会自动排序的set类型。他和java不一样,java的有序,是插入顺序,redis这个实实在在的实现了排序。它在set基础上,为每个元素,关联了double类型的分数score,redis通过此分数为集合中成员进行从小到大的排序。集合元素不可重复,但是分数score可以重复,如果插入重复元素,后插入的元素的score覆盖之前的元素的score,score可以指定。适用于排行榜。其它的高级数据结构:HyperLogLog、Geo、Pub/Sub、Redis Module、BloomFilter、RedisFilter、RedisSearch、Redis-ML。真的会再说,不会就不要提。
Redis和Memcached相比有哪些优势?
Memcached所有值都是简单字符串,redis作为它的替代,支持丰富数据类型redis速度比Memcached快很多Redis可以持久化数据
Memcache与Redis的区别
4. 细节存储方式不同:Memcache把数据全部放在内存,断点就会丢失,数据不能超过内存大小,Redis可以持久化数据到硬盘,保证数据持久性数据类型:Memcache对数据类型支持简单,Redis有复杂的数据类型底层模型不同:底层实现方式、与客户端间通信协议不一样。Redis自己构建VM机制,一般系统调用系统函数的话,会浪费一定时间去移动和请求,而Redis自己有VM机制,自己去请求。
redis是单进程单线程的?怎么体现的?
Redis是单进程单线程的redis利用队列技术,将并发访问变成串行访问,消除了传统数据库串行控制的开销
redis一个string类型的值,能存储最大容量是多少
512M



