大数据量的Redis数据库为什么不能用KEYS命令

Redis, 数据库 ,
答案 因为KEYS有了能一次性遍历并返回所有的键值对,对于数据量大的Redis数据库,这个命令就会直接阻塞其他命令。 替代方案是:用SCAN命令。 解析 众所周知,Redis 是单线程程序,是按照顺序执行指令的。 如果说我们现在正在执行 keys 命令,那么其它指令必须等到当前的 keys 指令执行完了才可…

Redis持久化方式有哪几种?

Redis, 数据库
答案 Redis有两种持久化的方式: 快照方式(Snapshotting):生成RDB文件,RDB持久化方式会在一个特定的间隔保存那个时间点的一个数据快照。 追加文件方式(Append-only file):生成AOF文件,AOF持久化方式则会记录每一个服务器收到的写操作。在服务启动时,这些记录的操作会逐条执行从而重…

MySQL 索引最左前缀原则

MySQL ,
答案 查询方式 能否用上索引 --------------------------------------+---------------------------- select * from users where a=1 and b=2 能用上a、b select * from users where b=2 and a=1 能用上a、b(有MySQL查询优化器) select * from users where a=2 and c=1 能用上 a select * f…

MySQL INT和CHAR隐式类型转换需要注意什么?

MySQL
答案 主要需要记住下面两点: 当查询字段是INT类型,如果查询条件为CHAR,将查询条件转换为INT,如果是字符串前导都是数字,将截取前导数字用来比较,如果没有前导数字,则转换为0。 当查询字段是CHAR/VARCHAR类型,如果查询条件为INT,将查询字段为换为INT再进行比较,可能会造成全表扫描。 …

Memcache 缓存命中率如何计算?

Memcache ,
答案 命中率结算公式: 缓存命中率 = get_hits/cmd_get * 100% 解析 通过 telnet 连接上 memcache        telnet memcache.host 11211 stats 查询结果如下 STAT pid 17214 STAT uptime 6632123 STAT time 1427941488 STAT version 1.2.6 STAT pointer_size 64 STAT rusage_user 0.349946 STAT…

Redis 主从如何同步(复制)数据?

Redis
答案 无论是初次连接还是重新连接,当建立一个从服务器时,从服务器都将给主服务器发送一个 SYNC 命令。 接到 SYNC 命令的主服务器将开始执行 BGSAVE,并在保存操作执行期间,将所有新执行的命令都保存到一个缓冲区里面,当 BGSAVE 执行完毕后,主服务器将执行保存操作所得到的 .rdb 文件发送…