redis面试题汇总
来源:互联网 发布:mysql开发工具 编辑:程序博客网 时间:2024/06/08 00:06
- 使用redis有哪些好处?
(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1)
(2) 支持丰富数据类型,支持string,list,set,sorted set,hash
(3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行
(4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除
- redis相比memcached有哪些优势?
(1) memcached所有的值均是简单的字符串,Redis作为其替代者,支持更为丰富的数据类型
(2) redis的速度比memcached快很多
(3) redis可以持久化其数据
- Memcache与Redis的区别都有哪些?
1)、存储方式
Memecache把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。
Redis有部份存在硬盘上,这样能保证数据的持久性。
2)、数据支持类型
Memcache对数据类型支持相对简单。
Redis有复杂的数据类型。
3)、使用底层模型不同
它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。
Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。
- redis常见性能问题和解决方案:
(1) Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件
(2) 如果数据比较重要,某个Slave开启AOF备份数据,策略设置为每秒同步一次
(3) 为了主从复制的速度和连接的稳定性,Master和Slave最好在同一个局域网内
(4) 尽量避免在压力很大的主库上增加从库
(5) 主从复制不要用图状结构,用单向链表结构更为稳定,即:Master <- Slave1 <- Slave2 <- Slave3…
这样的结构方便解决单点故障问题,实现Slave对Master的替换。如果Master挂了,可以立刻启用Slave1做Master,其他不变。
- mySQL里有2000w数据,redis中只存20w的数据,如何保证redis中的数据都是热点数据
相关知识:redis 内存数据集大小上升到一定大小的时候,就会施行数据淘汰策略。redis 提供 6种数据淘汰策略:
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(驱逐):禁止驱逐数据
6.用Redis和任意语言实现一段恶意登录保护的代码,限制1小时内每用户Id最多只能登录5次
@Test public void loginTest(){ Object countObj = redisTemplate.execute(new RedisCallback() { public Object doInRedis(RedisConnection connection) throws DataAccessException { return connection.incr("用户id".getBytes()); } }); int count = Integer.parseInt(countObj.toString()); //expire:设置key的时间,第三个参数是时间的单位,这里设置为"秒" if(count == 1) redisTemplate.expire("用户id",30, TimeUnit.SECONDS); if(count <= 5) System.out.println("第"+count+"次登录"+"================登陆成功"); else System.out.println("第"+count+"次登录"+"================超过五次"); }
- redis面试题汇总
- redis面试题汇总
- JAVA面试题汇总
- 面试题汇总
- C++面试题汇总
- jsp面试题汇总
- c++面试题汇总
- javascript面试题汇总
- EJB面试题汇总
- PHP面试题汇总
- PHP面试题汇总
- php面试题汇总
- 面试题的汇总
- C++面试题汇总
- SSH面试题汇总
- JAVA面试题汇总
- .Net面试题汇总
- struts面试题汇总
- ViewDidLoad中使用NSLayoutConstraint产生的问题解决
- WebRTC音频
- I - Misha and Changing Handles CodeForces - 501B
- 八种消除沟通上的不良习惯地的方法
- hdu1045【dfs】
- redis面试题汇总
- java中类中创建本类实例的疑问
- 稳定婚姻问题(The Stable Marriage Problem)
- 获取Spring中bean对象或在Spring初始化完成之后使用Spring中bean对象
- OpenWRT基本知识
- Debian时间同步
- Android 跳转判断是否登录的进一步封装
- PopupWindow设置底部,兼容7.0 与 在华为等带虚拟控制栏被遮挡
- 机器学习基础算法小结