• 第一章 redis学习的简单介绍和简单的功能使用


    有学习的小伙伴可以一起讨论有问题可以问我,微信 15321502296

    REDIS

    介绍:属于非关系型数据库,key values 是一种nosql 数据库

    redis概念:Redis基于key-value(键值对)的非关系型数据库,基于内存工作

    Redis在大并发量情况下内存使用率平缓(稳定,支持持久化)并且Redis还支持主从复制,memacahe的性能强读写量大.

    它支持的五种数据结构,非常重要。

    string(字符串) 内部编码    3 种raw int embsrt

    hash(哈希) 内部编码 hashtable ziplist

    list(列表) 内部编码 linkedlist ziplist

    set(集合) 内部编码 hashtable inset

    zset(有序集合) 内部编码 skiplist ziplist

    BITMAPS (位图)     GEO (地理信息的定位)

    redis 会将所有数据存放在内存中,所以读写速度惊人

    redis 会将内存的数据利用快照和日志形式保存在硬盘上。(持久化)

    redis 支持事务,发布订阅,键过期,流水线,lua语言,哨兵等。

    2008 年开始 : LOOGG发布出来

    redis使用的企业有

        阿里 、腾讯、百度、搜狐、优酷、美团、小米、唯品

    字符串

    数字(整数,浮点数)

    二进制文件(图片 视频 音频)

    512M

    set key value [ex sconds]

    [px millliseconds] [nx|xx]

    redis 快的原因

    1.纯内存访问100纳秒

    2.非阻塞的I/O epoll模型

    3.单线程避免了线程的切换和竞态产生的消耗 所以消耗的是锁

    Redis特性:

    1.速度快

    因为使用C语言写的实现的距离短,

    基于单线程,

    源代码.开发

    2.基于键值对的数据结构的服务器

    类似于java 里的 map , Python 里的 dict(字典) ,键值对 key value ,

    get key时显示value

    3.丰富的功能

    键过期的功能,实现缓存功能

    发布订阅 实现消息系统

    支持Lua功能(lua用于编写全新的命令):  可以创建Redis的命令

    支持事物(脚本)

    pipeline流水线

    1. 安全稳定(高性能方面安全稳定)

    源代码少,单线程,不宜懒其他系统

    5.客户端的语言多

    6.持久化(持久化就是把内存上的东西转到磁盘上

    通过RDB和AOF实现)

    7.主从复制

    8.高可用和分布式(2.8实现高可用用于解决单节点故障, 3.0实现的分布式 用于集群)

    setinel 自动转移

    Redis可以做什么?

    1.缓存服务器

    2.排行榜的系统

    3.计数器应用

    4.社交网络

    5.消息列队

    6.可以部署在windows上

                    Redis不能做什么?

    1.冷热数据 需要分开存储

    数据库(不是不能,而是不用于做数据库,Redis不适合,需要太多内存)

    2.尽量避免把冷数据部署在Redis上

    热数据:需要频繁操作的数据

    冷数据:不需要频繁操作的数据

    redis 不适合 大规模数据 :

    小规模数据

    注意  1、切记不要把 redis当 黑盒 (类似于超频)使用

      开发和运维业务不能串在一起

    2、要阅读源代码

    内部编码的好处

     可以改进内部编码

    多种内部变法实现不同场景发挥各自的优势

    单线程 :全部用来处理意见是,高效

    redis 解压包中 src的 绿色 客户执行 命令

    redis-cli   :redis 客户端的执行命令

    redis-check-rdb  : rdb持久化文件的检查或修复工具

    redis-sentinel  :启动 redis的 哨兵

    redis-server : 启动redis

    redis-check-aof :aof持久化文件的检查或修复工具

    redis-benchmark:redis的 基本测试工具

                        

    vm.overcommit_memory = 1

    0表示内核将检测是否有足够的可用内存供应进程使用

    1不管需要多少内存多允许申请

    2只允许分配物理内存和交换内存的大小

    prot : 端口

    logfile  : 日志文件

    loglevel erbose : 日志级别 :debugverbose oticewaring

    日志输出方式 logfile stdout

    redis内string模式命令(反馈1成功0不成功):

    1.ping 检测网络是否连通

    2.keys * 查看所有键

    3.shutdown 关闭 选save保存并关闭  nosave

    4.set 设置键

    5.dbsize 查看键的总数

    6.exists key 检查键是否存在反馈1存在反馈0不存在

    7.del 删除键 可以同时删除多个用空格隔开

    8.expire key seconds 键过期

    9.ttl 查看过期时间剩余多少(-1代表存在没设置过期时间,-2代表键不存在,正数代表剩余多少时间)

    大于0的整数 : 键剩余的过期时间

    -1 :键没设置过期时间

    -2 : 键已经过期 不存在

    10.type 查看键的数据类型

    11.rpush 创建列表

    12.object encoding 查看内部编码

    13.set key value [ex sconds] 为键设置一个秒级的过期时间

    [px milliseconds] [nx|xx] nx是添加 xx是替换或跟新

    14.mset 批量设置

    15.mget 批量查看

    16.incr 只不是整数时 返回错误

    值是整数时 返回自增之后的结构

    键不存在 按照值为0自增 结果为1

    17.decr key设置自减

    incrby key increment 设置数的自增

    decrby key incerment 设置数的自减

    incrbyfloat key increment 小数的自增

    18.append key value 追加值

    19.strlen key 字符串的长度

    20.setrange key offset value 设置指定位置的字符

    位置变量从0开始算第一位是0 第二位是1以此类推

    21.getset key value设置并返回原值

    22.getrange key start end 获取部分字符串

    Redis  简单的小命令   redis    key 代表 :具体的键名

    1、退出:先shutdown、后exit

    2、Keys*  :查看所有的键

    3、查看所有键的总数:dbsize

    4、监测键存不存在 :exists key

    存在返回 1

    不存在返回 0

    5、删除键  del +具体键名

    可以删除多个

    删除存在的键返回 1

    删除不存在的键返回 0

    6、键过期 :EXPIRE key seconds

    TTL key

    -1 :代表键存在且没设置过期时间

    -2:已经过期或者不存在的键

    7、键的数据结构类型  :

    rpush 列表  创建

    type key  :查看键的类型 是列表还是其他的

    object encoding  查看数据的内部编码

    数据类型的结构:

    String :raw、int、embsrt

    Hash : hashtabl、ziplist

    List :linkedlist、ziplist

    Set :hashtable、inset

    Zset :skiplist、ziplist

    单线程   速度快,想家教一样,效率高。避免了线程切换,和资源竞争的资源消耗

    坏处

    多线程   像学校一样,总会有人不会;多个进程堵塞一个交通口。效率低。

    redios 快的原因

    1、纯内存访问100纳秒

    2、非阻塞的I/O线程  epoll  模型

    3、单线程 避免了线程的切换和静态

    所产生的消耗

    其他数据结构类型都是建立在字符串之上

    字符串:

    数字(整数、和浮点数)

    二进制文件 (图片、音频、视频)

    最大不能超过512 MB

    7、set :设置键   set +名字 +内容 加*

    key :名字·

       value :值

    set key value [ ex sconds]

    [ px milliseconds]   [nx|xx]

    [ ex sconds]  :为键设置一个秒级的过期时间

    [ px milliseconds] : 帮键设置一个 毫秒的 过期时间

    [nx] :键必须不存在才可以设置成功,用于添加

    [xx] : 键存在才可以设置的,用于更新

    Setex key seconds value

    Setnx key value

    mset  :批量设置

    mget : 批量查看

    记数 incr  自增键

    值不是整数 返回错误

    值是整数 返回自增之后的结果

    键不存在 按照值为0自增 结果 1

    decr  key

    Incrby key increment

    decrby key increment

    incrbyfloat key increment

    8、追加值

    append key value

    字符串的长度

    Strlen key offset value

    设置指定位置的字符

    getset key value

    设置并返回原值

    获取部分字符串

    更改字符

    set redis pest

    setrange redis 0 b

    获取部分字符串0 开始

    getrange key 起始数字(0) 开始 结束数字

    get redis

    getrange redis 0 1

     有学习的小伙伴可以一起讨论有问题可以问我,微信 15321502296

  • 相关阅读:
    Spark 之 内存模型
    Python 之 windows上安装和pycharm 使用
    Kafka之 kafka消费->SparkStreaming|写入->Kafka|kafka消费->hbase
    SparkStreaming之 任务失败后,自动重启
    微信小程序常用赋值方法小结
    eclipse中xml文件Ctrl+左键不跳转解决办法
    SpringCloud简介以及相关组件
    spring怎么设置定时任务
    Http协议请求的不同类型
    Spring各个jar包作用
  • 原文地址:https://www.cnblogs.com/bingpo-blade/p/9234105.html
Copyright © 2020-2023  润新知