179.redis是什么,都有哪些使用场景
答案:redis是一个开源的c编写的基于内存亦可持久化的日志型key-value数据库
使用场景.数据高并发的读写,海量数据的读写,对扩展性要求高的数据
180.redis有哪些功能
答案:数据缓存功能,分布式锁的功能,支持数据持久化,支持事务,支持消息队列
181.redis和memecache有什么区别
答案:memecached所有的值均是简单的字符串,redis作为其替代者,支持更为丰富的数据类型
redis的速度比memcache快
redis可持久化数据
182.redis为什么是单线程的
答案:因为cpu不是redis的瓶颈,redis的瓶颈最有可能是机器内存或者网络贷款,既然单线程容易实现,而cpu有不会成为瓶颈,所有就使用了单线程
关于redis的性能,官网有记录,普通笔记本每秒几十万请求
而且单线程不代表慢,nginx和nodejs也都是高性能的单线程代表
183.什么是缓存穿透
答案:缓存穿透,指查询一个一定不存在的数据,由于缓存是不命中时需要从数据库中查询,查不到数据则不写入缓存,着会导致这个不存在的数据每次请求都要去数据库查新,造成缓存穿透,
最简单的结局方案是允许缓存空值
184.redis支持的数据类型有那些
答案:string,list,hash,set,zset
185.redis的java客户端都有那些
答案:redisson,jedis,lettuce等,官方推荐redisson
186.jdeis和redisson有那些区别
答案:jedis是redis的java实现的客户端其提供了比较全面的redis命令的支持
redisson实现了分布式和可扩展的java数据结构,和jedis相比,功能较为简单,不支持字符串操作,不支持排序事务管道分区等redis特性
187.怎么保证缓存和数据库数据的一致性
答案:合理的设置缓存过期时间,新增修改删除同时更新redis,可以使用事务机制来保证数据的一致性
188.redis的持久化有哪几种
答案:有两种,rdb制定的时间间隔对数据库进行快照存储
aof每一个收到的写的命令都通过write函数追加到文件中
189.redis怎么实现分布式锁
答案:redis分布式锁其实就是在系统里占个坑,其他程序也要占坑的时候,占用成功了就可以继续执行,失败了就只能放弃或重试
190.redis分布式锁有什么缺陷
答案:redis分布式锁不能解决超时问题,分布式锁有一个超时时间,程序的执行如果超出了锁的超时时间,就会出现问题.
191.redis如何做内存优化
答案:尽可能的使用散列表,散列表使用内存小
192.redis淘汰策略有哪些
答案:volatile-lru 从已设置过期时间的数据集,挑选最近最少使用的数据淘汰
volatile-ttl从已设置过期时间的数据集,挑选将要过期的数据淘汰
volatile-random从已设置过期时间的数据集,所及选择数据淘汰
allkeys-lru从数据集中挑选最近最少使用的数据淘汰
allkeys-random从数据集中随机挑选数据淘汰
no-enviction禁止数据淘汰
193.redis常见的性能问题有那些
答案:主服务器写内存快照,会阻塞主线程工作,当快照比较大时,对性能影响非常大,或间断性的暂停服务,所以主服务器最好不要写内存快照
redis主从复制的性能问题,为了主从复制的速度和链接稳定性,主从服务器最好在同一个局域网内