2020.5.30 Redis Day1

发布于 2020-05-29  37 次阅读


1.复习内容

2.灵感代办

3.学习内容

  • Redis的特点

    • 开源,C语言编写,高效,基于内存,可以持久化
    • 基于key和value来存储数据,属于nosql数据库
    • 支持:字符串strings,散列hashed,列表lists,集合sets,有序集合,sortedsets等等
  • Redis高级功能

    • 持久化:将内存中的数据保存在硬盘中,方便数据备份恢复
    • 发布订阅功能,可以将消息分发给多个客户端,多用于广播系统
    • 过期key:设定数据过期时间,过期自动销毁
    • 事务功能:原子执行的多个操作
    • 主从复制
    • Sentinel哨兵
  • Redis远程连接的设置

    • 关闭 bind 127.0.0.1 ::1 # 绑定本地
    • 将yes改为no protected-mode yes
    • 设一下验证密码 requirepass
    • 一定要记得,重启服务
  • Redis的应用场景

    • 在服务端和客户端之间,可以方便用户快速读取数据,如果没有数据可以在从服务器拿数据
    • 经常访问,需要实时访问的数据,一般都使用redis存放
  • Redis和Mysql的区别

    • 一个是非关系型,一个是关系型模型
  • Redis设置数据过期的方式

    • 1.创建key时候指定ex
    • 2.expire key time 这个是秒
    • 3.pexpire key time 这个是毫秒
    • 4.ttl key 查看过期时间
    • 5.persist key 取消过期设置
  • Redis通用命令

    • select 0 选定一个库
    • keys * 查看所有的key,可以是组合匹配
    • TYPE key 查看key的类型
    • exists key 查看key是否存在
    • del key 删除key
    • rename key newkey 重命名
    • getset key value 如果不存在 就赋值
    • flushdb 清除当前库的所有数据
    • flushall 清除所有库的数据
  • Redis数据类型

    • 字符串数据类型

      • key要长度适中,能懂,不啰嗦
      • 字符串类型的值,最多能存储512M
      • Redis在python中获取的都是字节串
      • 在redis中,字符串,数字,都会转为字符串
      • 命名规范:层级命名
        • name::wangjie ,age::20
      • 常用命令:
        • set,setnx (有则不更改,无则创建),get,mset,mget,strlen,
        • 数字操作:incr,decr,
        • ex参数是设置key的有效期
      • 扩展命令
        • append,在后面追加字符串
        • setrange key index value,设置字符串索引位置的值
        • getrange key start stop,获取字符串索引位置
        • incrby key step,decrby key step 指定步长的增长
    • 列表数据类型 List

      • 特点:
        • 列表分为开头和结尾,开头是left,结尾是right
        • 列表中的元素都要是字符串
        • 列表可以在开头,结尾删除元素,中间删除效率不高
        • 元素可以重复
        • 存放元素个数很多 2的32次方-1
        • 索引用法跟python差不多
      • 方法:
        • 插入
          • LPUSH / RPUSH key *value,左右插入值,可以插入多个
        • 查看,设置元素
          • 查看LRANGE key start stop
          • 获取LINDEX key value
          • 设置LSET key index value
          • 获取列表长度 LLEN key
        • 弹出元素
          • LPOP key 头弹出
          • RPOP key 尾弹出
          • RPOPLPUSH source destination 一个列表弹出,一个列表接收
        • 移除指定元素
          • LREM key count value(删除|count|个元素)
            • count 是负数,则从right 尾开始
            • count 是正数,则从left 头开始
            • count 是零,所有都删除
          • LTRIM 除指定范围外元素全部删除
            • LTRIM key start stop
        • 插入元素
          • LINSERT
            • LINSERT key BEFORE/AFTER value newvalue
            • 在一个值的前面或者后面插入元素,如果没有value 则不操作
        • 阻塞弹出(BLPOP|BRPOP)
          • 如果有key则弹出,没有则阻塞等待
          • BLPOP / BRPOP key timeout

4.扩展延伸知识

  • 排序算法复杂度

    • image-20200530202621939
  • python 切片的注意事项

    • 切片就是生成了一个新的列表
    • 切片选择的是列表中的地址,也就是浅拷贝,两个列表指向的都是一个地址内的值,改动一个另一个也会变
    • 列表2=列表1 ,这样是将列表的地址赋值给列表
    • [:1] 这样返回的是一个列表,因为是范围,即使就选择一个元素
  • python restful设计

    • 大型项目中,使用restful不需要很深厚的开发功底

    • 资源多用

      • /user 可以获取所有数据、最好添加分页,一次性返回所有信心,数据量太大
      • /user/56 获取指定数据
    • 资源的表示

      • /users 用名词,而不是动词
      • 更常见的是使用复数形式命名 也就是加s
      • 更简洁,url数目更少
    • 用HTTP方法操作资源

      • 使用:GET,PUT,DELETE,POST等等来操作资源
    • 可选的,复杂的,使用查询字符串?

      • /users?name=joke&age=10
    • 使用HTTP状态码

      • 1xx,2xx,3xx,4xx,5xx
    • 返回有用的错误码

      • 错误码有所提示
    • 小驼峰命名法

      • json中使用小驼峰命名法
      • 不要使用下划线_来连接
    • url中可以添加版本号

      • 要加版本号,方便以后可以修改

5.知识内容个人梳理

6.今天都复习了之前的什么内容


Ares个人进阶之路