redis-基本知识

版权声明:取之网络,分享之网络. https://blog.csdn.net/qq_37751454/article/details/84245528

1.数据存储

     数据保存在内存,这使得redis的访问速度非常快;

     可扩展,通过主从复制,分片。

2.数据结构

     string,list,set,zset,hash

3.常用命令

     keys*:查找所有键   

     flushall:删除所有键

4.redis事务

   通过multi开启事务,然后将执行的命令加入队列,最后使用EXEC执行加入队列中的命令。

        有两种错误,1。语法错误2.运行时错误(如用操作列表的命令执行string类型的命令)

        若是语法错误,事务将会回滚;若是运行时错误,自动略过错误命令,其他命令正常。

    discard清除先前在事务中放入队列的指令;watch监控键,不同客户端修改监控键事务将终止。

5.pub/sub 

    Redis的支持发送/订阅消息,通过pub将消息发送到管道(channel),由sub订阅管道接收消息。

6.持久化 

 快照持久化:

           bgsave将会调用fork创建一个子进程处理持久化数据,父进程继续处理请求命令

           save接收save命令后,将快照创建完毕后,才处理其他命令

           配置文件save 60 1000,自动调用bgsave
aof持久化:
     AOF持久化的实质就是将被执行的命令写到AOF文件的末尾,以此来记录数据发生的变化。
     因此只要执行一次AOF文件中的命令就可以恢复AOF文件所记录的数据集了。
   调用对文件的写入,将需要写入的文件内容存储到缓冲区,系统在某个时候将缓冲区信息写入硬盘

   问题一:为什么访问查询那么快

      1.完全基于内存,绝大部分操作纯粹内存操作;

      2.单线程,避免了不必要的上下分切换和竞争条件,不用考虑各种锁操作,加锁释放锁;

      3.多路复用,非阻塞io

   问题二:缓存雪崩

      1.不同的key设置不同的过期时间

      2.通过加锁和队列控制读数据库和写缓存的线程数量

      3.二级缓存

   问题三:缓存击穿

       1.对key一定不存在的数据过滤

       2.对没有数据key的也设值如null

   问题四:缓存一致性

       1.数据实时同步更新   

          修改数据库的同时,修改缓存,数据一致性比较强,数据同步没有延时

       2.数据准实时更新 

          使用多线程,MQ实现,数据同步有较短时间延时

       3.缓存失效机制

          对缓存数据设置失效时间,有一定的延时时间(设置的失效时间),可能存在缓存雪崩

       4.任务调度更新

          最终一致性,按一定的频率更新;

  个人搜索资料整理的,为了应对面试,也希望分享出来帮助大家。

  如有不对的地方非常希望能够指点一下, 由于写的较早,已忘记参考博客链接, 在此感谢,同时非常抱歉下次定会注意.

猜你喜欢

转载自blog.csdn.net/qq_37751454/article/details/84245528