redis数据类型,数据维护

redis数据类型

  1. string
    string 是 redis 最基本的类型,一个 key 对应一个 value。string类型是二进制安全 的。意思是 redis 的 string 可以包含任何数据。比如jpg图片或者序列化的对象。
    string 类型是 Redis 最基本的数据类型,string 类型的值最大能存储 512MB。
  2. list
    Redis 列表是简单的字符串列表,按照插入顺序排序。你可以添加一个元素到列表的头部(左边)或者尾部(右边)。

可以通过list存储一些列表型的数据结构,类似粉丝列表了、文章的评论列表了之类的东西

可以通过lrange命令,就是从某个元素开始读取多少个元素,可以基于list实现分页查询,这个很棒的一个功能,基于redis实现简单的高性能分页,可以做类似微博那种下拉不断分页的东西,性能高
3. hash
Redis hash 是一个键值(key=>value)对集合。

Redis hash 是一个 string 类型的 field 和 value的映射表,hash特别适合用于存储 对象。 你可以直接仅仅修改某一个个对象中的某个字段的值
4. set
Redis的Set是string类型的无序集合。集合是通过哈希表实现的,所以添加,删除,查找的复杂度都是O(1)。无序集合,自动去重
5. zset
Redis zset 和 set 一样也是string类型元素的集合,且不允许重复的成员。不同的是每个元素都会关联一个double类型的分数。redis正是通过分数来为集合中的成员进行从小到大的排序。
zset的成员是唯一的,但分数(score)却可以重复。

redis数据维护

  1. 定期删除
    redis默认是每隔100ms就随机抽取一些设置了过期时间的key,检查其是否过期,如果过期就删除。这里可不是每隔100ms就遍历所有的设置过期时间的key,cpu负载会很高的,大部分消耗在检查过期key上。

  2. 惰性删除
    在获取某个key的时候,redis会检查一下,这个key如果设置了过期时间那么是否过期,如果过期了此时就会删除,不会给你返回任何东西。

  3. 内存淘汰

  • noeviction:当内存不足以容纳新写入数据时,新写入操作会报错
  • allkeys-lru:当内存不足以容纳新写入数据时,在键空间中,移除最近最少使用的key(这个是最常用的)
  • allkeys-random:当内存不足以容纳新写入数据时,在键空间中,随机移除某个key,(这个一般没人用)
  • volatile-lru:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,移除最近最少使用的key(这个一般不太合适)
  • volatile-random:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,随机移除某个key
  • volatile-ttl:当内存不足以容纳新写入数据时,在设置了过期时间的键空间中,有更早过期时间的key优先移除
  1. 数据在内存的过程
    如果key设置了过期时间先经过定期删除,如果没有选到过期的key,那么会走惰性删除,如果此时内存消耗比较大触发了redis的内存淘汰机制就会根据淘汰策略进行key的淘汰

你可能感兴趣的:(redis)