一.Redis集群会有写操作丢失吗?为什么?

Redis并不能保证数据的强一致性,这意味着在实际中集群在特点条件下可能会丢失写操作。

二.Redis集群之间是如何复制的?

异步复制。

三.Redis最大节点个数是多少?

16384个。

四.Redis集群如何选择数据库?

Redis集群目前无法做数据库的选择,默认在0数据库。

五.怎么测试Redis的连通性?

使用ping命令。

六.怎么理解Redis事务?

1.事务是一个单独的隔离操作:事务中的所有命令都会序列化、按顺序地执行。事务在执行的过程中,不会被其他客户端发来的命令请求所打断。

2.事务是一个原子操作:事务中的命令要么全部被执行,要么全部都不执行。

七.Redis事务相关的命令有哪几个?

Multi、Exec、DISCARD、WATCH。

八.Redis key 的过期时间和永久有效分别怎么设置?

EXPIRE 和 PERSIST 命令。

九.Redis如何做内存优化?

尽可能使用散列表(hashes),散列表(是说散列表里面存储的数少)使用的内存非常小,所以你应该尽可能的将你的数据模型抽象到一个散列表里面。

比如你的web系统中有个用户对象,不要为这个用户的名称,姓氏,邮箱,密码设置单独的key,而是应该把这个用户的所有信息存在到一张散列表里面。

十.Redis回收是如何工作的?

一个客户端运行了新的命令,添加了新的数据。Redis检查内存使用情况,如果大于maxMemory的限制,则根据设定好的策略进行回收。一个新的命令被执行,等等。

所有我们不断地穿越内存限制的边界,通过不断达到边界然后不断地回收回到边界以下。如果一个命令的结果导致大量内存被使用(例如很大的集合的交集保存到一个新的键),不用多久内存限制就会被这个内存使用量超越。