zoukankan      html  css  js  c++  java
  • nosql、redis、性能测试、命令相关、redis的数据类型string、list、hash、set、zset、

    nosql not only sql

    用户画像:

    热点数据:经常被使用的数据

    mysql

    安装

    • 可以使用yum 安装,要先配置epel源

       yum install -y redis
    • 可以编译安装

       wget http://download.redis.io/releases/redis-5.0.5.tar.gz
       tar xf redis-5.0.5.tar.gz
       cd redis-5.0.5/
       make
       make test
       yum install -y tcl

    redis 可执行文件

     redis-benchmark  #性能测试
     redis-check-aof  # 检查修复aof文件
     redis-check-rdb  # 检查修复rdb文件
     redis-cli        # redis的客户端
     redis-sentinel   # redis的集群
     redis-server     # redis的服务端
     redis-trib.rb     #集群管理

    启动redis

     ./src/redis-server 默认端口是6379,默认启动会占用终端

    性能测试

     ./src/redis-benchmark -q
     PING_INLINE: 73855.24 requests per second
     PING_BULK: 73800.73 requests per second
     SET: 74074.07 requests per second
     GET: 72833.21 requests per second
     INCR: 73637.70 requests per second
     LPUSH: 73855.24 requests per second
     RPUSH: 70175.44 requests per second
     LPOP: 72202.16 requests per second
     RPOP: 74183.98 requests per second
     SADD: 74962.52 requests per second
     HSET: 75642.96 requests per second
     SPOP: 73746.31 requests per second
     LPUSH (needed to benchmark LRANGE): 74850.30 requests per second
     LRANGE_100 (first 100 elements): 48379.30 requests per second
     LRANGE_300 (first 300 elements): 24172.11 requests per second
     LRANGE_500 (first 450 elements): 18670.65 requests per second
     LRANGE_600 (first 600 elements): 15384.62 requests per second
     MSET (10 keys): 78186.08 requests per second
     默认是100000,50个同时发起连接

    连接

     ./src/redis-cli
     -h ip地址
     -p 端口
     -s 套接字
     -a 密码  
     -n 指定redis的库
     redis的命令是不区分大小写

    redis的数据类型

    • string

    • hash

    • list

    • set

    • zset

    命令相关

    ping

    用来测试redis是否连通,返回值是pong

    info

    获取系统的信息

    echo

    打印内容,测试使用

    quit

    退出

    select

    切换redis的库,总共有16个,0-15

    del

    删除指定的一个或者多个key,不存在的key忽略

    exists

    判断key 是否存在,存在是1,不存在是0

    expire key seconds

    给指定的key设置存活时间,当key过期以后,就自动删除

    ttl

    查看key的存活时间,-2 key不存在 -1 永久生效

    keys pattern

    查找所有符合pattern 的key,支持通配符

    move key db

    移动当前的key到指定的db里面,成功返回1,失败返回0

    pexpire key 毫秒

    给一个key 设置过期时间,单位是毫秒

    pttl key

    查看key的存活时间,但是为毫秒

    randromkey

    随机获取一个key,但是不删除,如果数据库为空,则返回空

    rename

    重命名key,如果源key不存在,则报错,如果目标key存在,则覆盖

    renamenx

    重命名key,如果源key不存在,则报错,如果目标key存在,则不变

    type

    查看key所存储的数据类型,如果没有这个key,则返回none

    string

    set

    设置key value

    如果key存在,则覆盖,不存在,则新建

    ex second 设置key的存活时间,单位是秒

    px 毫秒 设置key的存活时间,单位是毫秒

    nx 如果键不存在,则新建,如果存在,则返回nil

    xx 只有键存在,才能操作

    get

    获取key对应的value,只能获取一个,如果key存在,则返回值,如果key不存在,则返回nil

    mset

    批量创建key vlaue对应关系,会覆盖已存在的key

    mget

    批量获取key,如果不存在,则返回nil

    getset

    给指定的key设置新value,并返回原来的value,如果key不存在,则返回nil

    strlen

    返回value的长度

    append

    如果key存在,则追加,如果key不存在,则新建

    incr

    将key中存在的数加1,只能对数字有效

    decr

    将key中存在的数值减1,只能对数字有效

    incrby

    将key中存在的数值指定增加多少,只对数字有效

    decrby

    将key中存在的数值减少指定的值,只能对数字有效

    getrange

    切片,同python类似,不能使用步长

    incrbyfloat(默认保留17位)

    将key中存在的数值增加指定的浮点数

    list

    lpush

    将一个或者多个value插入到列表的头部

    lpop

    移除并返回列表key的头一个元素

    lrange

    查看列表指定的元素,全部显示是0,-1

    rpush

    将一个或者多个value插入到列表的尾部(最后边)

    rpop

    删除尾部的值

    rpushx

    将value插入到key的尾部,key必须存在才可以

    lpushx

    将value插入到key的头部,key必须存在才可以

    lindex

    从表头开始,获取下标为index的value

    linsert

    将value插入到key指定的元素前或者后

    before 前

    after 后

    如果value不存在,则不操作

    llen

    获取列表长度

    lrem

    删除列表中的value

    • count > 0 从表头往表尾的方向查找,删除指定的个数

    • count = 0 全部删除

    • count < 0 从表尾的位置往表头的方向查找,删除指定的个数

    lset

    替换指定的索引位置的value,如果索引超出范围,则报错

    ltrim

    列表的切片

    hash

    {'db':{"redis":'redis.conf',"mysql':'my.cnf',"nginx":"nginx.conf"}}

    hset

    给hash增加key value值

    hlen

    获取hash的长度

    hget

    获取某个hash里面key的value

    hgetall

    获取所有的键值对

    hmset

    批量增加键值对

    hmget

    批量获取键值对

    hsetnx

    给指定的hash增加键值对,如果原来的field存在,则操作无效,如果不存在,则新增

    hkeys

    获取hash表中所有的field

    hvals

    获取hash表中所有的value

    hdel

    删除hash表中的一个或者多个field-value

    hexists

    判断hash表中的field是否存在,如果存在,则为1,不存在则为0

    hincrby

    给hash表中的field增加指定的数值,只限于数字

    hincrbyfloat

    给hash表中的field增加指定的浮点,只限于数字

    set

    sadd

    给集合添加值,如果值存在,则什么都不操作,如果值不存在,则添加

    SMEMBERS

    获取集合所有的成员

    scard

    获取集合的个数

    sdiff

    获取两个集合的差集,前面存在,但是后面不存在的

    sinter

    获取两个集合的交集

    sunion

    获取两个集合的并集

    SISMEMBER

    判断元素是否在集合中,如果存在,则为1,如果不存在则为0

    smove

    将指定的元素从一个集合移动到另外一个集合中,如果源集合存在,则移动,如果不存在,则忽略,如果目标集合存在,直接移动,如果目标集合不存在,则新建集合并移动

    spop

    随机删除指定个数的元素,并把删除的元素打印出来

    SRANDMEMBER

    随机获取指定个数的元素

    • 默认随机获取一个

    • 如果count > 0,

      • 如果count大于集合的总数的话,则全部取出

      • 如果count小于集合总数的话,则随机取出count个

    • 如果count<0,则随机count的绝对值次取出值

    srem

    删除指定的一个或者多个元素

     

  • 相关阅读:
    js格式化金额(保留指定小数位,不进行四舍五入每隔三位添加‘,’)
    原生js ajax下载excel,pdf,兼容ie8
    css文本超出显示点点....
    Vue 响应式删除 Vue.delete( target, propertyName/index )
    java报错:com.fasterxml.jackson.databind.JsonMappingException: Can not deserialize out of START_ARRAY token
    Vue 神奇的BUG
    vue 诡异问题
    str.indexOf('') == 0
    vue 绑定style,class
    uniapp 时间轴
  • 原文地址:https://www.cnblogs.com/zhang-da/p/12417705.html
Copyright © 2011-2022 走看看