redis面试题总结

转自: 
http://blog.csdn.net/zdp072/article/details/50991116 
http://www.100mian.com/mianshi/dba/37381.html

1. 使用redis有哪些好处?

(1) 速度快,因为数据存在内存中,类似于HashMap,HashMap的优势就是查找和操作的时间复杂度都是O(1) 
(2) 支持丰富数据类型,支持string,list,set,sorted set,hash 
(3) 支持事务,操作都是原子性,所谓的原子性就是对数据的更改要么全部执行,要么全部不执行 
(4) 丰富的特性:可用于缓存,消息,按key设置过期时间,过期后将会自动删除

2. redis相比memcached有哪些优势?

(1) memcached所有的值均是简单的字符串,Redis作为其替代者,支持更为丰富的数据类型 
(2) redis的速度比memcached快很多 
(3) redis可以持久化其数据

3. Memcache与Redis的区别都有哪些?

1)、存储方式 
Memecache把数据全部存在内存之中,断电后会挂掉,数据不能超过内存大小。 
Redis有部份存在硬盘上,这样能保证数据的持久性。 
2)、数据支持类型 
Memcache对数据类型支持相对简单。 
Redis有复杂的数据类型。 
3)、使用底层模型不同 
它们之间底层实现方式 以及与客户端之间通信的应用协议不一样。 
Redis直接自己构建了VM 机制 ,因为一般的系统调用系统函数的话,会浪费一定的时间去移动和请求。

4. redis常见性能问题和解决方案:

(1) Master最好不要做任何持久化工作,如RDB内存快照和AOF日志文件 
(2) 如果数据比较重要,某个Slave开启AOF备份数据,策略设置为每秒同步一次 
(3) 为了主从复制的速度和连接的稳定性,Master和Slave最好在同一个局域网内 
(4) 尽量避免在压力很大的主库上增加从库 
(5) 主从复制不要用图状结构,用单向链表结构更为稳定,即:Master <- Slave1 <- Slave2 <- Slave3… 
这样的结构方便解决单点故障问题,实现Slave对Master的替换。如果Master挂了,可以立刻启用Slave1做Master,其他不变。

5. 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次。具体登录函数或功能用空函数即可,不用详细写出。

用列表实现:列表中每个元素代表登陆时间,只要最后的第5次登陆时间和现在时间差不超过1小时就禁止登陆.用Python写的代码如下:

#!/usr/bin/env python3
import redis  
import sys  
import time

r = redis.StrictRedis(host=’127.0.0.1′, port=6379, db=0)  
try:  
    id = sys.argv[1]
except:  
    print(‘input argument error’)
    sys.exit(0)

if r.llen(id) >= 5 and time.time() – float(r.lindex(id, 4)) <= 3600:  
    print(“you are forbidden logining”)
else:  
    print(‘you are allowed to login’)
    r.lpush(id, time.time())
    # login_func()
  • 4
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值