2020PHP面试-Redis篇
一、Redis 数据类型 1. string 字符型。 2.hash hash 结构化的对象。 key不可重复 3.list 队列 lpush rpop lpop rpush 4. set 集合 value不可重复 5. zset 有序集合 set的基础上加了分数(排序)。 二、Redis事务 1.multi (事务启动) 、 exec (事务执行) 、 watch(监视某几个键有没有被别的客户端进行修改,一旦有任何的键被修改过,exec的时候都会直接返回一个nil,不执行事务)、discard(立刻取消事务,清空事务队列中所有命令)。 2.redis数据库里会存在一个watched_keys字典,这个字典里 key为被监视的key,值为一个链表,链表里记录着监视该key的客户端,一旦被监视的key发生了修改,该key对应的客户端会打开REDIS_DIRTY_CAS标识,代表该客户端的事务安全性被破坏了。这就是watch命令的实现。 3.为什么redis的事务不支持回滚? 因为这种复杂的功能和redis的设计理念不符。并且redis事务中出错原因通常是编程错误,只在开发环境出现,生产环境可避免。 4.redis事务中命令执行出错的结果? redis并不会中断事务的执行,会继续执行后续的操作命令。exec的时候,出错的命令会被标识出来,并给出原因。 5.