redis相关问题
什么是Redis?简述它的优缺点?
- Redis本质上是一个Key-Value类型的内存数据库,很像memcached,整个数据库统统加载在内存当中
进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。
- 因为是纯内存操作,Redis的性能非常出色,每秒可以处理超过 10万次读写操作,
是已知性能最快的Key-Value DB。
- Redis的出色之处不仅仅是性能,Redis最大的魅力是支持保存多种数据结构,此外单个value的最大限制是1GB,
不像 memcached只能保存1MB的数据,因此Redis可以用来实现很多有用的功能。
- 比方说用他的List来做FIFO双向链表,实现一个轻量级的高性 能消息队列服务,
用他的Set可以做高性能的tag系统等等。
- 另外Redis也可以对存入的Key-Value设置expire时间,因此也可以被当作一 个功能加强版的memcached来用。
- Redis的主要缺点是数据库容量受到物理内存的限制,不能用作海量数据的高性能读写,因此Redis适合的
场景主要局限在较小数据量的高性能操作和运算上。
RDB与AOF的区别
RDB 保存的是数据本身,AOF保存的是命令。
Redis集群
主服务器挂掉,从服务器依然是slave的状态
从服务器挂掉,重启后变成master状态,解决此现象需使用哨兵模式
Redis集群会有写操作丢失吗?为什么?
Redis并不能保证数据的强一致性,这意味这在实际中集群在特定的条件下可能会丢失写操作。
Redis集群之间是如何复制的?
异步复制。
Redis集群如何选择数据库?
Redis集群目前无法做数据库选择,默认在0数据库。
怎么测试Redis的连通性?
ping,返回pong。
为什么Redis需要把所有数据放到内存中?
Redis为了达到最快的读写速度将数据都读到内存中,并通过异步的方式将数据写入磁盘。
所以redis具有快速和数据持久化的特征。如果不将数据放在内存中,磁盘I/O速度为严重影响redis的性能。
在内存越来越便宜的今天,redis将会越来越受欢迎。 如果设置了最大使用的内存,则数据已有记录
数达到内存限值后不能继续插入新值。
怎么理解Redis事务?
- 事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,
不会被其他客户端发送来的命令请求所打断。
- 事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。
Redis事务相关的命令有哪几个?
MULTI、EXEC、DISCARD、WATCH
Redis如何做内存优化?
- 尽可能使用散列表(hashes),散列表(是说散列表里面存储的数少)使用的内存非常小,
所以你应该尽可能的将你的数据模型抽象到一个散列表里面。
- 比如你的web系统中有一个用户对象,不要为这个用户的名称,姓氏,邮箱,密码设置单独的key,
而是应该把这个用户的所有信息存储到一张散列表里面。