Redis
在使用Redis时,有些细节必须了解,这样才能更好的指导程序员使用Redis做开发
Redis是单线程的
Redis业务逻辑是在一个线程中进行的。了解这点非常重要。
在使用Redis命令时,对于时间复杂度为O(n)的命令,心中需要有个警钟,这里n的规模会是多大。若应用场景中n的规模会很大,则把这个命令写进代码,对于Redis来说是个灾难。
Redis集群中的请求重定向
客户端向Redis集群中的某台redis请求数据时,若该台redis上没有这条数据,该redis会把这数据所在的redis地址返回给客户端。客户端需根据返回的地址,重新向该地址的redis请求数据。
因此对redis集群的查询可能会出现2次查询。不过也有些客户端封装的比较好,内部维护一个redis插槽对应表,属于Smart客户端。这种客户端绝大多数都是1次查询
Redis集群不支持跨机命令
由于数据是分散在多台redis上的,像keys、mget、mset、事务等命令,Redis集群支持是不完整的。使用这种命令要小心,除非你明确所有的数据都在同一台redis上
单台Redis的内存不是越大越好
redis的内存越大,redis在做持久化时需要消耗的资源会越多、时间会越长。一个合理的redis内存应该在3-6G即可
Redis集群中redis台数不是越多越好
redis集群内部做状态同步,在台数足够多时,会占不少带宽。一般redis台数在1000左右