Redis学习笔记(一)

  • NoSQL
    • 泛指非关系型数据库,作为关系型数据库的补充
    • 作用:应对海量用户和海量数据前提下的数据处理问题
    • 特征
      • 可扩容、可伸缩
      • 大数据量下高性能
      • 灵活的数据模型
      • 高可用
    • 常见的NoSQL数据库
      • Redis
      • memcache
      • HBase
      • MongoDB
  • Redis学习笔记(一)_第1张图片
  • Redis
    • 一种高性能键值对数据库
    • 特征
      • 数据间没有必然的关联关系
      • 内部采用单线程机制进行工作
      • 高性能
      • 多数据类型支持
      • 持久化支持,可以进行数据灾难恢复
    • 应用
      • 为热点数据加速查询
      • 任务队列
      • 即时信息查询
      • 时效性信息控制
      • 分布式数据共享
      • 消息队列
      • 分布式锁
    • 基本操作
      • 信息添加:set key value
      • 信息查询(不存在为null):get key
      • 清楚屏幕信息:clear
      • 帮助
        • help 命令名称
        • help @组名
      • 退出
        • quit
        • exit
        • [esc键]
    • 数据类型
      • Redis学习笔记(一)_第2张图片
      • redis自身是一个map,其中所有的数据都是采用key:value形式存储
      • 数据类型指的是存储数据的类型
      • string
        • 存储的是单个数据

        • 存储数据的格式:一个存储空间保存一个数据

        • 存储内容:通常使用字符串,如果字符串以整数形式展示,可以作为数字操作使用

        • 基本操作

          • 添加/修改数据:set key value
          • 获取数据:get key
          • 删除数据 del key
          • 添加修改多个数据:mset key1 value1 key2 value2 …
          • 获取多个数据:mget key1 key2 …
          • 获取数据字符个数:strlen key
          • 追加信息到原始信息后部:append key value
          • 设置数值数据增加指定范围的值
            • incr key
            • incrby key increment
            • incrbyfloat key increment
          • 设置数值数据减少指定范围的值
            • decr key
            • decrby key increment
          • 设置数据具有指定的生命周期
            • setax key seconds value
            • psetax key milliseconds value
          • Redis学习笔记(一)_第3张图片
        • 应用场景

          • Redis学习笔记(一)_第4张图片
        • Redis学习笔记(一)_第5张图片

    • hash
      • 新的存储需求:对一系列存储的数据进行编组
      • 需要的存储结构:一个存储空间保存多个键值对数据
      • hash类型:底层使用哈希表实现数据存储
      • hash存储结构优化
        • 如果field数量较少,存储结构优化成类数组结构
        • 如果field数量较多,存储结构使用HashMap结构
      • 基本操作
        • 添加/修改数据
          • hset key field value
        • 获取数据
          • hget key field
          • hgetall key
        • 删除数据
          • hdel key field1 (field2)
        • 添加/修改多个数据
          • hmset key field1 value1 field2 value2 …
        • 获取多个数据
          • hmget key field1 field2 …
        • 获取哈希表中字段的数量
          • hlen key
        • 获取哈希表中是否存在指定的字段
          • hexists key field
        • 获取哈希表中所有字段名
          • hkeys key
        • 获取哈希表中所有字段值
          • hvals key
        • 设置指定字段数据数值增加指定范围的值
          • hincrby key field increment
          • hincrbyfloat key field increment
        • 为不存在的字段赋值:
          • hsetnx key field value
      • 注意
        • hash类型下value只能存储字符串
        • 如果数据未获取到,值为nil
        • 每个hash可以存储2^32-1个键值对
        • hash类型十分贴近对象的数据存储形式,并且可以灵活删除对象属性,但hash设计初衷不是为了存储大量对象而设计的,不可滥用,更不可以将hash作为对象列表使用
        • hgetall可以获取全部属性,如果内部field过多,整体遍历数据效率就会很低
      • 应用场景
        • 购物车
        • 抢购
    • list
      • 存储多个数据,通过数据体现进入顺序
      • 底层使用双向链表存储结构
      • 基本操作
        • 添加/修改数据
          • lpush key value1 [value2] …
          • rpush key value1 [value2]…
        • 获取数据
          • lrange key start stop
          • lindex key index
          • llen key
        • 获取并移除数据
          • lpop key
          • rpop key
        • 规定时间内获取并移除数据
          • blpop key1 [key2] timeout
          • brpop key1 [key2] timeout
        • 移除指定数据
          • lrem key count value
      • 注意
        • list保存的数据都是string类型的
        • 具有索引概念,但通常以队列或栈的形式操作的
        • 获取全部数据操作结束,索引设置为-1
        • 可以对数据进行分页操作
      • 应用场景
        • 具有顺序的特征对信息进行管理
        • 使用队列模型解决多路信息汇总合并的问题
        • 使用栈模型解决最新消息的问题

你可能感兴趣的:(java,redis,学习)