dtcms插件 Android防重复点击 reflection stack ansible laravel4 gtk Material UI erp系统源码 oracle查询所有数据库 js基本数据类型有哪些 mysql函数 python环境安装教程 python编程题 java基础教程 atq vnc客户端 自动喊话器 凯恩与林奇2下载 mac地址修改 无限视距 python电子书 cad特性匹配 jpg格式转换器 videoview 拍照姿势的摆法女 失心迷宫怎么打 qq浏览器手机 例程 mysql闪退 python求平均值 分解机耐久度 android应用案例开发大全 发条天赋 百小度 苹果手机怎么卸载软件 c4dR18 find用法 定时播音系统 辞海电子版
当前位置: 首页 > 学习教程  > 编程语言

关于Redis常见问题

2020/11/4 14:47:55 文章标签:

1.Redis数据类型 Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。…

1.Redis数据类型

Redis支持五种数据类型:string(字符串),hash(哈希),list(列表),set(集合)及zset(sorted set:有序集合)。

 

2.什么是热key?热key问题如何解决?

热key问题就是,突然有几十万的请求去访问redis上的某个特定key,那么这样会造成流量过于集中,达到物理网卡上限,从而导致这台redis的服务器宕机引发雪崩。

针对热key的解决方案:

1.提前把热key打散到不同的服务器,降低压力

2.加入二级缓存,提前加载热key数据到内存中,如果redis宕机,走内存查询

 

3.Redis的过期策略有哪些?

1)惰性删除

惰性删除指的是当我们查询key的时候才对key进行检测,如果已经达到过期时间,则删除。显然,他有一个缺点就是如果这些过期的key没有被访问,那么他就一直无法被删除,而且一直占用内存。

2)定期删除

定期删除指的是redis每隔一段时间对数据库做一次检查,删除里面的过期key。由于不可能对所有key去做轮询来删除,所以redis会每次随机取一些key去做检查和删除。

 

如果惰性+定期都没有删除过期的key怎么办?

假设redis每次定期随机查询key的时候没有删掉,这些key也没有做查询的话,就会导致这些key一直保存在redis里面无法被删除,这时候就会走到redis的内存淘汰机制。

  1. volatile-lru:从已设置过期时间的key中,移出最近最少使用的key进行淘汰
  2. volatile-ttl:从已设置过期时间的key中,移出将要过期的key
  3. volatile-random:从已设置过期时间的key中随机选择key淘汰
  4. allkeys-lru:从key中选择最近最少使用的进行淘汰
  5. allkeys-random:从key中随机选择key进行淘汰
  6. noeviction:当内存达到阈值的时候,新写入操作报错

 

4.Redis的事务机制

redis通过MULTI、EXEC、WATCH等命令来实现事务机制,事务执行过程将一系列多个命令按照顺序一次性执行,并且在执行期间,事务不会被中断,也不会去执行客户端的其他请求,直到所有命令执行完毕。事务的执行过程如下:

  1. 服务端收到客户端请求,事务以MULTI开始
  2. 如果客户端正处于事务状态,则会把事务放入队列同时返回给客户端QUEUED,反之则直接执行这个命令
  3. 当收到客户端EXEC命令时,WATCH命令监视整个事务中的key是否有被修改,如果有则返回空回复到客户端表示失败,否则redis会遍历整个事务队列,执行队列中保存的所有命令,最后返回结果给客户端

WATCH的机制本身是一个CAS的机制,被监视的key会被保存到一个链表中,如果某个key被修改,那么REDIS_DIRTY_CAS标志将会被打开,这时服务器会拒绝执行事务。

 


本文链接: http://www.dtmao.cc/news_show_350206.shtml

附件下载

相关教程

    暂无相关的数据...

共有条评论 网友评论

验证码: 看不清楚?