redis

本文介绍了Redis中六种数据淘汰策略(volatile-lru,volatile-ttl,volatile-random,allkeys-lru,allkeys-random,no-enviction),以及根据数据分布选择策略的建议。同时提到了Redis的单线程模型及其在处理命令时的注意事项,以及6.0版本引入的多线程改进。
摘要由CSDN通过智能技术生成
数据淘汰策略

volatile-lru: 从已设置过期时间的数据集中挑选最近最少使用的数据淘汰

volatile-ttl: 从已设置过期时间的数据集中挑选将要过期的数据淘汰

volatile-random: 从已设置过期时间的数据集中任意选择数据淘汰

allkeys-lru: 从数据集中挑选最近最少使用的数据淘汰

allkeys-random: 从数据集中任意选择数据淘汰

no-enviction(驱逐): 禁止驱逐数据

注意这里的6种机制,volatile和allkeys规定了是对已设置过期时间的数据集淘汰数据还是从全部数据集淘汰数据,后面的lru、ttl以及random是三种不同的淘汰策略,再加上一种no-enviction永不回收的策略

使用策略规则:

1、 如果数据呈现幂律分布,也就是一部分数据访问频率高,一部分数据访问频率低,则使用allkeys-lru2、 如果数据呈现平等分布,也就是所有的数据访问频率都相同,则使用allkeys-random

三种数据淘汰策略:

ttl和random比较容易理解,实现也会比较简单。主要是Lru最近最少使用淘汰策略,设计上会对key 按失效时间排序,然后取最先失效的key进行淘汰

基本数据结构类型

五种基本类型:

  1. string(字符串)
  2. hash(哈希)
  3. list(列表)
  4. set(集合)
  5. zset(无序集合)

特殊数据类型

  1. Geospatial
  2. Hyperloglog
  3. Bitmap
redis单线程

        Redis是单线程模型的,而单线程避免了CPU不必要的上下文切换和竞争锁的消耗。也正因为是单线程,如果某个命令执行过长(如hgetall命令),会造成阻塞。Redis是面向快速执行场景的数据库。,所以要慎用如smembers和lrange、hgetall等命令。
        Redis 6.0 引入了多线程提速,它的执行命令操作内存的仍然是个单线程。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值