Redis入门

Redis入门

NoSQL的诞生

  • Not Only SQL
  1. 高并发读写问题
  2. 海量数据的高效率存储与访问问题
  3. 高拓展性和高可用性问题

NoSQL分类

  1. 键值存储:能够快速查询,但是缺少结构化
  2. 列存储:能快速查找,但是功能太局限了
  3. 文档数据库:数据结构要求不严格
  4. 图形数据库:一般社交网络使用较多

NoSQL的特点

  1. 易拓展
  2. 大数据量、高性能
  3. 灵活的数据结构
  4. 高可用

Redis的诞生

  • 高性能键值对数据库,支持键值对数据结构

Redis的应用场景

  1. 缓存
  2. 任务队列
  3. 网站访问统计
  4. 数据过去处理
  5. 分布式集群架构中session的分离

Redis的数据结构

String类型

  • 存储方式
    • 二进制形式,存入和获取的数据相同
    • 最多可容纳的数据长度是512M
  • 命令
    • 赋值命令:set key value
    • 取值命令:get key
    • 删除命令:del key
    • 数值增减:incr key/decr key
    • 拓展命令:
      • incrby key increment //增加increment
      • decrby key decrement //减少decrement
      • append key appendence //追加

Hash类型

  • 存储方式
    • String Key和String Value的map容器
    • 每个Hash可以存储4294967295个键值对
  • 命令
    • 赋值命令:
      • hset map key value
      • hmset map key value [key value]
    • 取值命令
      • hget map key
      • hmget map key [key]
      • hgetall map
    • 删除命令
      • hdel map key [key]
      • del map
    • 增减数值
      • hincrby map key increment
      • hdecrby map key decrement
    • 拓展命令
      • hexists map key
      • hlen map
      • hkeys map
      • hvals map

List类型

  • 存储方式
    • ArrayList式List
    • LinkedList式List
  • 命令
    • 两端添加
      • lpush list value [value]//从左边添加
      • rpush list value [value]//从右边添加
    • 遍历列表
      • lrange list start end
    • 两端弹出
      • lpop list
      • rpop list
    • 拓展命令
      • llen list
      • lset list index value
      • linsert list before|after value newvalue
      • rpoplpush list1 list2

Set类型

  • 存储方式
    • 没有排序的,不允许出现重复元素的List
  • 命令
    • 增删命令
      • sadd set value [value]
      • srem set value [value]
    • 获取元素命令
      • smembers set
      • sismember set value //判断是否为集合的元素
    • 交并差运算命令
      • sdiff set1 set2 //求差集运算
      • sinter set1 set2 //求交集运算
      • sunion set1 set2 //求并集运算
    • 拓展命令
      • scard set //求集合元素个数
      • srandmember set //随机返回集合中的一个元素
      • sdiffstore newset set1 set2
      • sinterstore newset set1 set2
      • sunionstore newset set1 set2
  • 适用场景
    • 跟踪一些唯一性的数据
    • 用于维护数据对象之间的关系

Sorted Set类型

  • 存储方式
    • 成员位置有排序的Set
  • 命令
    • 增删命令
      • zadd set score key [score key] 
      • zrem set key 
      • zremrangebyrank set start end //删除排名范围内
    • 获取元素
      • zscore set key //返回得分
      • zcard set //返回元素个数
    • 范围查询
      • zrange set start end withscores
      • zrevrange set start end
  • 适用场景
    • 在线游戏排名
    • 构建索引数据

Redis中Keys的基本操作

  • keys * //查询所有的键
  • del key
  • exists key 
  • get key
  • rename key newkey
  • expire key time //设置过期时间
  • ttl key //查看还有多久过期
  • type key //查看key种类
  • flushdb //清空当前数据库

Redis特性

  • 多数据库
    • 共16个数据库,默认连接第0号数据库
    • select 数据库号
    • move key 数据库号//将当前数据库中的某个key迁移到新数据库
  • 事务
    • multi:开启事务
    • exec:提交事务
    • discard:回滚==rollback

关于Redis持久化的问题

  • 将数据从内存同步到硬盘上
  • 方式
    • RDB方式:在指定时间内,将数据写入磁盘一次
      • 优势
        • 备份:数据库只包含一个文件
        • 性能最大化:极大的避免了服务器执行IO操作
        • 启动效率更好
      • 劣势
        • 难以保证数据的高可用性
        • 当服务器数据集很大时,有可能会导致服务器停止几百毫秒
    • AOF方式:以日志的形式,记录服务器的变化
      • 优势
        • 更高的数据安全性
        • 对日志的写入采用追加模式,即使宕机,影响也不大
        • 日志过大时,Redis可以自动重启重写机制
      • 劣势
        • AOF文件要比RDB文件更大一些
        • 根据同步策略不同,AOF在效率上往往低于RDB

小结

Redis入门的一些小知识,理解很重要,但是更重要的是要去动手操作,去敲打这些命令。了解了这些之后,接下来如何使用程序去操作Redis就是核心了!

posted @ 2019-04-18 15:11  まだまだだわ  阅读(86)  评论(0编辑  收藏  举报