redis

Redis是一种支持key-value等多种数据结构的存储系统。可用于缓存,事件发布或订阅,高速队列等场景。支持网络,提供字符串,哈希,列表,队列,集合结构直接存取,基于内存,可持久化。

基础数据类型

对于redis来说主要有 五种基础数据类型,所有的key 也就是键都是字字符串,值可以有 字符串 列表 集合 有序列表 哈希

img

  • 字符串

    一个键对应一个值

    1
    set del get incr decr incrby
  • 列表(双端列表)

    1
    rpush rpop lpush lpop lrange 

    使用列表的技巧

    • lpush+lpop=Stack(栈)
    • lpush+rpop=Queue(队列)
    • lpush+ltrim=Capped Collection(有限集合)
    • lpush+brpop=Message Queue(消息队列)
  • 集合

    集合通过哈希实现主要是添加和删除集合中的元素

    1
    sadd scard smembers sismember
  • 哈希

    哈希对于一个统一的键可以存储不同的元素对象 适合构造和存储对象

    1
    hset hget hgetall hdel
  • 有序集合

    有序集合对于实现将给定分值的成员添加到集合数据中间去,其主要实现是跳表和压缩链表

    1
    zadd zrem 

    在redis sorted sets里面当items内容大于64的时候同时使用了hash和skiplist两种设计实现。这也会为了排序和查找性能做的优化。 添加和删除都需要修改skiplist,所以复杂度为O(log(n))。 但是如果仅仅是查找元素的话可以直接使用hash,其复杂度为O(1) 其他的range操作复杂度一般为O(log(n)),当然如果是小于64的时候,因为是采用了ziplist的设计,其时间复杂度为O(n)

    主要用于进行排行榜的实现

  • 一些不是特别常见的特性

    • 基数统计
    • bitmap
    • geo 地理信息

img

简单动态字符串