redis数据库相关问题

redis数据库相关问题


当前位置: Home » material » Auxia » redis数据库相关问题

1.什么是redis?
Redis是基于内存的高性能key-value数据库
2.redis的特点:
①性能上每秒可以处理超过10万次读写操作
②支持多种数据结构,value的最大限制是1GB
③可以实现很多有用功能,如用list来做FIFO双向链表,实现高性能消息队列服务,用set可以做高性能tag系统等
④主要缺点是受物理内存限制,不能作用海量数据高性能读写,主要是用局限在较小的数据量高性能操作和运算
3.使用redis好处?
①速度快,因为数据存在内存中
②支持丰富数据类型(set,list,zset,hash,string)
③支持事务,操作都是原子操作
④丰富的特性:可用于缓存,消息,按key设置过期时间,过期自动删除
4.redis常见问题?
①Master写内存快照,save命令调度rdbSave函数,会阻塞主线程工作,当快照比较大时对性能也有影响,Master最好不要写内存快照
②Master  AOF持久化,如果不重写AOF文件,这个持久化方式对性能影响最小,但同AOF文件会不断增加,文件过大会影响Master重启恢复速度(如果数据比较关键,某个Slave开启AOF备份数据,每秒同步一次)
③Master调用bgrewriteAOF重写AOF文件,会占大量CPU和内存资源,导致服务load过高,会出现服务器暂停
④Redis主从复制性能问题,为了保证速度和稳定性,Slave和Master最好在同一局域网内
5.Msql里有2000w数据,Redis中只存20w数据,如何保证redis中的数据都是热点数据?
①从已设置过期时间数据集中挑选最近最少使用数据淘汰
②从已设置过期时间数据集中挑选将要过期数据淘汰
③从已设置过期时间数据集中任意选择数据淘汰
④从数据集中挑选最近最少使用数据淘汰
⑤从数据集中选择任意数据淘汰
⑥禁止驱逐数据
6.为什么redis把所有数据都放在内存中?
为了达到最快的读写速度将数据读到内存中,并通过异步方式将数据写入磁盘,所以具有速度快和持久化特性。
7.Redis是单进程单线程利用队列技术将并发访问变成串行访问
8.redis的并发竞争问题如何解决?
Redis为单进程单线程模式,采用队列模式将并发访问变为串行访问,没有锁的概念,对于多个客户端连接不存在竞争,但在jedis客户端队redis进行并发访问会发生连接超时,数据转化错误等问题都是客户端连接混乱造成。
解决方式:①客户端角度,为了保证客户端正常有序使用redis进行通信,对连接进行池化,同时对客户端读写redis采用锁
②服务器角度,用sentx实现锁
8.redis中事务实现特性?(MULTI/EXEC/DISCARD/WATCH)
①在事务中的所有命令都将会被串行化的顺序执行,事务执行期间,Redis不会再为其它客户端的请求提供任何服务
②Redis事务中如果有某一条命令执行失败,其后的命令仍然会被继续执行
③通过MULTI命令开启一个事务,将被视为事务之内的操作
④事务开启之前,如果客户端与服务器之间出现通讯故障并导致网络断开,其后所有待执行的语句都将不会被服务器执行如果网络中断事件是发生在客户端执行EXEC命令之后,那么该事务中的所有命令都会被服务器执行
⑤使用Append-Only模式时,Redis会通过调用系统函数write将该事务内的所有写操作在本次调用中全部写入磁盘,如果出现系统崩溃,此时只有部分写入,另外丢失
9.watch命令和基于cas锁?
在Redis的事务中,WATCH命令可用于提供CAS功能。假设我们通过WATCH命令在事务执行之前监控了多个Keys,倘若在WATCH之后有任何Key的值发生了变化,EXEC命令执行的事务都将被放弃,同时返回Null multi-bulk应答。
10.redis持久化方式?
快照、AOF、虚拟内存方式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值